node.js - 使用 redis 水平扩展 socket.io

标签 node.js redis socket.io scaling socket.io-redis

我目前正在创建一个水平可扩展的 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/

相关文章:

javascript - 用axios发送Blob到服务器,接收到一个空对象

php - 如果端口更改,redis-server 不工作

node.js - 使用 Socket.IO 设置和获取 session 数据时,传递的函数有何用途?

node.js - WebSocket 握手期间出错 : 'Connection' header is missing

node.js - Winston-记录堆栈错误

JavaScript (Node.js) : app. 设置 ('port' ,端口); ^ TypeError : app. set 不是一个函数

angularjs - 我想从 ng repeat ui-route 中删除 td

javascript - 如何在 Express Jest 测试中清理/重置 redis-mock?

redis - redis-cli --intrinsic-latency 中的纳秒不正确

node.js - mongoDB和nodeJs无法正确处理并发请求