IM通讯服务

架构设计

MyAnswer博客

IM-server服务端:

1.用于接收Client连接,消息推送等功能,支持集群部署;
2.检测客户端存活状态,心跳时间为300/500秒,心跳过快耗电过多,心跳过慢有可能被电信运营商切断连接;
3.设备/用户登录退出操作,更新Redis中的状态;
4.消息进行双向确认/重传/去重 发送消息后,客户端必须回复ACK确认包,才认为已成功,否则进行重传,客服端对服务端推送的消息进行去重,避免收到重复消息;

Route消息路由服务器:

1.检测Im-server的存活状态;
2.支持权限认证;
3.根据服务器的状态,按照一定的算法,计算出该客服端连接那台IM-server,返回给客服端,客服端再去连接对应的服务端,保存客服端与IM-server的路由关系;
4.如果IM-server宕机,会自动从Redis中剔除;
5.IM-server上线连接到Route,自动加入Redsi中;
6.可以接受来自PHP代码,C++程序,Java程序的消息请求,转发给用户所在的IM-server;
7.缓存服务器地址,多次查询Redis;

Client客服端:

1.消息通讯,及消息应答ACK
2.心跳保持及断开连接

流程图:

MyAnswer博客

1.客服端向Route发起登录

2.登录成功从Redis当中选择可用的IM-server返回给客户端,并保存登录,路由信息给Redis;

3.客服端向IM-server发起长连接,成功后保持心跳

4.客服端下线清楚状态信息

MyAnswer博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论