一般情況下,處理擁塞的解決方案:
1. 基於地理位置來實現。遊戲設計包含不同的遊戲區域,每個虛擬區域執行一台伺服器,每個區域擁有自我限制功能,當人數過多時,服務擁塞,遊戲變慢,趣味性下降,使用者就轉向更有趣的區域,響應時間就會得到改進。(對於棋牌類遊戲,每個房間或區域有人數限制,滿的房間可以限制進入)
這種開發方法的問題:遊戲設計時,需要決定哪些區域放在一台伺服器上,而新增新的區域時比較容易,若改動原來的區域,可能需要改動**,這些都是開發的工作量。
2. 分割槽sharding。乙個分割槽是乙個區域的副本,執行在自己的伺服器上,獨立於其他分割槽,不同的玩家進入同乙個區域的不同副本(分割槽)。這樣的缺點時,不允許不同副本的玩家彼此進行互動。
3. darkstar架構就是克服以上缺點,支援隨時伸縮,同時又不要求遊戲邏輯受到伸縮影響。支援動態響應負載,而不是放在遊戲設計中完成。
darkstar是由一組服務組成。每個服務定義為乙個小的程式設計介面。這些介面很像經典作業系統的服務,支援對服務端的訪問持久儲存、排程並執行任務、與遊戲的客戶端進行通訊。
這些服務的程式不會受低層實現變更的影響,因為每個服務由乙個介面來描述。當介面不變時,乙個服務的變更,不會影響其他服務的實現。這是乙個"分治"的過程。
另外,將基礎設施設計為一組服務,可以將這些服務在不同場景下進行不同的組合,更加靈活,復用性強。一組服務可以組成乙個darkstar棧,darkstar棧中具體包含哪些服務可以由乙個配置檔案來設定。
從巨集觀結構上來看
(分層、模組化、通訊機制)
每個darkstar棧執行在乙個伺服器上,darkstar棧就是服務的副本和遊戲邏輯的副本。客戶端連線到其中乙個伺服器,與該世界的抽象表示進行互動。
閱讀筆記二
顧名思義,需求獲取就是進行需求收集的乙個活動,它從人員 資料和環境中得到系統開發所需要的相關資訊。在需求獲取中有很多困難時普遍存在的,了解這些困難度更好地了解需求獲取活動的複雜性有著重要意義。需求獲取中的常見困難 1 使用者和開發人員來自不同的環境,具有不同的背景和立場,有不同的表達方式和詞匯集,因...
閱讀筆記二
這週我學習的是軟體需求模式的第二章 需求規格的內容。目前為止還沒有唯一正確的方法阻止需求規格,但是反覆出現在大部分系統中的主題,是我們應該注意和掌握的內容。從大的方面來說,需求規格可以分為四個部分,分別是介紹部分,上下文部分,功能域部分,主要非功能要求部分四個方面,其中功能域部分定義了系統實際上要做...
C Primer閱讀筆記(二)
io是乙個程式的常用操作。程式要與使用者互動,必須提供io功能。io庫提供了讀寫控制台資料流,讀寫檔案流,讀寫記憶體流的型別。io庫 頭檔案型別 iostream istraeam,wistream從流讀取資料 ostream,wostream向流寫入資料 iostream,wiostream讀寫流...