CN115269725A - 一种基于消息中间件集群的数据同步方法及系统 - Google Patents

一种基于消息中间件集群的数据同步方法及系统 Download PDF

Info

Publication number
CN115269725A
CN115269725A CN202210880292.7A CN202210880292A CN115269725A CN 115269725 A CN115269725 A CN 115269725A CN 202210880292 A CN202210880292 A CN 202210880292A CN 115269725 A CN115269725 A CN 115269725A
Authority
CN
China
Prior art keywords
message middleware
data
middleware cluster
cluster
polling request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210880292.7A
Other languages
English (en)
Other versions
CN115269725B (zh
Inventor
平凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongdian Jinxin Software Co Ltd
Original Assignee
Zhongdian Jinxin Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongdian Jinxin Software Co Ltd filed Critical Zhongdian Jinxin Software Co Ltd
Priority to CN202210880292.7A priority Critical patent/CN115269725B/zh
Publication of CN115269725A publication Critical patent/CN115269725A/zh
Application granted granted Critical
Publication of CN115269725B publication Critical patent/CN115269725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了一种基于消息中间件集群的数据同步方法及系统,其中,方法包括:构建多数据中心,为每一数据中心配置一消息中间件集群;多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。可以实现多数据中心的数据同步,降低数据损失。

Description

一种基于消息中间件集群的数据同步方法及系统
技术领域
本发明涉及数据同步技术领域,具体而言,涉及一种基于消息中间件集群的数据同步方法及系统。
背景技术
随着企业业务的不断发展,产生了大量的数据。为了保障数据的安全性,分散数据故障对企业业务的影响,通过设置多个数据中心,例如,是一些大型企业为了避免自然灾害影响,而选择在不同城市的机房搭建数据中心,实现数据的多地存储,保障数据安全性。其中,每一数据中心独立部署一套分布式文件系统集群,例如,消息中间件(Kafka)集群,从而实现数据的存储和访问,从而在一数据中心的数据异常无法恢复时,能够保障其他数据中心的数据。
但该数据的存储方法,在某一数据中心异常时,还是会导致一部分数据丢失或无法恢复,造成数据损失,影响企业业务服务的运行。
发明内容
有鉴于此,本发明的目的在于提供基于消息中间件集群的数据同步方法及系统,以实现多数据中心的数据同步,降低数据损失。
第一方面,本发明实施例提供了基于消息中间件集群的数据同步方法,包括:
构建多数据中心,为每一数据中心配置一消息中间件集群;
多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;
每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;
在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述对获取的同步数据进行重命名,包括:
在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述轮询请求为长轮询请求,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起携带有超时阈值的长轮询请求;
所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;
若有,返回携带有所述增量数据的长轮询请求响应;
若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。
结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起轮询请求;
所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;
所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;
所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,所述方法还包括:
关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。
结合第一方面或第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述为每一数据中心配置一消息中间件集群,包括:
在为数据中心配置的消息中间件集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。
第二方面,本发明实施例还提供了一种基于消息中间件集群的数据同步系统,包括:
第一数据中心,配置有第一消息中间件集群以及第一数据同步服务器,第一消息中间件集群与第一数据同步服务器相连接;
第二数据中心,配置有第二消息中间件集群以及第二数据同步服务器,第二消息中间件集群与第二数据同步服务器相连接;
第一数据中心与第二数据中心位于不同区域;
第一消息中间件集群,用于接收第一数据中心的生产者上传的第一数据,进行存储;
第一数据同步服务器,用于接收第二数据同步服务器发送的轮询请求,从第一消息中间件集群中获取需同步的第一数据,返回至第二数据同步服务器;
第二数据同步服务器,用于将接收的第一数据进行重命名后发送至第二消息中间件集群进行存储;
心跳检测服务器,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述第二数据同步服务器包括:
名称获取单元,用于获取接收的第一数据的名称;
更名单元,用于在获取的名称前,添加第二消息中间件集群名称。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
本发明实施例提供的基于消息中间件集群的数据同步方法及系统,通过构建多数据中心,为每一数据中心配置一消息中间件集群;多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。这样,将消息中间件集群的数据同步到其它消息中间件集群,从而实现数据同步,可以有效降低消息中间件集群发生异常后的数据损失。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例所提供的基于消息中间件集群的数据同步方法流程示意图;
图2示出了本发明实施例所提供的基于消息中间件集群的数据同步系统结构示意图;
图3为本申请实施例提供的一种计算机设备300的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于大型企业,尤其金融行业,为提升业务服务的便利性,利用不同地理位置的数据中心,提供各种业务服务,并能在某一数据中心异常时,能够通过其它数据中心提供异常的数据中心的业务服务,使得异常的数据中心的业务服务不中断,显得尤为重要。但目前数据中心采用独立Kafka集群的方法,每一数据中心独立部署Kafka集群,当Kafka集群所在的数据中心发生异常(断网、断电、火灾),存储在Kafka集群中未被消费的数据会发生丢失,造成业务出错以及数据损失。本发明实施例中,提出多数据中心多活系统,针对各数据中心独立部署的Kafka集群,实现部署的多个Kafka集群协作和数据同步,即将一Kafka集群的数据同步到多数据中心多活系统中除该Kafka集群之外的一个或多个Kafka集群,以当某一Kafka集群发生异常,执行了数据同步的其它Kafka集群能够接替该异常的Kafka集群的业务服务,从而实现数据的跨Kafka集群消费,通过多个Kafka集群的互相协作,提高系统的高可用性、高可靠性和灾难备份能力。
本发明实施例提供了一种基于消息中间件集群的数据同步方法及系统,下面通过实施例进行描述。
图1示出了本发明实施例所提供的基于消息中间件集群的数据同步方法流程示意图。如图1所示,该方法包括:
步骤101,构建多数据中心,为每一数据中心配置一消息中间件集群;
本发明实施例中,作为一可选实施例,数据中心为机房,在机房内部署消息中间件集群,该消息中间件集群为Kafka集群,该Kafka集群称为本地Kafka集群。
本发明实施例中,作为一可选实施例,以消息中间件集群为Kafka集群为例,为每一数据中心配置一消息中间件集群,包括:
在为数据中心配置的Kafka集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。
本发明实施例中,Kafka集群中运行的本地主节点的数量为一个,本地从节点的数量为一个或多个。在Kafka集群运行中,由本地主节点提供外部接入和向外部输出的业务服务,本地从节点作为本地主节点的备份节点,以在本地从节点异常、但本地从节点能正常运行时,接替异常的本地主节点向外提供业务服务。
本发明实施例中,本地主节点接收生产者上传的数据,存储并将上传的数据同步至本地从节点。
本发明实施例中,生产者通过Kafka集群的数据接入接口,例如,数据上传API函数,将数据传输至本地主节点,本地主节点存储接收的数据后,将该存储的数据同步至本地从节点。
步骤102,多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;
本发明实施例中,作为一可选实施例,轮询包括长轮询以及短轮询。
本发明实施例中,作为一可选实施例,轮询请求为长轮询请求,向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起携带有超时阈值的长轮询请求;
所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;
若有,返回携带有所述增量数据的长轮询请求响应;
若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。
本发明实施例中,目标消息中间件集群为目标Kafka集群,对于短轮询,目标Kafka集群接收到短轮询请求后,不管有没有增量数据,实时进行响应;而对于长轮询,目标Kafka集群接收到长轮询请求后,如果有增量数据,将增量数据作为同步数据,立刻响应长轮询请求,如果没有,等待一设置的超时阈值,在该时间段内,如果有增量数据,可以通过实时方式或超时阈值结束时响应长轮询请求。
本发明实施例中,作为另一可选实施例,向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起轮询请求;
所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;
所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;
所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。
本发明实施例中,对于由多数据中心构成的多数据中心多活系统,每一Kafka集群,针对系统中的其它Kafka集群,每一其它Kafka集群设置一日志文件,在响应日志文件对应的Kafka集群的轮询请求后,标记日志文件中写操作日志的读取位置(偏移量:Offset),在接收到该Kafka集群的轮询请求后,读取日志文件中标记的最后一次读取位置至最近一次写操作日志之间的写操作日志。实际应用中,对于读取的写操作日志数量较多的情形,也可以进行分批次读取。
本发明实施例中,对于源Kafka集群同步目标Kafka集群的数据的情形,在将目标Kafka集群的数据写入源Kafka集群的过程中,由于源Kafka集群需要针对每一其它Kafka集群进行写操作日志记录,因而,会造成源Kafka集群与目标Kafka集群中数据的混乱,作为一可选实施例,在源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,该方法还包括:
关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。
本发明实施例中,作为一可选实施例,对于向目标Kafka集群发起轮询请求,可以通过在发起请求的Kafka集群(源Kafka集群)内,利用编程语言实现,在此略去详述。
步骤103,每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;
本发明实施例中,对于Kafka集群,数据是以主题(Topic)进行存储的,由于不同的Kafka集群可能会接收到同一主题的数据(包含相同内容或不同内容),因而,在将同一主题的数据同步至其它Kafka集群后,会导致其它Kafka集群存储数据的混乱。
本发明实施例中,作为一可选实施例,对获取的同步数据进行重命名,包括:
在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
本发明实施例中,Kafka集群在从目标Kafka集群获取同步数据后,存入重新命名的Topic中,命名方式为:“该Kafka集群名称+同步数据原有的Topic名称”。这样,可以避免该Kafka集群中,同步数据与生产者上传至该Kafka集群的数据,由于主题相同导致的数据混乱。
本发明实施例中,各机房的Kafka集群相互独立,正常运行时,直接处理本Kafka集群的生产者和消费者的数据,并对接收的数据进行集群内和集群间的同步,这样,在一Kafka集群出现异常导致数据无法恢复时,由于该异常Kafka集群中的数据已同步至其它Kafka集群,因而,能够有效降低数据损失。
步骤104,在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
本发明实施例中,对于各数据中心的Kafka集群,设置一心跳检测服务器,各Kafka集群定时上报心跳信息,在超时没有收到一Kafka集群上报的心跳信息后,将该Kafka集群提供的业务服务切换至其它Kafka集群,以不间断提供对该Kafka集群的业务服务。作为一可选实施例,心跳检测服务器依据接收到心跳信息的Kafka集群,基于各Kafka集群与异常Kafka集群的地理位置、各Kafka集群的负载等,选举用于接替异常Kafka集群的Kafka集群,实现各机房的Kafka集群交叉备份数据以及对外提供业务服务。作为一可选实施例,心跳检测服务器维护一正常运行集群列表,对于心跳信息超时的Kafka集群,从正常运行集群列表中移除。
图2示出了本发明实施例所提供的基于消息中间件集群的数据同步系统结构示意图。如图2所示,该系统包括:
第一数据中心201,配置有第一消息中间件集群202以及第一数据同步服务器203,第一消息中间件集群202与第一数据同步服务器203相连接;
第二数据中心211,配置有第二消息中间件集群212以及第二数据同步服务器213,第二消息中间件集群212与第二数据同步服务器213相连接;
第一数据中心201与第二数据中心211位于不同区域;
第一消息中间件集群202,用于接收第一数据中心201的生产者上传的第一数据,进行存储;
第一数据同步服务器203,用于接收第二数据同步服务器213发送的轮询请求,从第一消息中间件集群202中获取需同步的第一数据,返回至第二数据同步服务器213;
第二数据同步服务器213,用于将接收的第一数据进行重命名后发送至第二消息中间件集群202进行存储;
心跳检测服务器221,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
本发明实施例中,作为一可选实施例,第一消息中间件集群中,设置有本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。其中,本地从节点的数量为一个或多个,本地主节点的数量为一个。
本发明实施例中,作为一可选实施例,第二数据同步服务器包括:
名称获取单元,用于获取接收的第一数据的名称;
更名单元,用于在获取的名称前,添加第二消息中间件集群名称。
本发明实施例中,作为一可选实施例,轮询请求为长轮询请求,第二数据同步服务器,具体用于向第一数据同步服务器发起携带有超时阈值的长轮询请求;
第一数据同步服务器依据长轮询请求,查询各第一消息中间件集群自上一次响应长轮询请求后,是否有待同步的增量数据;
若有,返回携带有所述增量数据的长轮询请求响应;
若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,返回携带有所述增量数据的长轮询请求响应,若没有,返回携带有空数据的长轮询请求响应。
本发明实施例中,作为另一可选实施例,第二数据同步服务器,具体用于向第一数据同步服务器发起轮询请求;
第一数据同步服务器,解析接收的轮询请求,获取发送轮询请求的第二数据同步服务器;从第一消息中间件集群中,获取自响应第二数据同步服务器的上一次轮询请求后,存储生产者上传数据时生成的第一消息中间件集群写操作日志;将第一消息中间件集群写操作日志发送至第二数据同步服务;
第二数据同步服务器,依据第一源消息中间件集群写操作日志,通过第一数据同步服务器,从第一消息中间件集群获取第一消息中间件集群写操作日志对应的第一数据,写入第二源消息中间件集群。
本发明实施例中,作为一可选实施例,在将第一数据写入第二源消息中间件集群之前,第二源消息中间件集群还用于:
关闭第二源消息中间件集群针对第一源消息中间件集群的写操作日志记录,以使第一数据写入第二源消息中间件集群的过程中,不生成写操作日志。
本发明实施例中,作为一可选实施例,第二消息中间件集群,还用于接收第二数据中心的生产者上传的第二数据,进行存储;
第二数据同步服务器,还用于接收第一数据同步服务器发送的轮询请求,从第二消息中间件集群中获取需同步的第二数据,返回至第一数据同步服务器;
第一数据同步服务器,用于将接收的第二数据进行重命名后发送至第一消息中间件集群进行存储。
本发明实施例中,各机房Kafka集群的数据互备。作为一可选实施例,利用数据同步服务器实现数据互备,数据同步服务器主动从对方Kafka集群拉取数据,并存放入本地Kafka集群。作为一可选实施例,可以通过同步数据的偏移(offset)实现同步。
本发明实施例的系统,能够提供多中心架构可视化高效管理界面,建立、配置和操作数据同步服务,利用心跳检测服务器,可以清晰展示多数据中心的Kafka集群和同步服务的健康状况,从而降低多数据中心的使用门槛和运维难度。进一步地,利用多数据中心架构的高效管理界面,可以实现数据同步节点建立、节点激活和切换的一键操作,当发生灾难时,能够快速实现切换,使得基于不同机房使用的Kafka集群为独立的集群的情形,正常运行时各数据中心可以各自承担流量,当发生灾难时,各Kafka集群的数据不会丢失。
如图3所示,本申请一实施例提供了一种计算机设备300,用于执行图1中的基于消息中间件集群的数据同步方法,该设备包括存储器301、与存储器301通过总线相连的处理器302及存储在该存储器301上并可在该处理器302上运行的计算机程序,其中,上述处理器302执行上述计算机程序时实现上述基于消息中间件集群的数据同步方法的步骤。
具体地,上述存储器301和处理器302能够为通用的存储器和处理器,这里不做具体限定,当处理器302运行存储器301存储的计算机程序时,能够执行上述基于消息中间件集群的数据同步方法。
对应于图1中的基于消息中间件集群的数据同步方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述基于消息中间件集群的数据同步方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述基于消息中间件集群的数据同步方法。
在本申请所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种基于消息中间件集群的数据同步方法,其特征在于,包括:
构建多数据中心,为每一数据中心配置一消息中间件集群;
多数据中心中的各所述消息中间件集群,分别向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,所述目标消息中间件集群为多数据中心中,发起轮询请求的消息中间件集群之外的消息中间件集群;
每个所述消息中间件集群分别对获取的同步数据进行重命名,存储重命名的同步数据;
在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
2.根据权利要求1所述的方法,其特征在于,所述对获取的同步数据进行重命名,包括:
在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
3.根据权利要求1或2所述的方法,其特征在于,所述轮询请求为长轮询请求,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起携带有超时阈值的长轮询请求;
所述各目标消息中间件集群查询自上一次响应长轮询请求后,是否有待同步的增量数据;
若有,返回携带有所述增量数据的长轮询请求响应;
若没有,等待所述超时阈值,若在所述超时阈值内有待同步的增量数据,执行返回携带有所述增量数据的长轮询请求响应的步骤,若没有,返回携带有空数据的长轮询请求响应。
4.根据权利要求1或2所述的方法,其特征在于,所述向各目标消息中间件集群发起轮询请求,以获取所述目标消息中间件集群的同步数据,包括:
向各目标消息中间件集群发起轮询请求;
所述各目标消息中间件集群解析接收的轮询请求,获取发送轮询请求的源消息中间件集群;
所述各目标消息中间件集群获取自响应所述源消息中间件集群的上一次轮询请求后,存储生产者上传数据时生成的源消息中间件集群写操作日志;
所述各目标消息中间件集群将源消息中间件集群写操作日志发送至所述源消息中间件集群,以使所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据。
5.根据权利要求4所述的方法,其特征在于,在所述源消息中间件集群依据所述源消息中间件集群写操作日志,获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据之前,所述方法还包括:
关闭所述源消息中间件集群针对所述目标消息中间件集群的写操作日志记录,以在获取所述目标消息中间件集群中所述源消息中间件集群写操作日志对应的数据的过程中,不生成写操作日志。
6.根据权利要求1或2所述的方法,其特征在于,所述为每一数据中心配置一消息中间件集群,包括:
在为数据中心配置的消息中间件集群中,设置本地主节点以及本地从节点,本地主节点存储生产者的上传数据,本地从节点存储上传数据的副本,以在本地主节点发生异常时,按照预先设置的选举策略选取一本地从节点作为本地主节点,以替换发生异常的本地主节点。
7.一种基于消息中间件集群的数据同步系统,其特征在于,包括:
第一数据中心,配置有第一消息中间件集群以及第一数据同步服务器,第一消息中间件集群与第一数据同步服务器相连接;
第二数据中心,配置有第二消息中间件集群以及第二数据同步服务器,第二消息中间件集群与第二数据同步服务器相连接;
第一数据中心与第二数据中心位于不同区域;
第一消息中间件集群,用于接收第一数据中心的生产者上传的第一数据,进行存储;
第一数据同步服务器,用于接收第二数据同步服务器发送的轮询请求,从第一消息中间件集群中获取需同步的第一数据,返回至第二数据同步服务器;
第二数据同步服务器,用于将接收的第一数据进行重命名后发送至第二消息中间件集群进行存储;
心跳检测服务器,用于在检测到当前数据中心的消息中间件集群发生异常后,切换至基于各消息中间件集群与异常消息中间件集群的地理位置、各消息中间件集群的负载确定的消息中间件集群。
8.根据权利要求7所述的系统,其特征在于,所述第二数据同步服务器包括:
名称获取单元,用于获取接收的第一数据的名称;
更名单元,用于在获取的名称前,添加第二消息中间件集群名称。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的基于消息中间件集群的数据同步方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的基于消息中间件集群的数据同步方法的步骤。
CN202210880292.7A 2022-07-25 2022-07-25 一种基于消息中间件集群的数据同步方法及系统 Active CN115269725B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210880292.7A CN115269725B (zh) 2022-07-25 2022-07-25 一种基于消息中间件集群的数据同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210880292.7A CN115269725B (zh) 2022-07-25 2022-07-25 一种基于消息中间件集群的数据同步方法及系统

Publications (2)

Publication Number Publication Date
CN115269725A true CN115269725A (zh) 2022-11-01
CN115269725B CN115269725B (zh) 2023-07-28

Family

ID=83769578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210880292.7A Active CN115269725B (zh) 2022-07-25 2022-07-25 一种基于消息中间件集群的数据同步方法及系统

Country Status (1)

Country Link
CN (1) CN115269725B (zh)

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7443872B1 (en) * 2005-04-29 2008-10-28 Network Appliance, Inc. System and method for multiplexing channels over multiple connections in a storage system cluster
US20120143829A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Notification of configuration updates in a cluster system
CN106357723A (zh) * 2016-08-15 2017-01-25 杭州古北电子科技有限公司 一种基于云主机的多集群缓存信息同步系统和方法
US20170118262A1 (en) * 2015-10-23 2017-04-27 Kodiak Networks Inc. System and Method for Content Messaging
CN107682169A (zh) * 2016-08-02 2018-02-09 北京京东尚科信息技术有限公司 一种利用Kafka集群发送消息的方法和装置
CN108170527A (zh) * 2017-12-15 2018-06-15 北京奇艺世纪科技有限公司 一种异地多活的分布式消息消费方法及装置
CN108833479A (zh) * 2018-05-18 2018-11-16 吉林亿联银行股份有限公司 一种数据同步方法和装置
CN109361777A (zh) * 2018-12-18 2019-02-19 广东浪潮大数据研究有限公司 分布式集群节点状态的同步方法、同步系统及相关装置
CN111917846A (zh) * 2020-07-19 2020-11-10 中信银行股份有限公司 一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质
CN112804332A (zh) * 2021-01-14 2021-05-14 广州虎牙科技有限公司 消息处理系统、方法、装置、设备及计算机可读存储介质
CN113691616A (zh) * 2021-08-23 2021-11-23 上海浦东发展银行股份有限公司 一种基于长轮询的微服务同步方法、装置及存储介质
CN113703954A (zh) * 2020-05-21 2021-11-26 中移(苏州)软件技术有限公司 一种消息备份方法、装置、电子设备及计算机存储介质
CN113722127A (zh) * 2021-09-24 2021-11-30 高小翎 高效轻量易用的分布式网络消息中间件
CN114281349A (zh) * 2021-12-28 2022-04-05 中国邮政储蓄银行股份有限公司 开源消息中间件RocketMQ集群的部署方法及装置
CN114356650A (zh) * 2021-11-19 2022-04-15 科大讯飞股份有限公司 数据备份方法、装置、设备、系统及存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7443872B1 (en) * 2005-04-29 2008-10-28 Network Appliance, Inc. System and method for multiplexing channels over multiple connections in a storage system cluster
US20120143829A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Notification of configuration updates in a cluster system
US20170118262A1 (en) * 2015-10-23 2017-04-27 Kodiak Networks Inc. System and Method for Content Messaging
CN107682169A (zh) * 2016-08-02 2018-02-09 北京京东尚科信息技术有限公司 一种利用Kafka集群发送消息的方法和装置
CN106357723A (zh) * 2016-08-15 2017-01-25 杭州古北电子科技有限公司 一种基于云主机的多集群缓存信息同步系统和方法
CN108170527A (zh) * 2017-12-15 2018-06-15 北京奇艺世纪科技有限公司 一种异地多活的分布式消息消费方法及装置
CN108833479A (zh) * 2018-05-18 2018-11-16 吉林亿联银行股份有限公司 一种数据同步方法和装置
CN109361777A (zh) * 2018-12-18 2019-02-19 广东浪潮大数据研究有限公司 分布式集群节点状态的同步方法、同步系统及相关装置
CN113703954A (zh) * 2020-05-21 2021-11-26 中移(苏州)软件技术有限公司 一种消息备份方法、装置、电子设备及计算机存储介质
CN111917846A (zh) * 2020-07-19 2020-11-10 中信银行股份有限公司 一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质
CN112804332A (zh) * 2021-01-14 2021-05-14 广州虎牙科技有限公司 消息处理系统、方法、装置、设备及计算机可读存储介质
CN113691616A (zh) * 2021-08-23 2021-11-23 上海浦东发展银行股份有限公司 一种基于长轮询的微服务同步方法、装置及存储介质
CN113722127A (zh) * 2021-09-24 2021-11-30 高小翎 高效轻量易用的分布式网络消息中间件
CN114356650A (zh) * 2021-11-19 2022-04-15 科大讯飞股份有限公司 数据备份方法、装置、设备、系统及存储介质
CN114281349A (zh) * 2021-12-28 2022-04-05 中国邮政储蓄银行股份有限公司 开源消息中间件RocketMQ集群的部署方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘尧等: "基于消息中间件的信息系统数据传输与同步设计", 《人民长江》, no. 18 *

Also Published As

Publication number Publication date
CN115269725B (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN106713487B (zh) 数据的同步方法和装置
CN106878473B (zh) 一种消息处理方法、服务器集群及系统
US9753954B2 (en) Data node fencing in a distributed file system
CN107832138B (zh) 一种扁平化的高可用namenode模型的实现方法
CN109101364B (zh) 双中心双活数据处理系统和方法
CN104036043B (zh) 一种mysql高可用的方法及管理节点
CN106933843B (zh) 数据库心跳检测方法以及装置
CN101136728A (zh) 群集系统和用于备份群集系统中的副本的方法
CN110795503A (zh) 分布式存储系统的多集群数据同步方法及相关装置
US20120278429A1 (en) Cluster system, synchronization controlling method, server, and synchronization controlling program
CN111597197B (zh) 数据库之间的数据对账方法和装置、存储介质及电子设备
CN113987064A (zh) 数据处理方法、系统及设备
US8527454B2 (en) Data replication using a shared resource
CN114253743A (zh) 消息同步方法、装置、节点及可读存储介质
CN114238495A (zh) 数据库主备集群切换方法、装置、计算机设备及存储介质
CN117130730A (zh) 面向联邦Kubernetes集群的元数据管理方法
CN110209526A (zh) 一种存储层同步系统、及存储介质
CN115277727A (zh) 一种数据灾备方法、系统、装置及存储介质
CN102946407B (zh) 在重新连接时传递非预期协作服务器响应
CN109495528A (zh) 分布式锁所有权调度方法和装置
CN112887367B (zh) 实现分布式集群高可用的方法、系统及计算机可读介质
CN115269725B (zh) 一种基于消息中间件集群的数据同步方法及系统
CN105007172A (zh) 一种hdfs高可用性方案的实现方法
CN116389233A (zh) 容器云管理平台主备切换系统、方法、装置和计算机设备
CN114328007B (zh) 一种容器备份还原方法、装置及其介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant