顺序消息的本质,是生产消息的时候按顺序写入队列,同时消费消息的时候从队列中顺序消费。为了提升性能和并发能力,消息队列会对同一Topic的消息进行分区,并由用户提供一个分区算法来决定消息所属的分区,因此消息消费的时候只在同一个分区上有序。对于跨集群消息队列同步来说,由于消息源集群和消息目标集群是2个独立的集群,因此它们在对消息进行数据分区的时候,无法保证分区数量一致,另一方面因为环境的不同(算法中可能会引用其它外部变量)所以分区算法也无法同步,所以当一条顺序消息从一个集群同步到另一个集群的时候,会导致消息顺序的丢失。
本方案提出一种基于源分区标识对消息按目标分区状态进行重新分区的方法,实现跨集群的顺序消息同步。