企业微信作为一款办公协同的产品,聊天消息收发是最基础的功能。消息系统的稳定性、可靠性、安全性尤其重要。
消息系统的构建与设计的过程中,面临着较多的难点。而且针对toB场景的消息系统,需要支持更为复杂的业务场景。

针对toB场景的特有业务有:
1)消息鉴权:关系类型有群关系、同企业同事关系、好友关系、集团企业关系、圈子企业关系。收发消息双方需存在至少一种关系才允许发消息;
2)回执消息:每条消息都需记录已读和未读人员列表,涉及频繁的状态读写操作;
3)撤回消息:支持24小时的有效期撤回动作;
4)消息存储:云端存储时间跨度长,最长可支持180天消息存储,数百TB用户消息需优化,减少机器成本;
5)万人群聊:群人数上限可支持10000人,一条群消息就像一次小型的DDoS攻击;
6)微信互通:两个异构的im系统直接打通,可靠性和一致性尤其重要。
整体架构分层如下。
1)接入层:统一入口,接收客户端的请求,根据类型转发到对应的CGI层。客户端可以通过长连或者短连连接wwproxy。活跃的客户端,优先用长连接发起请求,如果长连失败,则选用短连重试。
2)CGI层:http服务,接收wwproxy的数据包,校验用户的session状态,并用后台派发的秘钥去解包,如解密失败则拒绝请求。解密成功,则把明文包体转发到后端逻辑层对应的svr。
3)逻辑层:大量的微服务和异步

本文探讨了企业微信在即时通讯开发中遇到的挑战,包括消息鉴权、回执、撤回、存储和群聊管理。通过采用分布式架构、消息存储优化、过载保护和业务隔离策略,确保消息系统的稳定性、可靠性和安全性。同时,介绍了如何通过扩散写方式处理群聊消息,以平衡存储成本和用户体验。
最低0.47元/天 解锁文章
500

被折叠的 条评论
为什么被折叠?



