關(guān)于要游戲類項目結(jié)構(gòu) 我是這樣想的
通過GatewayWorker做網(wǎng)關(guān)
通過workerman做游戲服和其他公用服(如登錄或其他數(shù)據(jù)服等)
通過在網(wǎng)關(guān)中注冊消息事件,根據(jù)消息事件來分發(fā)消息到各個worker服
有幾個問題請教
萬分感謝,想做游戲服,在考慮整個項目的結(jié)構(gòu)問題, 望給予一些建議指導(dǎo)
多謝
GatewayWorker提供的接口大部分是廣播類接口,例如sendToUid()是向所有g(shù)ateway進程發(fā)起請求,客戶端一個請求可能會裂變成gateway進程的多個請求調(diào)用,每秒1000個請求到服務(wù)端可能會裂變成上萬個gateway進程調(diào)用,這種每秒幾千次大量內(nèi)部接口調(diào)用特別頻繁時會消耗很大的資源。所以GatewayWorker這種架構(gòu)適合做維持大量連接,但是內(nèi)部接口調(diào)用不是特別頻繁的應(yīng)用,例如聊天、物聯(lián)網(wǎng)、棋牌類游戲。
即時戰(zhàn)斗類的通訊特別頻繁的適合直接workerman來做。
關(guān)于數(shù)據(jù)共享,主要看進程對共享數(shù)據(jù)操作有多頻繁,比如每秒上萬次讀寫,多進程的性能反而大大降低,這種情況單進程性能更好,例如這個帖子 http://m.wtbis.cn/q/523 。如果通訊不頻發(fā)建議redis。
不清楚你們做的是什么游戲。GatewayWorker + workerman的架構(gòu)感覺有些復(fù)雜。