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