System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种顺序消息跨集群同步的方法技术_技高网

一种顺序消息跨集群同步的方法技术

技术编号:40498896 阅读:4 留言:0更新日期:2024-02-26 19:26
本发明专利技术涉及IT与软件开发技术领域,且公开了一种顺序消息跨集群同步的方法,包括:步骤一、生产消息按顺序写入消息队列;步骤二、消息队列对同一主题的消息进行分区,并由分区算法来决定消息所属的分区;步骤三、同一集群中,消息队列进行主从复制;步骤四、在进行跨集群消息同步时,标记消息所属的分区ID;步骤五、当消息到达目标集群后,按该分区ID进行重新分区。该顺序消息跨集群同步的方法,通过在进行跨集群的同步时将消息所属的分区ID带上,当消息到达目标集群后,再按该分区ID进行重新分区,即可将消息顺序保留,实现跨集群的顺序消息同步,达到基于源分区标识对消息按目标分区状态进行重新分区的方法,实现跨集群的顺序消息同步的效果。

【技术实现步骤摘要】

本专利技术涉及it与软件开发,具体为一种顺序消息跨集群同步的方法


技术介绍

1、异地双活消息队列中,需要对2个独立部署的消息队列集群进行消息数据的双向同步。消息队列中除了普通的消息,还有各种特殊的消息,例如延迟消息、顺序消息、重试消息等等。对于跨集群消息同步服务来说,除了要同步普通的消息,还需要对顺序消息进行跨集群双向同步,否则会造成功能的缺失。

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

3、阿里云eventbridge事件驱动架构首先作为消费者将源消息队列集群的消息数据发布为消息事件存储到中间服务器,然后再作为生产者将目标消息队列集群订阅的消息事件写入到目标服务器,实现跨集群消息同步。该服务为基础服务,有其通用特性,支持各种输入事件源例如数据库、消息队列、http事件,但目前不支持顺序消息的同步。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本专利技术提供了一种顺序消息跨集群同步的方法,具备基于源分区标识对消息按目标分区状态进行重新分区的方法,实现跨集群的顺序消息同步等优点,解决了现有技术不支持顺序消息同步的问题。

3、(二)技术方案

4、为实现上述具备基于源分区标识对消息按目标分区状态进行重新分区的方法,实现跨集群的顺序消息同步目的,本专利技术提供如下技术方案:一种顺序消息跨集群同步的方法,包括以下步骤:

5、步骤一、生产消息按顺序写入消息队列;

6、步骤二、消息队列对同一主题的消息进行分区,并由分区算法来决定消息所属的分区;

7、步骤三、同一集群中,消息队列进行主从复制;

8、步骤四、在进行跨集群消息同步时,标记消息所属的分区id;

9、步骤五、当消息到达目标集群后,按该分区id进行重新分区。

10、优选的,所述步骤二中的分区算法采用哈希算法,通过哈希函数计算出一个哈希值,然后将消息分配到相应的分区中,相同属性的消息将始终被分配到同一个分区中。

11、优选的,所述哈希值的计算公式如下:

12、sha256(message)=digest

13、其中,sha256为安全哈希算法256位,message为输入的消息,digest是计算得到的256位的哈希值。

14、优选的,所述步骤一中顺序消息原理包括以下步骤:

15、a1、通过客户端采用哈希算法,将消息生产者的消息计算分区,并投递到指定分区内;

16、a2、消息分区分为队列0、队列1和队列2;

17、a3、队列0包括消息1和消息5,队列1包括消息4、消息6和消息7,队列2包括消息2、消息3和消息8;

18、a4、消息生产投递到队列0后与消息消费者1对接,消息生产投递到队列1后与消息消费者2对接,消息生产投递到队列2后与消息消费者1对接;

19、a5、队列1和消息消费者2与队列2和消息消费者1之间交叉对接形成负载均衡消息消费。

20、优选的,所述a1步骤中消息计算分区通过使用哈希算法计算消息的哈希值,得到一个固定长度的哈希结果,再将哈希值转化为整数,将转化后的哈希值与分区数量进行取模运算,使用取模运算符将哈希值除以分区数量,并取得余数,所述余数即为分区的编号。

21、优选的,所述步骤三中主从复制包括与步骤一相同的主节点,还包括从节点,所述从节点包括以下步骤:

22、b1、从节点分为从节点队列0、从节点队列1和从节点队列2;

23、b2、所述从节点队列0对应从节点消息1和从节点消息5,所述从节点队列1对应从节点消息4、从节点消息6和从节点消息7,所述从节点队列2对应从节点消息2、从节点消息3和从节点消息8;

24、b3、从节点队列0与从节点消息消费者4对接,从节点队列1与从节点消息消费者3对接,从节点队列2与从节点消息消费者4对接;

25、b4、队列0和信息消费者4与队列1和信息消费者3形成负载均衡消息消费。

26、优选的,所述主节点与从节点数据完全一致,用于保证消息顺序完整性。

27、优选的,所述步骤四中消息跨集群同步原理包括以下步骤:

28、c1、将顺序消息作为集群1,并单独设立集群2;

29、c2、所述集群2包括集群2队列0和集群2队列1;

30、c3、所述集群2队列0包括所述集群2消息1、集群2本地消息1、集群2消息2、集群2消息3、集群2本地消息3、集群2消息5和集群2消息8;

31、c4、所述集群2队列1包括集群2消息4、集群2消息6、集群2本地消息2和集群2消息7;

32、c5、集群2队列0与消息消费者3对接,集群2队列1与消息消费者4对接;

33、c6、集群2队列0与消息消费者3和集群2队列1与消息消费者4之间形成负载均衡消息消费。

34、优选的,所述集群1跨集群同步时,同时同步消息所属队列的id,并且重新分区时,目标队列id=源队列id%目标队列长度。

35、优选的,所述集群2重新分区时,顺序消息在同步过程中保留原有顺序,实现顺序消息的跨集群同步。

36、与现有技术相比,本专利技术提供了一种顺序消息跨集群同步的方法,具备以下有益效果:

37、本专利技术通过分区算法反映到数据分区id上,在进行跨集群的同步时将消息所属的分区id带上,当消息到达目标集群后,再按该分区id进行重新分区,即可将消息顺序保留,实现跨集群的顺序消息同步,达到了基于源分区标识对消息按目标分区状态进行重新分区的方法,实现跨集群的顺序消息同步的有益效果。

本文档来自技高网...

【技术保护点】

1.一种顺序消息跨集群同步的方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤二中的分区算法采用哈希算法,通过哈希函数计算出一个哈希值,然后将消息分配到相应的分区中,相同属性的消息将始终被分配到同一个分区中。

3.根据权利要求2所述的一种顺序消息跨集群同步的方法,其特征在于:所述哈希值的计算公式如下:

4.根据权利要求3所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤一中顺序消息原理包括以下步骤:

5.根据权利要求3所述的一种顺序消息跨集群同步的方法,其特征在于:所述A1步骤中消息计算分区通过使用哈希算法计算消息的哈希值,得到一个固定长度的哈希结果,再将哈希值转化为整数,将转化后的哈希值与分区数量进行取模运算,使用取模运算符将哈希值除以分区数量,并取得余数,所述余数即为分区的编号。

6.根据权利要求3所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤三中主从复制包括与步骤一相同的主节点,还包括从节点,所述从节点包括以下步骤:

7.根据权利要求4所述的一种顺序消息跨集群同步的方法,其特征在于:所述主节点与从节点数据完全一致,用于保证消息顺序完整性。

8.根据权利要求5所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤四中消息跨集群同步原理包括以下步骤:

9.根据权利要求6所述的一种顺序消息跨集群同步的方法,其特征在于:所述集群1跨集群同步时,同时同步消息所属队列的ID,并且重新分区时,目标队列ID=源队列ID%目标队列长度。

10.根据权利要求7所述的一种顺序消息跨集群同步的方法,其特征在于:所述集群2重新分区时,顺序消息在同步过程中保留原有顺序,实现顺序消息的跨集群同步。

...

【技术特征摘要】

1.一种顺序消息跨集群同步的方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤二中的分区算法采用哈希算法,通过哈希函数计算出一个哈希值,然后将消息分配到相应的分区中,相同属性的消息将始终被分配到同一个分区中。

3.根据权利要求2所述的一种顺序消息跨集群同步的方法,其特征在于:所述哈希值的计算公式如下:

4.根据权利要求3所述的一种顺序消息跨集群同步的方法,其特征在于:所述步骤一中顺序消息原理包括以下步骤:

5.根据权利要求3所述的一种顺序消息跨集群同步的方法,其特征在于:所述a1步骤中消息计算分区通过使用哈希算法计算消息的哈希值,得到一个固定长度的哈希结果,再将哈希值转化为整数,将转化后的哈希值与分区数量进行取模运算,使用取模运算符将哈希值除以分区数量,并取得余数,所述余数即...

【专利技术属性】
技术研发人员:唐律廖少波
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1