如何解决集群聊天服务器跨服务器通信
我们在集群聊天服务器中涉及的通信是:
- 一对一的聊天
- 群聊
- 我们看上图,client1登录在chatserver1上,client2登录在chatserver2上,client3登录在chatserver3上;
- 按我们现有的单台服务器业务来说,当client1给client2发送聊天消息的话,我们在每一台服务器上都有_userConMap,在chatserver1上的_userConMap肯定是找不到client2的connection;
- 所以,在集群环境中,我们服务器的代码在业务逻辑上应该做修改,客户端完全不用改动,因为客户端不用去了解服务器有几台。
- 我们要继续判断,如果当前client1所要聊的client2并不在这台chatserver1的机器上,就要去数据库找client2用户的一个在线状态,如果是offline,说明client2确实不在线,直接按照原来的逻辑发送离线消息就可以了;
- 如果是在数据库查到client2的