【发布时间】:2016-03-13 03:45:45
【问题描述】:
我目前正在创建一个水平可扩展的 socket.io 服务器,如下所示:
LoadBalancer (nginx)
Proxy1 Proxy2 Proxy3 Proxy{N}
BackEnd1 BackEnd2 BackEnd3 BackEnd4 BackEnd{N}
代理使用粘性会话 + 集群,每个都有一个在核心上运行的 socket.io 服务器并由 nginx 代理进行负载平衡。
现在我的问题是,这些后端节点使用 redis pubsub 与通过传输(websockets)处理所有通信的代理进行通信。
当代理向后端服务器发送请求时,它会知道请求它的用户以及用户所在的代理。我担心的是,当代理服务器出于某种原因脱机时,我的后端节点上的任何待处理请求在它重新联机时都将无法到达用户,因为在服务器脱机时发送的消息。我可以实施什么来规避这个问题,并且在任何代理服务器离线时基本上让消息排队,然后在它重新打开时传递?
【问题讨论】:
-
您找到了可接受的解决方案吗?
标签: node.js redis socket.io publish-subscribe