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