239-如何解决集群聊天服务器跨服务器通信

本文介绍了在集群聊天服务器环境下,如何实现跨服务器通信。通过引入基于发布-订阅模式的Redis作为中间件,避免服务器之间直接建立TCP连接,降低耦合度,提高系统响应能力。每个服务器订阅消息队列,当用户在其他服务器登录时,通过消息队列传递消息,实现聊天功能。
摘要由CSDN通过智能技术生成

如何解决集群聊天服务器跨服务器通信

我们在集群聊天服务器中涉及的通信是:

  • 一对一的聊天
  • 群聊

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liufeng2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值