在分布式聊天系统(IM)架构 https://blog.csdn.net/ghossst2003/article/details/109433243 一文中提出了把系统改为分布式,客户端消息发送给gate服务器集群,gate服务器集群处理消息和core服务器处理消息会有两个地方出现消息顺序的错乱:
- 客户端发送消息给gate服务器的时候,正常情况下,客户端a连接gate集群中的A服务器,然后发送消息,所有的消息按照客户端的顺序进入A服务器的待处理队列中进行处理,但是如果客户端a连接不上A服务器转而连接gate集群中的B服务器进行消息的发送,A服务器和B服务器处理速度不同,可能B服务器的处理速度快,此时会有客户a先发送给A服务器的消息慢于后发送给B服务器的消息到达core服务器。如图会有消息B先于消息A到达core服务器。
- 到达core服务器集群的消息是core服务器集群中的多台服务器一起处理,所以每台处理消息速度不一样,会造成消息顺序的不错乱。