关于GatewayWorker中BusinessWorker关闭一个服务不影响服务质量

cxcsz

 

默认规则是Gateway随机选择一个BusinessWorker进程,然后把当前client_id与这个BusinessWorker进程绑定,以后这个client_id的所有数据(onConnect/onMessage/onClose事件)都交给这个绑定的BusinessWorker进程处理。

 

只需要停止BusinessWorker的服务,运行php start.php stop,然后下线即可。Gateway服务器会自动感知有BusinessWorker服务器下线,不会再将请求转发给下线的机器,整个下线过程中不影响服务质量。

截取的是gatewayWorker文档中的两处,是不是可以这样理解:
当BusinessWorker下线之后Regisiter得到消息告知所有的gateway有一个BusinessWorker下线,连接到的使用其他的BusinessWorker。
如果是不是这样,如何是实现不影响服务质量。
如果是这样,下线的部分BusinessWorker工作已什么规则交给其他BusinessWorker呢?

2168 2 0
2个回答

walkor 打赏

businessWorker下线后register会通知所有gateway进程,将它踢出。新的请求进来后就不会再将请求分发给下线的businessWorker

  • 暂无评论
cxcsz

谢谢,能问下,新的请求默认以什么规则分发给其他在线的BusinessWorker

  • phpcreeper 2019-07-01

    规则和先前设置的规则是一样的:
    对于新的连接请求,默认依然是随机选择一个businessWorker进程来处理,但是对于同一个连接上的后续数据请求,则始终都由之前绑定好的businessWorker进程来处理。

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