官术网_书友最值得收藏!

1.3 能夠承載多少玩家

服務(wù)端程序要承載很多玩家,性能是必須要考慮的問(wèn)題。那么,1.2.4節(jié)的程序能夠承載多少玩家同時(shí)在線(xiàn)呢?

1.3.1 單線(xiàn)事件模型

圖1-11展示了1.2節(jié)程序的執(zhí)行過(guò)程,無(wú)論何時(shí)服務(wù)端都是按順序執(zhí)行代碼的。圖中在時(shí)刻①,客戶(hù)端A發(fā)送消息,服務(wù)端接收并處理。在①和②之間,服務(wù)端沒(méi)有消息接收,進(jìn)入等待狀態(tài)。在時(shí)刻③客戶(hù)端A和B同時(shí)發(fā)送消息,服務(wù)端收到后,先后執(zhí)行。

有個(gè)專(zhuān)業(yè)術(shù)語(yǔ)叫“Reactor模型”,指的就是圖1-11所示的程序執(zhí)行方式,這里做個(gè)狹義的翻譯——單線(xiàn)事件模型。“單線(xiàn)”指的是單線(xiàn)程,“事件”指的是事件觸發(fā),即當(dāng)新連接、斷開(kāi)連接、收到數(shù)據(jù)這些事件到來(lái)時(shí)會(huì)觸發(fā)某段代碼。

圖1-11 單線(xiàn)模型的時(shí)序圖

1.3.2 承載量估算

要計(jì)算服務(wù)端系統(tǒng)的承載量,則要從CPU負(fù)載、內(nèi)存占用、網(wǎng)絡(luò)流量等多個(gè)角度考量,很難做到準(zhǔn)確的估算,因?yàn)榉?wù)端運(yùn)行在不同配置的物理機(jī)上,不同游戲類(lèi)型的邏輯復(fù)雜度也不相同。但可以做個(gè)假設(shè),假設(shè)在MMORPG中,玩家平均每3秒操作一次(走路、購(gòu)物),服務(wù)端平均處理一條消息花費(fèi)2毫秒。

從CPU的角度來(lái)看,同一時(shí)刻服務(wù)端只能處理一個(gè)客戶(hù)端請(qǐng)求,按上述假設(shè),服務(wù)端每秒可以處理500條消息,即最高可以承載1500人。

按經(jīng)驗(yàn)推算,最高1000多人在線(xiàn)的游戲,日活躍用戶(hù)(即每天登錄的人數(shù))大概是三五千。這種承載量對(duì)于多數(shù)獨(dú)立游戲、小型手游是足夠的。

知識(shí)拓展:盡管理論上CPU可以承載1000多人,但在實(shí)際情況中會(huì)低很多,而且這里只計(jì)算了CPU的負(fù)載,事實(shí)上,內(nèi)存、網(wǎng)絡(luò)流量也會(huì)對(duì)其有影響。“走路”程序受網(wǎng)絡(luò)影響很大,因?yàn)橥婕覍?duì)服務(wù)端的響應(yīng)速度有要求,總不能走一步等3秒鐘后才有回應(yīng)吧。如果不做進(jìn)一步優(yōu)化,廣播的消息量與在線(xiàn)玩家則呈指數(shù)增長(zhǎng)關(guān)系,通常這類(lèi)單線(xiàn)程程序只能支持幾十名玩家。

主站蜘蛛池模板: 资阳市| 叙永县| 武胜县| 曲水县| 芜湖县| 乡城县| 叙永县| 华容县| 九龙县| 神农架林区| 柏乡县| 溧阳市| 泰和县| 沙洋县| 新蔡县| 钦州市| 电白县| 曲阜市| 邓州市| 吴江市| 彝良县| 望城县| 佳木斯市| 清徐县| 北碚区| 克东县| 常州市| 会宁县| 大连市| 博罗县| 阿拉尔市| 雷山县| 女性| 康马县| 嘉定区| 旺苍县| 新巴尔虎左旗| 耿马| 凤城市| 龙泉市| 无极县|