经历过稍有些规模的IM系统开发的同行们都有体会,要想实现大规模并发IM(比如亿级用户和数十亿日消息量这样的规模),在架构设计上需要一些额外的考虑,尤其是要解决用户高并发、服务高可用,架构和实现细节上都需要不短时间的打磨。
具体解释就是:
1)高可靠:确保不丢消息;
2)高可用:任意机房或者服务器挂掉,不影响服务;
3)实时性:不管用户在哪里,在线用户消息在1秒内达到(我们实际是75%消息可以做到120ms);
4)有序性:确保用户消息的有序性,不会出现发送和接受的乱序。
从整体架构上来说,亿级用户量的IM架构整体上偏复杂。
传统开源的IM服务喜欢把所有服务做到1-2个服务里(Connector+Service模型),这样带来的问题比较严重。
传统开源的IM的问题主要体现在:
1)服务代码复杂,难以持续开发和运维;
2)单一业务逻辑出问题,可能会影响到其它逻辑,导致服务的全面不可用。
因此,我在做架构设计的时候尽量追求微服务化。即把整体架构进行分拆为子系统,然后子系统内按照业务逻辑分拆为微服务。
4个子系统的职责是:
1&#