我目前正在创建一个水平可扩展的 socket.io 服务器,如下所示:
LoadBalancer (nginx)
Proxy1 Proxy2 Proxy3 Proxy{N}
BackEnd1 BackEnd2 BackEnd3 BackEnd4 BackEnd{N}
我的问题是,使用 socket-io redis 模块,如果它们都连接到同一个 redis 服务器,我可以从其中一个后端服务器向连接到其中一个代理服务器的特定套接字发送消息吗?如果是这样,我该怎么做?
最佳答案
当你想扩展 socket.io 服务器,并且你已经使用 nginx 作为负载均衡器时,不要忘记设置 sticky load balancing
,其他的单个连接将根据负载连接到多个服务器平衡器将连接传递给 socket.io 服务器。所以最好使用粘性负载平衡
借助 Redis 套接字 io 适配器,您可以在 Redis Pub/Sub 实现
的帮助下与一个或多个 socket.io 服务器发送和接收消息。
如果你告诉我 Proxy 和 Backend 使用了哪种技术,我会让你知道更多这方面的信息。
关于node.js - 使用 redis 水平扩展 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34217166/