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