比如我使用pm2 部署2个 ws进程, 这样如果有1000个人连接的话,会有一部分人连接到进程A,剩下的人连接到进程B,实际上进入了2个房间,有没有方法能够 解决这个问题,比如一个请求过来,指定路由到进程A ,pm2应该是有负载分发机制,不知道是否支持指定进程处理
回复 (8)
J
引用 im-here@312xiaoguai 好像是叫个ip hash吧,你搜搜 Nginx的ip hash功能 我以前也有你类似的需求,不过后来通过逻辑来解决了
@imhered 你这样 同一个人 登陆 换个 IP 就换到 不同进程处理了,这种业务逻辑还是需要自己写 master 转发 socket 逻辑,不管是根据 用户 id 还是 ip 还是 其他的属性 From Noder
B
如果使用socket.io的话,一般cluster都要sticky模式 参考下这个库吧,https://github.com/uqee/sticky-cluster
3
十分钟惨案
D
4小时惨案
3
一天惨案
I
估计搞不定 尝试分多个端口,然后用Nginx粘性回话能不能搞定了
3
引用 im-here估计搞不定 尝试分多个端口,然后用Nginx粘性回话能不能搞定了
@imhered 谢谢,就是比如A监听4000端口,B监听4001端口,用Nginx均衡器去分发到指定的进程?
I
引用 312xiaoguai@imhered 谢谢,就是比如A监听4000端口,B监听4001端口,用Nginx均衡器去分发到指定的进程?
@312xiaoguai 好像是叫个ip_hash吧,你搜搜 Nginx的ip_hash功能 我以前也有你类似的需求,不过后来通过逻辑来解决了
参与回复
登录后即可参与回复。登录