一個(gè)游戲服務(wù),開了多個(gè) businessworker 后,不能保證同一個(gè)房間的人都在一個(gè) businessworker 的進(jìn)程內(nèi)存中。
以及分布式部署后,沒法保證同一個(gè)房間的人進(jìn)入同一個(gè)服務(wù)器的同一個(gè) businessworker。
同一個(gè)房間的游戲玩家如果沒有進(jìn)入同一個(gè) BusinuessWorker,操作內(nèi)存數(shù)據(jù)的時(shí)候,會(huì)讀取不到其他玩家的相關(guān)游戲狀態(tài)信心。
這里大家說怎么處理的呢?
有一種東東叫 gatewayWorker 分布式 通訊進(jìn)程模型,是群主打造了2年半的。
http://wtbis.cn/doc/gateway-worker/
第三方或主動(dòng)通訊推送 的東東叫 gatewayClientSDk ,也是群主打籃球時(shí)候順便寫的
https://github.com/walkor/GatewayClient
他這個(gè)可以可以控制的,不一定用gatewayWorker去處理,用gatewayworker 一些變量就需要中間存儲(chǔ)了。他可以在真正開始進(jìn)入房間前所有人在一個(gè)房間等待,這個(gè)沒有長鏈接的房間可以用http,或者其他方式維護(hù),當(dāng)開始進(jìn)入房間的時(shí)候最快的那個(gè)把房間組id和某個(gè)BusinuessWorker綁定,后續(xù)同持有相同房間組id的用戶進(jìn)入真正的房間時(shí)都可以拿到相同的BusinuessWorker ip,可以在同一個(gè)服務(wù)器上的房間進(jìn)行業(yè)務(wù)處理。這種按照房間組處理的業(yè)務(wù)還是盡量都在一個(gè)服務(wù)器上會(huì)好一點(diǎn)吧。用gateway的話,多少回引入一些不必要的存儲(chǔ)消耗。所有人都在同一個(gè)房間完的話,用gateway我覺得挺好,小房間不太推薦