mqantGolang/python語(yǔ)言開(kāi)發(fā)的分布式游戲服務(wù)器框架
mqant
mqant 是一款基于 Golang 語(yǔ)言的簡(jiǎn)潔,高效,高性能的分布式游戲服務(wù)器框架,研發(fā)的初衷是要實(shí)現(xiàn)一款能支持高并發(fā),高性能,高實(shí)時(shí)性的游戲服務(wù)器框架,也希望 mqant 未來(lái)能夠做即時(shí)通訊和物聯(lián)網(wǎng)方面的應(yīng)用。
pymqant
pymqant是已經(jīng)mqant相同的設(shè)計(jì)原理用python實(shí)現(xiàn)的,python版本設(shè)計(jì)的初衷并不是替代golang語(yǔ)言版本的mqant,而是希望mqant能充分利用python語(yǔ)言的優(yōu)勢(shì)(豐富的開(kāi)源庫(kù)),因此python是golang語(yǔ)言版本的mqant輔助版本
理論上pymqant也實(shí)現(xiàn)了mqant完全相同的功能,只是缺少一個(gè)網(wǎng)關(guān)模塊,可以用pymqant實(shí)現(xiàn)游戲的web api模塊,mqant實(shí)現(xiàn)對(duì)性能要求較高的游戲核心邏輯模塊,pymqant模塊與mqant模塊之間可以無(wú)縫相互調(diào)用。
特性
分模塊機(jī)制
基于 golang 協(xié)程,開(kāi)發(fā)過(guò)程全程做到無(wú) callback 回調(diào),代碼可讀性更高
RPC 支持本地和遠(yuǎn)程自動(dòng)切換
遠(yuǎn)程 RPC 默認(rèn)使用 rabbitmq,未來(lái)可以添加更多種類(lèi)的通信協(xié)議
網(wǎng)關(guān)采用 MQTT 協(xié)議,無(wú)需再開(kāi)發(fā)客戶(hù)端底層庫(kù),直接套用已有的 MQTT 客戶(hù)端代碼庫(kù),可以支持IOS,Android,websocket,PC 等多平臺(tái)通信
現(xiàn)如今只有多進(jìn)程的架構(gòu)才能達(dá)到支撐較多在線用戶(hù),降低服務(wù)器壓力,降低單點(diǎn)故障所帶來(lái)的影響等要求,因此一個(gè)真正高可擴(kuò)展的游戲運(yùn)行架構(gòu)必須是多進(jìn)程的。
然而在游戲的開(kāi)發(fā)和運(yùn)營(yíng)也是按步驟階段性進(jìn)行的,尤其是現(xiàn)如今服務(wù)器硬件設(shè)備配置也越來(lái)越高的前提下,在游戲剛開(kāi)始運(yùn)營(yíng)時(shí)單臺(tái)服務(wù)器就足夠支撐了,況且多進(jìn)程部署所帶來(lái)的運(yùn)維成本也相對(duì)較高。
mqant 的設(shè)計(jì)思想是在能用單臺(tái)服務(wù)器時(shí)能讓充分挖掘服務(wù)器的性能,而在需要多進(jìn)程時(shí)再通過(guò)簡(jiǎn)單的配置就可以實(shí)現(xiàn)分布式部署。
mqant 游戲服務(wù)器的運(yùn)行架構(gòu)
mqant 服務(wù)器是按模塊來(lái)劃分功能模塊的,例如 用戶(hù)管理,在線聊天,戰(zhàn)斗平臺(tái)等等都應(yīng)該劃分為獨(dú)立的模塊
模塊之間通過(guò) RPC 通訊,mqant 底層會(huì)根據(jù)實(shí)際情況選擇 rpc 數(shù)據(jù)交互的通信渠道,在調(diào)用模塊在同一個(gè)進(jìn)程的情況下直接使用 golang chan 通訊,因此同進(jìn)程內(nèi)模塊通信性能不受影響。
