缩放NodeJS聊天室 – 在Redis中存储连接状态

聊天室应用程序运行在多个服务器上,由两个服务组成:
连接pipe理器
在join聊天室之前,客户端首先向连接pipe理器请求聊天服务的URL
2.聊天服务
一个典型的基于socket.io的聊天实现。

我需要将每个客户端的连接状态存储在Redis中,例如用户连接到哪个房间,一个房间里有多less用户等,因此连接pipe理器可以使用这些数据进行负载均衡。

我可以使用套接字连接/断开事件来维护Redis中的当前连接状态,但是在NodeJS服务器发生故障的情况下,如何确保Node和Redis数据同步? 什么是最好的方法来做到这一点?

我可以使用套接字连接/断开事件来维护Redis中的当前连接状态,但是在NodeJS服务器发生故障的情况下,如何确保Node和Redis数据同步?

例如,您可以在redis中创build一个集合,其中包含对由特定服务器节点pipe理的密钥的引用。 如果节点closures或重新启动,则可以使这些密钥无效。