阅读笔记二
一般情況下,處理擁塞的解決方案:
1. 基于地理位置來實現。游戲設計包含不同的游戲區域,每個虛擬區域運行一臺服務器,每個區域擁有自我限制功能,當人數過多時,服務擁塞,游戲變慢,趣味性下降,用戶就轉向更有趣的區域,響應時間就會得到改進。(對于棋牌類游戲,每個房間或區域有人數限制,滿的房間可以限制進入)
這種開發方法的問題:游戲設計時,需要決定哪些區域放在一臺服務器上,而添加新的區域時比較容易,若改動原來的區域,可能需要改動代碼,這些都是開發的工作量。
2. 分區sharding。一個分區是一個區域的副本,運行在自己的服務器上,獨立于其他分區,不同的玩家進入同一個區域的不同副本(分區)。這樣的缺點時,不允許不同副本的玩家彼此進行交互。
3.?Darkstar架構就是克服以上缺點,支持隨時伸縮,同時又不要求游戲邏輯受到伸縮影響。支持動態響應負載,而不是放在游戲設計中完成。
Darkstar的架構
DarkStar是由一組服務組成。每個服務定義為一個小的編程接口。這些接口很像經典操作系統的服務,支持對服務端的訪問持久存儲、調度并執行任務、與游戲的客戶端進行通信。
這些服務的程序不會受低層實現變更的影響,因為每個服務由一個接口來描述。當接口不變時,一個服務的變更,不會影響其他服務的實現。這是一個"分治"的過程。
另外,將基礎設施設計為一組服務,可以將這些服務在不同場景下進行不同的組合,更加靈活,復用性強。一組服務可以組成一個Darkstar棧,Darkstar棧中具體包含哪些服務可以由一個配置文件來設置。
從宏觀結構上來看
(分層、模塊化、通信機制)
每個Darkstar棧運行在一個服務器上,Darkstar棧就是服務的副本和游戲邏輯的副本。客戶端連接到其中一個服務器,與該世界的抽象表示進行交互。
每個副本可以與客戶端獨立的交互,不需要處理相同事件。復制主要是用于支持伸縮性。游戲邏輯也不知道其他服務器上的副本。而不同服務器上的副本協作是由Darkstar項目的基礎設施完成的。
游戲客戶端與服務端的通信機制包含兩種,一種是直接通信,另外一種是"發布-訂閱"模式。
Darkstar棧由一組元服務來協調,這是一組網絡訪問服務,對游戲程序員是不可見的。這些服務支持在線的副本相互協作,共同運營整個游戲。而且副本間相互獨立,某副本失效,會發起失效恢復操作。
此外,這些Darkstar元服務會跟蹤各副本
?
轉載于:https://www.cnblogs.com/huangliping/p/6391584.html
總結
- 上一篇: win8安装msi出现提示2503 2
- 下一篇: MOV指令在32位汇编程序和64位汇编程