游戏开发中,分布式部署,开启多个业务进程,怎么确保一个房间的玩家在同一个服务器的同个业务进程呢?

= - =

问题描述

一个游戏服务,开了多个 businessworker 后,不能保证同一个房间的人都在一个 businessworker 的进程内存中。

以及分布式部署后,没法保证同一个房间的人进入同一个服务器的同一个 businessworker。

同一个房间的游戏玩家如果没有进入同一个 BusinuessWorker,操作内存数据的时候,会读取不到其他玩家的相关游戏状态信心。

这里大家说怎么处理的呢?

977 1 1
1个回答

admin

有一种东东叫 gatewayWorker 分布式 通讯进程模型,是群主打造了2年半的。
https://www.workerman.net/doc/gateway-worker/

第三方或主动通讯推送 的东东叫 gatewayClientSDk ,也是群主打篮球时候顺便写的
https://github.com/walkor/GatewayClient

  • 咸鱼.php 2023-02-13

    小黑子,开庭记得带上群主!!!

  • PHP甩JAVA一条街 2023-02-13

    鱼你太美

  • TimeUser 2023-02-17

    6

  • 缝合 2023-02-17

    他这个可以可以控制的,不一定用gatewayWorker去处理,用gatewayworker 一些变量就需要中间存储了。他可以在真正开始进入房间前所有人在一个房间等待,这个没有长链接的房间可以用http,或者其他方式维护,当开始进入房间的时候最快的那个把房间组id和某个BusinuessWorker绑定,后续同持有相同房间组id的用户进入真正的房间时都可以拿到相同的BusinuessWorker ip,可以在同一个服务器上的房间进行业务处理。这种按照房间组处理的业务还是尽量都在一个服务器上会好一点吧。用gateway的话,多少回引入一些不必要的存储消耗。所有人都在同一个房间完的话,用gateway我觉得挺好,小房间不太推荐

年代过于久远,无法发表回答
🔝