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

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

Info

Publication number
CN115238005A
CN115238005A CN202210878137.1A CN202210878137A CN115238005A CN 115238005 A CN115238005 A CN 115238005A CN 202210878137 A CN202210878137 A CN 202210878137A CN 115238005 A CN115238005 A CN 115238005A
Authority
CN
China
Prior art keywords
data
node
slave
synchronization
cluster
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
CN202210878137.1A
Other languages
English (en)
Other versions
CN115238005B (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 CN202210878137.1A priority Critical patent/CN115238005B/zh
Publication of CN115238005A publication Critical patent/CN115238005A/zh
Application granted granted Critical
Publication of CN115238005B publication Critical patent/CN115238005B/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
    • G06F16/275Synchronous replication
    • 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/547Remote procedure calls [RPC]; Web services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于消息中间件集群的数据同步方法及系统,其中,该基于消息中间件集群的数据同步方法包括:为消息中间件集群配置一个主节点以及多个从节点,从节点包括本地从节点以及虚拟从节点,其中,每一数据中心配置有一消息中间件集群;接收目标消息中间件集群的节点注册请求,从配置的虚拟从节点中,为目标消息中间件集群分配虚拟从节点,构建配置的本地从节点以及分配的虚拟从节点的同步节点集;维护同步节点集;在接收到生产者上传的生产数据后,存储至主节点,将生产数据的副本同步至维护的所述同步节点集中的各从节点,以使从节点对获取的同步数据进行重命名,存储重命名的同步数据。可以实现多数据中心的数据同步,降低数据损失。

Description

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

Claims (10)

1.一种基于消息中间件集群的数据同步方法,其特征在于,包括:
为消息中间件集群配置一个主节点以及多个从节点,所述从节点包括本地从节点以及虚拟从节点,其中,每一数据中心配置有一消息中间件集群;
接收目标消息中间件集群的节点注册请求,从配置的虚拟从节点中,为所述目标消息中间件集群分配虚拟从节点,构建配置的本地从节点以及分配的虚拟从节点的同步节点集;
维护所述同步节点集;
在接收到生产者上传的生产数据后,存储至所述主节点,将生产数据的副本同步至维护的所述同步节点集中的各从节点,以使从节点对获取的同步数据进行重命名,存储重命名的同步数据。
2.根据权利要求1所述的方法,其特征在于,所述对获取的同步数据进行重命名,包括:
在获取的同步数据的名称前,添加获取该同步数据的消息中间件集群名称。
3.根据权利要求1所述的方法,其特征在于,在所述维护所述同步节点集的步骤之后,所述方法还包括:
在检测到当前数据中心的消息中间件集群发生异常后,依据维护的所述同步节点集,选举一从节点接管发生异常的消息中间件集群。
4.根据权利要求3所述的方法,其特征在于,在所述选举一从节点接管发生异常的消息中间件集群的步骤之后,所述方法还包括:
设置选举的从节点的运行状态为只读。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述为消息中间件集群配置一个主节点以及多个从节点,包括:
在消息中间件集群中,设置本地主节点、本地从节点以及虚拟从节点,所述本地从节点为所述消息中间件集群中的节点,所述虚拟从节点用于配置除所述消息中间件集群之外的其它消息中间件集群中的节点,本地主节点存储生产者的上传数据,并将存储的上传数据的副本同步至本地从节点以及虚拟从节点。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述将生产数据的副本同步至维护的所述同步节点集中的各从节点,包括:
针对所述同步节点集中的每一从节点,查询从节点数据偏移记录集,获取该从节点的数据偏移记录值;
从所述主节点存储的数据中,将数据偏移记录值往后的数据同步至该从节点,更新该从节点的数据偏移记录值。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述将生产数据的副本同步至维护的所述同步节点集中的各从节点,包括:
针对所述同步节点集中的每一从节点,获取自上一次同步该从节点的数据后,存储生产者上传数据时生成的针对该从节点的写操作日志;
将存储的写操作日志发送至对应的从节点,以使所述从节点从存储所述写操作日志的消息中间件集群中,拉取所述写操作日志对应的数据。
8.一种基于消息中间件集群的数据同步装置,其特征在于,包括:
节点配置模块,用于为消息中间件集群配置一个主节点以及多个从节点,所述从节点包括本地从节点以及虚拟从节点,其中,每一数据中心配置有一消息中间件集群;
节点分配模块,用于接收目标消息中间件集群的节点注册请求,从配置的虚拟从节点中,为所述目标消息中间件集群分配虚拟从节点,构建配置的本地从节点以及分配的虚拟从节点的同步节点集;
节点维护模块,用于维护所述同步节点集;
数据同步模块,用于在接收到生产者上传的生产数据后,存储至所述主节点,将生产数据的副本同步至维护的所述同步节点集中的各从节点,以使从节点对获取的同步数据进行重命名,存储重命名的同步数据。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的基于消息中间件集群的数据同步方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的基于消息中间件集群的数据同步方法的步骤。
CN202210878137.1A 2022-07-25 2022-07-25 一种基于消息中间件集群的数据同步方法及系统 Active CN115238005B (zh)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN115238005A true CN115238005A (zh) 2022-10-25
CN115238005B CN115238005B (zh) 2023-04-28

Family

ID=83674469

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN115238005B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120143829A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Notification of configuration updates in a cluster system
CN106126349A (zh) * 2016-06-14 2016-11-16 浪潮电子信息产业股份有限公司 一种远程调用方法、消息中间件集群及系统
CN109361777A (zh) * 2018-12-18 2019-02-19 广东浪潮大数据研究有限公司 分布式集群节点状态的同步方法、同步系统及相关装置
US20200364114A1 (en) * 2017-11-21 2020-11-19 Beijing Kingsoft Cloud Network Technology Co., Ltd. Node Down Recovery Method and Apparatus, Electronic Device, and Storage Medium
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集群的部署方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120143829A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Notification of configuration updates in a cluster system
CN106126349A (zh) * 2016-06-14 2016-11-16 浪潮电子信息产业股份有限公司 一种远程调用方法、消息中间件集群及系统
US20200364114A1 (en) * 2017-11-21 2020-11-19 Beijing Kingsoft Cloud Network Technology Co., Ltd. Node Down Recovery Method and Apparatus, Electronic Device, and Storage Medium
CN109361777A (zh) * 2018-12-18 2019-02-19 广东浪潮大数据研究有限公司 分布式集群节点状态的同步方法、同步系统及相关装置
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集群的部署方法及装置

Also Published As

Publication number Publication date
CN115238005B (zh) 2023-04-28

Similar Documents

Publication Publication Date Title
CN106713487B (zh) 数据的同步方法和装置
CN101539873B (zh) 数据恢复的方法、数据节点及分布式文件系统
CN101136728A (zh) 群集系统和用于备份群集系统中的副本的方法
CN104036043B (zh) 一种mysql高可用的方法及管理节点
CN103840961A (zh) 双机热备份系统
CN111597197B (zh) 数据库之间的数据对账方法和装置、存储介质及电子设备
CN107430606A (zh) 具有并行持久性的消息代理系统
CN105830033A (zh) 用于在分布式数据网格中支持持久存储装置版本化和完整性的系统和方法
CN107329859B (zh) 一种数据保护方法及存储设备
CN111966467B (zh) 基于kubernetes容器平台灾备的方法及装置
CN113688035B (zh) 一种基于沙箱环境的数据库双活中心验证方法及系统
US8527454B2 (en) Data replication using a shared resource
CN108810150B (zh) 协同办公系统应用级灾备系统的数据复制方法
CN101594256A (zh) 容灾方法、装置和系统
JP2019191843A (ja) 接続制御プログラム、接続制御方法、及び接続制御装置
CN112190924A (zh) 一种数据容灾方法、装置及计算机可读介质
CN107135097A (zh) 基于簿记建档的容灾系统及容灾方法
CN115878384A (zh) 一种基于备份容灾系统的分布式集群及构建方法
CN114253743A (zh) 消息同步方法、装置、节点及可读存储介质
CN110209526A (zh) 一种存储层同步系统、及存储介质
CN104516795A (zh) 一种数据存取方法及系统
CN116521083A (zh) 一种分布式存储集群数据的存储方法、装置及介质
CN114579671A (zh) 集群间数据同步方法及装置
CN116389233B (zh) 容器云管理平台主备切换系统、方法、装置和计算机设备
CN111737043B (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