使用gatewayWorker 的一些疑惑

菜虚困

容器跑1 起一个resgister 服务
容器2 起一个gateway 服务gw1 注册到resgister
容器3 起一个gateway 服务gw2 注册到resgister
容器4 起一个business 服务bus1 注册到resgister
容器5 起一个business 服务bus2 注册到resgister

客户端1连接容器2的gw1服务然后发数据
客户端2连接容器3的gw2服务然后发数据

容器4的bus1和容器5的bus2都能收到信息
如果把bus2 服务关闭了,所有连接的信息都发到了bus1处理,再把bus2启动起来,原先连接的信息不再会转发到bus2进程这边来处理了,没有新连接的话,这个变成了空闲的了

852 2 0
2个回答

842461193

https://www.workerman.net/doc/gateway-worker/router.html
设置Gateway到BusinessWorker路由规则。默认规则是Gateway随机选择一个BusinessWorker进程,然后把当前client_id与这个BusinessWorker进程绑定,以后这个client_id的所有数据(onConnect/onMessage/onClose事件)都交给这个绑定的BusinessWorker进程处理。

walkor 打赏

GatewayWorker默认路由规则是随机找一个businessWorker然后绑定,也就是说一个客户端的所有请求都由固定的businesworker处理。这样好处是能够保证处理一个客户端的所有请求都是顺序处理。

当然你也可以自定义路由规则随机将请求分配到不同的businessworker处理,坏处就是无法保证一个客户端的请求顺序处理,比如客户端发起一个登录请求和一个发送消息请求,有可能发消息请求先被处理,造成逻辑错误。

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