经历过稍有些规模的IM系统开发的同行们都有体会,要想实现大规模并发IM(比如亿级用户和数十亿日消息量这样的规模),在架构设计上需要一些额外的考虑,尤其是要解决用户高并发、服务高可用,架构和实现细节上都需要不短时间的打磨。

具体解释就是:
1)高可靠:确保不丢消息;
2)高可用:任意机房或者服务器挂掉,不影响服务;
3)实时性:不管用户在哪里,在线用户消息在1秒内达到(我们实际是75%消息可以做到120ms);
4)有序性:确保用户消息的有序性,不会出现发送和接受的乱序。
从整体架构上来说,亿级用户量的IM架构整体上偏复杂。
传统开源的IM服务喜欢把所有服务做到1-2个服务里(Connector+Service模型),这样带来的问题比较严重。
传统开源的IM的问题主要体现在:
1)服务代码复杂,难以持续开发和运维;
2)单一业务逻辑出问题,可能会影响到其它逻辑,导致服务的全面不可用。
因此,我在做架构设计的时候尽量追求微服务化。即把整体架构进行分拆为子系统,然后子系统内按照业务逻辑分拆为微服务。
4个子系统的职责是:
1)IM业务系统:服务IM相关的业务逻辑(比如好友关系、群关系、用户信息等);
2)信令系统:负责用户登录,用户在线状态的维护,以及在线用户的下行推送;
3)推送系统:负责消息的在线推送和离线推送;
亿级用户IM架构设计:微服务化与服务拆分

本文介绍了亿级用户规模的IM即时通讯系统开发中的架构设计,强调高可靠、高可用、实时性和有序性的实现。通过微服务化,将架构分为IM业务系统、信令系统、推送系统和存储系统四个子系统,每个子系统内部再按业务逻辑细分为多个服务。此外,文中还详细讲解了各个子系统的职责,以及如何通过登录、在线状态维护、消息推送等技术手段确保服务稳定和用户体验。
最低0.47元/天 解锁文章
1077

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



