1.本发明涉及数据同步技术领域,具体而言,涉及一种基于消息中间件集群的数据同步方法及系统。
背景技术:2.随着企业业务的不断发展,产生了大量的数据。为了保障数据的安全性,分散数据故障对企业业务的影响,通过设置多个数据中心,例如,是一些大型企业为了避免自然灾害影响,而选择在不同城市的机房搭建数据中心,实现数据的多地存储,保障数据安全性。其中,每一数据中心独立部署一套分布式文件系统集群,例如,消息中间件(kafka)集群,从而实现数据的存储和访问,从而在一数据中心的数据异常无法恢复时,能够保障其他数据中心的数据。
3.但该数据的存储方法,在某一数据中心异常时,还是会导致一部分数据丢失或无法恢复,造成数据损失,影响企业业务服务的运行。
技术实现要素:4.有鉴于此,本发明的目的在于提供基于消息中间件集群的数据同步方法及系统,以实现多数据中心的数据同步,降低数据损失。
5.第一方面,本发明实施例提供了基于消息中间件集群的数据同步方法,包括:
6.构建多数据中心,为每一数据中心配置一消息中间件集群;
7.多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;
8.每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;
9.在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
10.结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述对获取的同步数据进行重命名,包括:
11.在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
12.结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述轮询请求为长轮询请求,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
13.向各目标消息中间件集群发起携带有超时阈值的长轮询请求;
14.所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;
15.若有,返回携带有所述增量数据的长轮询请求响应;
16.若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。
17.结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
18.向各目标消息中间件集群发起轮询请求;
19.所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;
20.所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;
21.所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。
22.结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,所述方法还包括:
23.关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。
24.结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述为每一数据中心配置一消息中间件集群,包括:
25.在为数据中心配置的消息中间件集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。
26.第二方面,本发明实施例还提供了一种基于消息中间件集群的数据同步系统,包括:
27.第一数据中心,配置有第一消息中间件集群以及第一数据同步服务器,第一消息中间件集群与第一数据同步服务器相连接;
28.第二数据中心,配置有第二消息中间件集群以及第二数据同步服务器,第二消息中间件集群与第二数据同步服务器相连接;
29.第一数据中心与第二数据中心位于不同区域;
30.第一消息中间件集群,用于接收第一数据中心的生产者上传的第一数据,进行存储;
31.第一数据同步服务器,用于接收第二数据同步服务器发送的轮询请求,从第一消息中间件集群中获取需同步的第一数据,返回至第二数据同步服务器;
32.第二数据同步服务器,用于将接收的第一数据进行重命名后发送至第二消息中间件集群进行存储;
33.心跳检测服务器,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
34.结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述第二数据同步服务器包括:
35.名称获取单元,用于获取接收的第一数据的名称;
36.更名单元,用于在获取的名称前,添加第二消息中间件集群名称。
37.第三方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
38.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
39.本发明实施例提供的基于消息中间件集群的数据同步方法及系统,通过构建多数据中心,为每一数据中心配置一消息中间件集群;多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。这样,将消息中间件集群的数据同步到其它消息中间件集群,从而实现数据同步,可以有效降低消息中间件集群发生异常后的数据损失。
40.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
41.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
42.图1示出了本发明实施例所提供的基于消息中间件集群的数据同步方法流程示意图;
43.图2示出了本发明实施例所提供的基于消息中间件集群的数据同步系统结构示意图;
44.图3为本技术实施例提供的一种计算机设备300的结构示意图。
具体实施方式
45.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.对于大型企业,尤其金融行业,为提升业务服务的便利性,利用不同地理位置的数据中心,提供各种业务服务,并能在某一数据中心异常时,能够通过其它数据中心提供异常的数据中心的业务服务,使得异常的数据中心的业务服务不中断,显得尤为重要。但目前数据中心采用独立kafka集群的方法,每一数据中心独立部署kafka集群,当kafka集群所在的数据中心发生异常(断网、断电、火灾),存储在kafka集群中未被消费的数据会发生丢失,造成业务出错以及数据损失。本发明实施例中,提出多数据中心多活系统,针对各数据中心独立部署的kafka集群,实现部署的多个kafka集群协作和数据同步,即将一kafka集群的数据同步到多数据中心多活系统中除该kafka集群之外的一个或多个kafka集群,以当某一kafka集群发生异常,执行了数据同步的其它kafka集群能够接替该异常的kafka集群的业务服务,从而实现数据的跨kafka集群消费,通过多个kafka集群的互相协作,提高系统的高可用性、高可靠性和灾难备份能力。
47.本发明实施例提供了一种基于消息中间件集群的数据同步方法及系统,下面通过实施例进行描述。
48.图1示出了本发明实施例所提供的基于消息中间件集群的数据同步方法流程示意图。如图1所示,该方法包括:
49.步骤101,构建多数据中心,为每一数据中心配置一消息中间件集群;
50.本发明实施例中,作为一可选实施例,数据中心为机房,在机房内部署消息中间件集群,该消息中间件集群为kafka集群,该kafka集群称为本地kafka集群。
51.本发明实施例中,作为一可选实施例,以消息中间件集群为kafka集群为例,为每一数据中心配置一消息中间件集群,包括:
52.在为数据中心配置的kafka集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。
53.本发明实施例中,kafka集群中运行的本地主节点的数量为一个,本地从节点的数量为一个或多个。在kafka集群运行中,由本地主节点提供外部接入和向外部输出的业务服务,本地从节点作为本地主节点的备份节点,以在本地从节点异常、但本地从节点能正常运行时,接替异常的本地主节点向外提供业务服务。
54.本发明实施例中,本地主节点接收生产者上传的数据,存储并将上传的数据同步至本地从节点。
55.本发明实施例中,生产者通过kafka集群的数据接入接口,例如,数据上传api函数,将数据传输至本地主节点,本地主节点存储接收的数据后,将该存储的数据同步至本地从节点。
56.步骤102,多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;
57.本发明实施例中,作为一可选实施例,轮询包括长轮询以及短轮询。
58.本发明实施例中,作为一可选实施例,轮询请求为长轮询请求,向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
59.向各目标消息中间件集群发起携带有超时阈值的长轮询请求;
60.所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;
61.若有,返回携带有所述增量数据的长轮询请求响应;
62.若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。
63.本发明实施例中,目标消息中间件集群为目标kafka集群,对于短轮询,目标kafka集群接收到短轮询请求后,不管有没有增量数据,实时进行响应;而对于长轮询,目标kafka集群接收到长轮询请求后,如果有增量数据,将增量数据作为同步数据,立刻响应长轮询请求,如果没有,等待一设置的超时阈值,在该时间段内,如果有增量数据,可以通过实时方式或超时阈值结束时响应长轮询请求。
64.本发明实施例中,作为另一可选实施例,向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
65.向各目标消息中间件集群发起轮询请求;
66.所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;
67.所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;
68.所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。
69.本发明实施例中,对于由多数据中心构成的多数据中心多活系统,每一kafka集群,针对系统中的其它kafka集群,每一其它kafka集群设置一日志文件,在响应日志文件对应的kafka集群的轮询请求后,标记日志文件中写操作日志的读取位置(偏移量:offset),在接收到该kafka集群的轮询请求后,读取日志文件中标记的最后一次读取位置至最近一次写操作日志之间的写操作日志。实际应用中,对于读取的写操作日志数量较多的情形,也可以进行分批次读取。
70.本发明实施例中,对于源kafka集群同步目标kafka集群的数据的情形,在将目标kafka集群的数据写入源kafka集群的过程中,由于源kafka集群需要针对每一其它kafka集群进行写操作日志记录,因而,会造成源kafka集群与目标kafka集群中数据的混乱,作为一可选实施例,在源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,该方法还包括:
71.关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。
72.本发明实施例中,作为一可选实施例,对于向目标kafka集群发起轮询请求,可以通过在发起请求的kafka集群(源kafka集群)内,利用编程语言实现,在此略去详述。
73.步骤103,每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;
74.本发明实施例中,对于kafka集群,数据是以主题(topic)进行存储的,由于不同的kafka集群可能会接收到同一主题的数据(包含相同内容或不同内容),因而,在将同一主题的数据同步至其它kafka集群后,会导致其它kafka集群存储数据的混乱。
75.本发明实施例中,作为一可选实施例,对获取的同步数据进行重命名,包括:
76.在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
77.本发明实施例中,kafka集群在从目标kafka集群获取同步数据后,存入重新命名的topic中,命名方式为:“该kafka集群名称+同步数据原有的topic名称”。这样,可以避免该kafka集群中,同步数据与生产者上传至该kafka集群的数据,由于主题相同导致的数据混乱。
78.本发明实施例中,各机房的kafka集群相互独立,正常运行时,直接处理本kafka集群的生产者和消费者的数据,并对接收的数据进行集群内和集群间的同步,这样,在一kafka集群出现异常导致数据无法恢复时,由于该异常kafka集群中的数据已同步至其它kafka集群,因而,能够有效降低数据损失。
79.步骤104,在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
80.本发明实施例中,对于各数据中心的kafka集群,设置一心跳检测服务器,各kafka集群定时上报心跳信息,在超时没有收到一kafka集群上报的心跳信息后,将该kafka集群提供的业务服务切换至其它kafka集群,以不间断提供对该kafka集群的业务服务。作为一可选实施例,心跳检测服务器依据接收到心跳信息的kafka集群,基于各kafka集群与异常kafka集群的地理位置、各kafka集群的负载等,选举用于接替异常kafka集群的kafka集群,实现各机房的kafka集群交叉备份数据以及对外提供业务服务。作为一可选实施例,心跳检测服务器维护一正常运行集群列表,对于心跳信息超时的kafka集群,从正常运行集群列表中移除。
81.图2示出了本发明实施例所提供的基于消息中间件集群的数据同步系统结构示意图。如图2所示,该系统包括:
82.第一数据中心201,配置有第一消息中间件集群202以及第一数据同步服务器203,第一消息中间件集群202与第一数据同步服务器203相连接;
83.第二数据中心211,配置有第二消息中间件集群212以及第二数据同步服务器213,第二消息中间件集群212与第二数据同步服务器213相连接;
84.第一数据中心201与第二数据中心211位于不同区域;
85.第一消息中间件集群202,用于接收第一数据中心201的生产者上传的第一数据,
进行存储;
86.第一数据同步服务器203,用于接收第二数据同步服务器213发送的轮询请求,从第一消息中间件集群202中获取需同步的第一数据,返回至第二数据同步服务器213;
87.第二数据同步服务器213,用于将接收的第一数据进行重命名后发送至第二消息中间件集群202进行存储;
88.心跳检测服务器221,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
89.本发明实施例中,作为一可选实施例,第一消息中间件集群中,设置有本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。其中,本地从节点的数量为一个或多个,本地主节点的数量为一个。
90.本发明实施例中,作为一可选实施例,第二数据同步服务器包括:
91.名称获取单元,用于获取接收的第一数据的名称;
92.更名单元,用于在获取的名称前,添加第二消息中间件集群名称。
93.本发明实施例中,作为一可选实施例,轮询请求为长轮询请求,第二数据同步服务器,具体用于向第一数据同步服务器发起携带有超时阈值的长轮询请求;
94.第一数据同步服务器依据长轮询请求,查询各第一消息中间件集群自上一次响应长轮询请求后,是否有待同步的增量数据;
95.若有,返回携带有所述增量数据的长轮询请求响应;
96.若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,返回携带有所述增量数据的长轮询请求响应,若没有,返回携带有空数据的长轮询请求响应。
97.本发明实施例中,作为另一可选实施例,第二数据同步服务器,具体用于向第一数据同步服务器发起轮询请求;
98.第一数据同步服务器,解析接收的轮询请求,获取发送轮询请求的第二数据同步服务器;从第一消息中间件集群中,获取自响应第二数据同步服务器的上一次轮询请求后,存储生产者上传数据时生成的第一消息中间件集群写操作日志;将第一消息中间件集群写操作日志发送至第二数据同步服务;
99.第二数据同步服务器,依据第一源消息中间件集群写操作日志,通过第一数据同步服务器,从第一消息中间件集群获取第一消息中间件集群写操作日志对应的第一数据,写入第二源消息中间件集群。
100.本发明实施例中,作为一可选实施例,在将第一数据写入第二源消息中间件集群之前,第二源消息中间件集群还用于:
101.关闭第二源消息中间件集群针对第一源消息中间件集群的写操作日志记录,以使第一数据写入第二源消息中间件集群的过程中,不生成写操作日志。
102.本发明实施例中,作为一可选实施例,第二消息中间件集群,还用于接收第二数据中心的生产者上传的第二数据,进行存储;
103.第二数据同步服务器,还用于接收第一数据同步服务器发送的轮询请求,从第二
消息中间件集群中获取需同步的第二数据,返回至第一数据同步服务器;
104.第一数据同步服务器,用于将接收的第二数据进行重命名后发送至第一消息中间件集群进行存储。
105.本发明实施例中,各机房kafka集群的数据互备。作为一可选实施例,利用数据同步服务器实现数据互备,数据同步服务器主动从对方kafka集群拉取数据,并存放入本地kafka集群。作为一可选实施例,可以通过同步数据的偏移(offset)实现同步。
106.本发明实施例的系统,能够提供多中心架构可视化高效管理界面,建立、配置和操作数据同步服务,利用心跳检测服务器,可以清晰展示多数据中心的kafka集群和同步服务的健康状况,从而降低多数据中心的使用门槛和运维难度。进一步地,利用多数据中心架构的高效管理界面,可以实现数据同步节点建立、节点激活和切换的一键操作,当发生灾难时,能够快速实现切换,使得基于不同机房使用的kafka集群为独立的集群的情形,正常运行时各数据中心可以各自承担流量,当发生灾难时,各kafka集群的数据不会丢失。
107.如图3所示,本技术一实施例提供了一种计算机设备300,用于执行图1中的基于消息中间件集群的数据同步方法,该设备包括存储器301、与存储器301通过总线相连的处理器302及存储在该存储器301上并可在该处理器302上运行的计算机程序,其中,上述处理器302执行上述计算机程序时实现上述基于消息中间件集群的数据同步方法的步骤。
108.具体地,上述存储器301和处理器302能够为通用的存储器和处理器,这里不做具体限定,当处理器302运行存储器301存储的计算机程序时,能够执行上述基于消息中间件集群的数据同步方法。
109.对应于图1中的基于消息中间件集群的数据同步方法,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述基于消息中间件集群的数据同步方法的步骤。
110.具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述基于消息中间件集群的数据同步方法。
111.在本技术所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
112.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
113.另外,在本技术提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
114.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
115.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
116.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围。都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
技术特征:1.一种基于消息中间件集群的数据同步方法,其特征在于,包括:构建多数据中心,为每一数据中心配置一消息中间件集群;多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。2.根据权利要求1所述的方法,其特征在于,所述对获取的同步数据进行重命名,包括:在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。3.根据权利要求1或2所述的方法,其特征在于,所述轮询请求为长轮询请求,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:向各目标消息中间件集群发起携带有超时阈值的长轮询请求;所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;若有,返回携带有所述增量数据的长轮询请求响应;若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。4.根据权利要求1或2所述的方法,其特征在于,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:向各目标消息中间件集群发起轮询请求;所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。5.根据权利要求4所述的方法,其特征在于,在所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,所述方法还包括:关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。6.根据权利要求1或2所述的方法,其特征在于,所述为每一数据中心配置一消息中间件集群,包括:在为数据中心配置的消息中间件集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,
按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。7.一种基于消息中间件集群的数据同步系统,其特征在于,包括:第一数据中心,配置有第一消息中间件集群以及第一数据同步服务器,第一消息中间件集群与第一数据同步服务器相连接;第二数据中心,配置有第二消息中间件集群以及第二数据同步服务器,第二消息中间件集群与第二数据同步服务器相连接;第一数据中心与第二数据中心位于不同区域;第一消息中间件集群,用于接收第一数据中心的生产者上传的第一数据,进行存储;第一数据同步服务器,用于接收第二数据同步服务器发送的轮询请求,从第一消息中间件集群中获取需同步的第一数据,返回至第二数据同步服务器;第二数据同步服务器,用于将接收的第一数据进行重命名后发送至第二消息中间件集群进行存储;心跳检测服务器,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。8.根据权利要求7所述的系统,其特征在于,所述第二数据同步服务器包括:名称获取单元,用于获取接收的第一数据的名称;更名单元,用于在获取的名称前,添加第二消息中间件集群名称。9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的基于消息中间件集群的数据同步方法的步骤。10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的基于消息中间件集群的数据同步方法的步骤。
技术总结本发明提供了一种基于消息中间件集群的数据同步方法及系统,其中,方法包括:构建多数据中心,为每一数据中心配置一消息中间件集群;多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。可以实现多数据中心的数据同步,降低数据损失。降低数据损失。降低数据损失。
技术研发人员:平凯
受保护的技术使用者:中电金信软件有限公司
技术研发日:2022.07.25
技术公布日:2022/11/1