聊天室应用程序运行在多台服务器上,包含两个服务:
1. 连接管理器
在加入聊天室之前,客户端首先向连接管理器请求聊天服务 url
2. 聊天服务
一个典型的基于 socket.io 的聊天实现。
我需要将每个客户端的连接状态存储在 Redis 中,例如用户连接到哪个房间,一个房间有多少用户等。因此连接管理器可以使用这些数据进行负载平衡。
我可以使用socket连接/断开事件来维护Redis当前的连接状态,但是在NodeJS服务器出现故障的情况下,如何确保Node和Redis的数据是同步的呢?最好的方法是什么?