Web 開發程序員談網游服務器開發

發表于:2014-01-22來源:IT博客大學習作者:ideawu點擊數: 標簽:web測試
今天參加了一個和某網游開發團隊的交流, 感受到了網游開發和 Web 開發之間的巨大差異, 所以我寫了本篇博文. 傳統的網游開發者可能由于更大的精力放在游戲邏輯上面, 并且因為游戲客戶端是一個高度內聚邏輯復雜的終端程序, 所以網游開發者在開發服務器端

  今天參加了一個和某網游開發團隊的交流, 感受到了網游開發Web 開發之間的巨大差異, 所以我寫了本篇博文.

  傳統的網游開發者可能由于更大的精力放在游戲邏輯上面, 并且因為游戲客戶端是一個高度內聚邏輯復雜的終端程序, 所以網游開發者在開發服務器端的時候, 也容易把客戶端的經驗放在服務器端, 很少考慮動態可擴展性和服務容災性.

  Web 開發的一些經驗對網游服務器開發是非常有用的:

  1. 服務(子系統)無狀態化,

  2. 所以服務可以采用 Web 模式來開發, 也即 Web Server + 腳本語言 + 存儲

  服務(子系統)無狀態化是整個系統動態可擴展性和服務容災性的保證. 例如在 Web 系統中, 一個全靜態內容的網站是無狀態的, 只要部署了多個服務器, 那么用戶訪問任何一臺服務器都 OK. 這個例子說明了服務無狀態化是系統可擴展性和容災性的保證, 同時也隱含了一個要求: 數據是同步的.

  網游程序員會立即提出疑問, 你舉的例子是靜態網站, 但網游服務器的子系統可不是那樣的, 能實現無狀態化嗎? 比如, 用戶連接到了某臺網游服務器, 這臺服務器上面會保存有這個用戶的很多信息數據, 如果用戶斷開連接再連到另一臺服務器, 那他的數據不是全丟了嗎?

  其實, 如果把服務分成邏輯(指令)+存儲/狀態(數據), 那就可以把有狀態的服務改造成無狀態的服務. 因為一般的網游服務器把邏輯和存儲綁在一起, 所以做不到無狀態化, 所以, 也就無法動態地增加了減少服務器.

  一旦把邏輯和存儲分開(如 PHP + MySQL), 就可以使用 Web 技術來開發網絡游戲服務器. 邏輯本身肯定是無狀態的, 所以可以任意添加和減少服務器和實例. 而存儲本身經過開發, 也可以做到無狀態, 如 MySQL 集群和其它的存儲群集. 把一個有狀態的服務改成無狀態的服務, 可以通過簡單地把邏輯和存儲分離即可.

原文轉自:http://blogread.cn/it/article/6765

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97