CN115617536A - 一种数据同步方法、装置、网络设备及集群 - Google Patents

一种数据同步方法、装置、网络设备及集群 Download PDF

Info

Publication number
CN115617536A
CN115617536A CN202110788795.7A CN202110788795A CN115617536A CN 115617536 A CN115617536 A CN 115617536A CN 202110788795 A CN202110788795 A CN 202110788795A CN 115617536 A CN115617536 A CN 115617536A
Authority
CN
China
Prior art keywords
message queue
cluster
update command
data
synchronization
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.)
Pending
Application number
CN202110788795.7A
Other languages
English (en)
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.)
China Mobile Communications Group Co Ltd
China Mobile IoT Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile IoT 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 China Mobile Communications Group Co Ltd, China Mobile IoT Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110788795.7A priority Critical patent/CN115617536A/zh
Publication of CN115617536A publication Critical patent/CN115617536A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种数据同步方法、装置、网络设备及集群,涉及数据同步领域。该方法包括:获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;根据所述同步参数,确定所述更新命令是否需要同步至第二集群;在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。本发明的方案,解决了现有技术中的集群数据同步方案难以实现增量数据同步,且难以实现只同步部分数据的问题。

Description

一种数据同步方法、装置、网络设备及集群
技术领域
本发明涉及数据同步领域,特别是指一种数据同步方法、装置、网络设备及集群。
背景技术
在构建远程字典服务(Remote Dictionary Server,Redis)集群机房双活过程中,增量数据双向同步是必须解决的问题,用于将两个机房各自的redis集群的增量数据同步到对方集群。
目前,redis集群增量数据同步主要是通过将主节点的增量日志同步到从节点,然后进行日志回放,从日志中解析出redis集群数据更新命令,再从节点中执行该命令,从而达到数据同步的目的。
然而,现有的redis集群增量数据同步存在如下诸多问题:
当主从集群断开连接,主集群会将增量日志存储在缓冲区中,而缓存区多数用内存实现,当断开时间较长,增量日志过大时,缓冲区难以存储所有增量日志,此时需要全量日志同步,且主集群数据量较大时,同步较为缓慢;
由于日志中无法标记数据来源,在主集群将日志同步到从集群,从集群通过该日志恢复数据时,也会将该数据记录进从集群的日志,此时便不能将从集群的数据同步到主集群;也就是说,现有方案只能用于单向同步场景,双向同步时则会发生死循环;只能实现热备,而不是实现双活;
在复杂场景下,redis集群中既会保存如客户信息之类的在两个集群中相同的数据,也会保存一些如内网IP之类的在两个集群中不同的数据;也就是说,现有方案只能同步所有数据,而难以区分场景,只同步需要同步的数据。
综上,现有技术中的难以实现增量数据同步,且难以实现只同步部分数据,,同步效率低,同步效果不理想。
发明内容
本发明的目的是提供一种数据同步方法、装置、网络设备及集群,解决了现有技术中的集群数据同步方案难以实现增量数据同步,且难以实现只同步部分数据的问题。
为达到上述目的,本发明的实施例提供一种数据同步方法,应用于第一网络设备,包括:
获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
可选地,所述数据同步方法还包括:
在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
可选地,将所述第一消息队列中的所述更新命令同步至第二消息队列,包括:
通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种数据同步方法,应用于第二网络设备,包括:
获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
可选地,所述数据同步方法还包括:
在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
可选地,将所述第三消息队列中的所述更新命令同步至第四消息队列,包括:
通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种数据同步方法,应用于第一集群,包括:
获取更新命令;
根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
可选地,所述获取目标消息队列中的更新命令,包括:
通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
根据所述第一数据,获得所述更新命令。
可选地,所述数据同步方法还包括:
将所述目标消息队列的消费偏移量保存至存储设备中。
可选地,所述数据同步方法还包括:
在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
为达到上述目的,本发明的实施例提供一种数据同步装置,应用于第一网络设备,包括:
第一获取模块,用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第一判断模块,用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
第一同步模块,用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
可选地,所述数据同步装置还包括:
第一发送模块,用于在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
可选地,所述第一同步模块包括:
第一同步单元,用于通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种数据同步装置,应用于第二网络设备,包括:
第二获取模块,用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第二判断模块,用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
第二同步模块,用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
可选地,所述数据同步装置还包括:
第二发送模块,用于在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
可选地,所述第二同步模块包括:
第一同步单元,用于通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种数据同步装置,应用于第一集群,包括:
命令获取模块,用于获取更新命令;
数据更新模块,用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述命令获取模块包括以下其中一项:
接收单元,用于接收第一网络设备发送的更新命令;
获取单元,用于获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
可选地,所述获取单元包括:
获取子单元,用于通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
解析子单元,用于根据所述第一数据,获得所述更新命令。
可选地,所述数据同步装置还包括:
存储模块,用于将所述目标消息队列的消费偏移量保存至存储设备中。
可选地,所述数据同步装置还包括:
偏移获取模块,用于在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
队列监听模块,用于根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
为达到上述目的,本发明的实施例提供一种网络设备,所述网络设备为第一网络设备,包括处理器和收发机,其中,
所述收发机用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
所述处理器还用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
可选地,所述处理器还用于:
在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
可选地,所述处理器在用于将所述第一消息队列中的所述更新命令同步至第二消息队列时,还具体用于:
通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种网络设备,所述网络设备为第二网络设备,包括处理器和收发机,其中,
所述收发机用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
所述处理器还用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
可选地,所述处理器还用于:
在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
可选地,所述处理器在用于将所述第三消息队列中的所述更新命令同步至第四消息队列时,还具体用于:
通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
为达到上述目的,本发明的实施例提供一种集群,所述集群为第一集群,包括处理器和收发机,其中,
所述收发机用于获取更新命令;
所述处理器用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
可选地,所述处理器在用于获取目标消息队列中的更新命令时,还具体用于:
通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
根据所述第一数据,获得所述更新命令。
可选地,所述处理器还用于:
将所述目标消息队列的消费偏移量保存至存储设备中。
可选地,所述处理器还用于:
在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
为达到上述目的,本发明的实施例提供一种网络设备,包括收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;所述处理器执行所程序或指令时实现如上所述的数据同步方法。
为达到上述目的,本发明的实施例提供一种集群,包括收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;所述处理器执行所程序或指令时实现如上所述的数据同步方法。
为达到上述目的,本发明的实施例提供一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的数据同步方法中的步骤。
本发明的上述技术方案的有益效果如下:
本发明实施例的方法,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
附图说明
图1为本发明实施例的数据同步方法的流程图;
图2为本发明实施例的数据同步方法的交互示意图;
图3为本发明另一实施例的数据同步方法的流程图;
图4为本发明又一实施例的数据同步方法的流程图;
图5为本发明实施例的网络设备的结构图;
图6为本发明另一实施例的网络设备的结构图;
图7为本发明实施例的集群的结构图;
图8为本发明实施例的数据同步装置的结构图;
图9为本发明另一实施例的数据同步装置的结构图;
图10为本发明又一实施例的数据同步装置的结构图;
图11为本发明又一实施例的网络设备的结构图;
图12为本发明另一实施例的集群的结构图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常可互换使用。
在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
如图1所示,本发明实施例的一种数据同步方法,应用于第一网络设备,包括:
步骤101,获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据。
该步骤中,当客户端(即用户设备)需要更新第一集群(例如集群A)中的数据时,客户端不与集群A直接相连,而是与第一网络设备(例如代理模块A)连接,这样,客户端可以将更新命令和同步标记(即同步参数)发送至代理模块A,从而由代理模块A确定所述更新命令是否需要同步至第二集群(例如集群B),以实现根据业务需求,在集群之间同步部分数据的目的。
其中,同步标记可以用于判断是否需要将更新命令同步到对端集群(例如集群B)。
步骤102,根据所述同步参数,确定所述更新命令是否需要同步至第二集群。
该步骤中,通过接收同步参数,可以根据同步参数确定是否需要对数据(即用户设备需要更新的数据,这里体现在更新命令中)进行同步,从而实现了根据业务场景只同步部分数据,解决了现有技术中采用同步日志数据及恢复日志数据的方式只能同步全量数据的问题。
步骤103,在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
该步骤中,第一消息队列(例如消息队列A)中的更新命令,可以通过同步模块(例如同步模块A)同步到与第二集群(例如集群B)相关的第二消息队列(例如消息队列A-)中。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
需要说明的是,该实施例中代理模块(例如第一网络设备)的实现过程可以是:启动HTTP服务监控端口,接收用户设备发送的更新命令及同步参数,并根据同步参数,将需要同步的数据写入消息队列A中,将不需要同步的数据直接写入集群A中。
可选地,所述数据同步方法还包括:
在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
也就是说,在接收到更新命令和同步参数后,可以将需要同步的更新命令发送到第一消息队列(例如消息队列A)中,而将不需要同步的更新命令直接写入第一集群(例如集群A)中。这样,即可实现根据业务场景对不同同步需求的数据进行区别处理,只同步部分数据,而不必同步全量数据,因此同步速度更快,同步效率更高。
可选地,将所述第一消息队列中的所述更新命令同步至第二消息队列,包括:
通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
该实施例中,同步模块(即消息队列数据同步模块)的作用为连接第一消息队列(例如消息队列A)和第二消息队列(例如消息队列A-),这样,同步模块可以作为消费者从消息队列A中消费消息,然后作为生产者向消息队列A-中发送消息。
综上所述,当客户端(即用户设备)需要更新第一集群(例如集群A)中的数据时,客户端可以不与集群A直接相连,而是与第一网络设备(例如代理模块A)连接。具体的,客户端可以将更新命令和同步参数发送至代理模块A,可以将需要同步的更新命令发送到第一消息队列(例如消息队列A)中,而将不需要同步的更新命令直接写入第一集群(例如集群A)中;回放模块(例如回放模块A)从消息队列A中消费更新命令,并将该更新命令写入集群A中,更新集群A中的数据;消息队列A中的更新命令通过同步模块可以同步到与集群B相关的第二消息队列(例如消息队列A-)中;回放模块(例如回放模块B)从消息队列A-中消费更新命令,并将该更新命令写入集群B中,以更新集群B中的数据。
相应的,当客户端需要更新第二集群(例如集群B)中的数据时,客户端可以不与集群B直接相连,而是与第二网络设备(例如代理模块B)连接。具体的,客户端可以将更新命令和同步参数发送至代理模块B,可以将需要同步的更新命令发送到第三消息队列(例如消息队列B)中,而将不需要同步的更新命令直接写入第二集群(例如集群B)中;回放模块B从消息队列B中消费更新命令,并将该更新命令写入集群B中,更新集群B中的数据;消息队列B中的更新命令可以通过同步模块同步到与集群A相关的第四消息队列(例如消息队列B-)中;回放模块A从消息队列B-消费更新命令,并将该更新命令写入集群A中,以更新集群A中的数据。
也就是说,回放模块A可以同时监听消息队列A和消息队列B-,因此回放模块A可以同时消费消息队列A和消息队列B-的消息,并将消息写入集群A中;回放模块B可以同时监听消息队列B和消息队列A-,因此回放模块B可以同时消费消息队列B和消息队列A-的消息,并将消息写入集群B中。如此,即可实现集群之间的数据双向同步。
下面对本申请实施例提供的方案进行具体举例说明。
如图2所示,第一集群为redis集群A,第二集群为redis集群B,消息队列为kafkatopic,其中,第一消息队列、第二消息队列、第三消息队列和第四消息队列分别表示为topicA、topicA-、topicB和topicB-,同步模块为topic同步工具,例如kafka mirror。
这里,需要说明的是,kafka是一种高吞吐量的分布式发布订阅消息系统,Kafkatopic是连接生产者和消费者的消息队列,Kafka mirror是一个kafka集群消息同步工具(即同步模块)。
其中,kafka topic收到消息后,会将消息持久化在硬盘中,保证消息的可靠性;在消费者消费kafka topic中的消息时,kafka会自动将消费消息的offset记录下来,并在消费者下次消费消息时,从offset处开始消费,避免重复消费和遗漏消费;Kafka mirror用于将一个kafka集群(例如redis集群A)中的数据同步到另一个kafka集群(例如redis集群B)中去。
两个集群间的同步过程详述如下:
(一)当客户端(例如客户端A)需要更新redis集群A的数据时,具体过程如下:
1)客户端连接代理模块A,将更新命令和同步参数发送至代理模块A,更新命令用于在redis集群中对数据进行更新。
2)代理模块A接收到更新命令和同步参数,并根据同步参数确定该更新命令是否需要同步至redis集群B:
若不需要,则将更新命令发送至redis集群A;
若需要,将更新命令发送到kafka topicA中。
3)回放模块A从kafka topicA中消费更新命令,并将更新命令写入redis集群A中,以更新redis集群A中的数据。
4)kafka topicA中的更新命令可以通过kafka mirror同步到kafka topic A-中。
5)回放模块B从kafka topicA-消费更新命令,并将更新命令写入redis集群B中,以更新redis集群B中的数据。
其中,redis命令回放模块(例如回放模块A、回放模块B),用于将接收到的更新命令在redis集群中进行回放。
(二)相应的,当客户端(例如客户端B)需要更新redis集群B中的数据时,具体过程如下:
1)客户端连接代理模块B,将更新命令和同步参数发送至代理模块B。
2)代理模块B接收到更新命令和同步参数,并根据同步参数确定该更新命令是否需要同步至redis集群A:
若不需要,则将更新命令发送至redis集群B;
若需要,将更新命令发送到kafka topicB中。
3)回放模块B从kafka topicB中消费更新命令,并将更新命令写入redis集群B中,以更新redis集群B中的数据。
4)kafka topicB中的更新命令可以通过kafka mirror同步到kafka topic B-中。
5)回放模块A从kafka topicB-消费更新命令,并将更新命令写入redis集群A中,以更新redis集群A中的数据。
上述实施例的应用场景可以是在建设机房双活过程中,通过本发明实施例提供的数据同步方法,redis集群A和redis集群B之间可以进行增量数据双向同步,保持数据一致性。
综上,现有技术采用同步日志数据及恢复日志数据的方式,与业务不相关,只能同步全量数据,而难以根据业务的复杂性控制只同步部分数据,也难以实现双向同步。而本发明实施例的数据同步方法,能够从业务角度出发,通过代理模块和回放模块,能够实现根据业务场景进行调整,选择同步部分数据或全量数据,实现了两个集群增量数据的双向同步,能够保持两个集群中数据的一致性,实现至少两个集群同时对外提供服务,因而本发明实施例的数据同步方法可以直接应用于两地三中心、同城双活等机房容灾建设项目中,实用性强,同步效率较高。
该实施例的数据同步方法,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图3所示,本发明实施例的一种数据同步方法,应用于第二网络设备,包括:
步骤301,获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
该步骤中,当客户端(即用户设备)需要更新第二集群(例如集群B)中的数据时,客户端不与集群B直接相连,而是与第二网络设备(例如代理模块B)连接,这样,客户端可以将更新命令和同步标记(即同步参数)发送至代理模块B,从而由代理模块B确定所述更新命令是否需要同步至第二集群(例如集群B),以实现根据业务需求,在集群之间同步部分数据的目的。
其中,同步标记可以用于判断是否需要将更新命令同步到对端集群(例如集群A)。
步骤302,根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
该步骤中,通过接收同步参数,可以根据同步参数确定是否需要对数据(即用户设备需要更新的数据,这里体现在更新命令中)进行同步,从而实现了根据业务场景只同步部分数据,解决了现有技术中采用同步日志数据及恢复日志数据的方式只能同步全量数据的问题。
步骤303,在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
该步骤中,第三消息队列(例如消息队列B)中的更新命令,可以通过同步模块(例如同步模块B)同步到与第一集群(例如集群A)相关的第四消息队列(例如消息队列B-)中。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
需要说明的是,该实施例中代理模块(例如第二网络设备)的实现过程可以是:启动HTTP服务监控端口,接收用户设备发送的更新命令及同步参数,并根据同步参数,将需要同步的数据写入消息队列B中,将不需要同步的数据直接写入集群B中。
可选地,所述数据同步方法还包括:
在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
也就是说,在接收到更新命令和同步参数后,可以将需要同步的更新命令发送到第三消息队列(例如消息队列B)中,而将不需要同步的更新命令直接写入第二集群(例如集群B)中。这样,即可实现根据业务场景对不同同步需求的数据进行区别处理,只同步部分数据,而不必同步全量数据,因此同步速度更快,同步效率更高。
可选地,将所述第三消息队列中的所述更新命令同步至第四消息队列,包括:
通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
该实施例中,同步模块(即消息队列数据同步模块)的作用为连接第三消息队列(例如消息队列B)和第四消息队列(例如消息队列B-),这样,同步模块可以作为消费者从消息队列B中消费消息,然后作为生产者向消息队列B-中发送消息。
该实施例的数据同步方法,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图4所示,本发明实施例的一种数据同步方法,应用于第一集群,包括:
步骤401,获取更新命令;
步骤402,根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
该实施例中,第一集群可以从不同来源获取更新命令,从第一网络设备获取到的为不需要同步到第二集群的更新命令,而从目标消息队列中后去到的则为需要同步到第二集群的更新命令以及从第二集群同步过来的更新命令,第一集群可以根据获取到的更新命令更新第一集群中的数据,实现了集群之间只同步部分数据,而不是只能同步全量数据;另外,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步。
可选地,所述获取目标消息队列中的更新命令,包括:
通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
根据所述第一数据,获得所述更新命令。
该实施例中,如图2所示,回放模块(例如回放模块A)可以从目标消息队列(即与所述第一集群相关的第一消息队列和第四消息队列,例如消息队列A或消息队列B-)中消费更新命令,并将更新命令写入第一集群(例如集群A)中,更新第一集群中的数据。具体的,第一集群与回放模块相连,通过回放模块可以监听目标消息队列,从目标消息队列中消费消息,从而在目标消息队列中的数据发生变化时,获取目标消息队列中新增的第一数据,并进一步解析第一数据,得到更新命令,将更新命令发送到第一集群,更新第一集群中的数据。
又例如,回放模块(例如回放模块B)从可以从目标消息队列(即与所述第二集群相关的第二消息队列和第三消息队列,例如消息队列A-或消息队列B)中消费更新命令,并将更新命令写入第二集群(例如集群B)中,更新第二集群中的数据。
也就是说,回放模块A可以同时监听消息队列A和消息队列B-,因此回放模块A可以同时消费消息队列A和消息队列B-的消息,并将消息写入集群A中;回放模块B可以同时监听消息队列B和消息队列A-,因此回放模块B可以同时消费消息队列B和消息队列A-的消息,并将消息写入集群B中。如此,即可实现集群之间的数据双向同步。
可选地,所述数据同步方法还包括:
将所述目标消息队列的消费偏移量保存至存储设备中。
需要说明的是,该实施例中的存储设备具体可以是高可用存储设备。具体的,在回放模块消费目标消息队列(例如消息队列A)中的数据时,也即通过回放模块获取目标消息队列中新增的第一数据时,可以通过回放模块将队列消息的偏移量(offset)记录入高可用存储设备中,以便在出现回放模块重启等情况时,能够根据高可用存储设备中存储的offset,从offset处继续消费目标消息队列中的消息,从而避免重复消费或遗漏消费。
可选地,所述数据同步方法还包括:
在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
该实施例中,当回放模块重启后,可以从存储设备(高可用存储设备)中获取上一次消费消息的offset,从offset处继续消费,避免重复消费或者遗漏消费。
此外,本发明实施例中的消息队列可以单独部署,能够做到动态调整容量,这样,即使回放模块宕机时间较长,只要消息队列中的数据不丢失,在回放模块再次启动之后,仍然可以只消费增量数据,而不必重新同步全量数据。
该实施例的数据同步方法,集群可以从不同来源获取更新命令,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图5所示,本发明实施例的一种网络设备500,包括处理器510和收发机520,其中,
所述收发机用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
所述处理器还用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
可选地,所述处理器还用于:
在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
可选地,所述处理器在用于将所述第一消息队列中的所述更新命令同步至第二消息队列时,还具体用于:
通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
该实施例的网络设备,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图6所示,本发明实施例的一种网络设备600,包括处理器610和收发机620,其中,
所述收发机用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
所述处理器还用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
可选地,所述处理器还用于:
在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
可选地,所述处理器在用于将所述第三消息队列中的所述更新命令同步至第四消息队列时,还具体用于:
通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
该实施例的网络设备,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图7所示,本发明实施例的一种集群700,包括处理器710和收发机720,其中,
所述收发机用于获取更新命令;
所述处理器用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
该实施例中,第一集群可以从不同来源获取更新命令,从第一网络设备获取到的为不需要同步到第二集群的更新命令,而从目标消息队列中后去到的则为需要同步到第二集群的更新命令以及从第二集群同步过来的更新命令,第一集群可以根据获取到的更新命令更新第一集群中的数据,实现了集群之间只同步部分数据,而不是只能同步全量数据;另外,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步。
可选地,所述处理器在用于获取目标消息队列中的更新命令时,还具体用于:
通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
根据所述第一数据,获得所述更新命令。
可选地,所述处理器还用于:
将所述目标消息队列的消费偏移量保存至存储设备中。
可选地,所述处理器还用于:
在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
该实施例的集群,集群可以从不同来源获取更新命令,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图8所示,本发明实施例的一种数据同步装置,应用于第一网络设备,包括:
第一获取模块810,用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第一判断模块820,用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
第一同步模块830,用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
可选地,所述数据同步装置还包括:
第一发送模块,用于在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
可选地,所述第一同步模块830包括:
同步单元,用于通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
该实施例的数据同步装置,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图9所示,本发明实施例的一种数据同步装置,应用于第二网络设备,包括:
第二获取模块910,用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第二判断模块920,用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
第二同步模块930,用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
该实施例中,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步;此外,通过同步参数来判断是否需要将数据同步至其他集群,能够实现集群之间只同步部分数据。
可选地,所述数据同步装置还包括:
第二发送模块,用于在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
可选地,所述第二同步模块930包括:
第一同步单元,用于通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
该实施例的数据同步装置,通过设置同步参数,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
如图10所示,本发明实施例的一种数据同步装置,应用于第一集群,包括:
命令获取模块1010,用于获取更新命令;
数据更新模块1020,用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述命令获取模块包括以下其中一项:
接收单元,用于接收第一网络设备发送的更新命令;
获取单元,用于获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
该实施例中,第一集群可以从不同来源获取更新命令,从第一网络设备获取到的为不需要同步到第二集群的更新命令,而从目标消息队列中后去到的则为需要同步到第二集群的更新命令以及从第二集群同步过来的更新命令,第一集群可以根据获取到的更新命令更新第一集群中的数据,实现了集群之间只同步部分数据,而不是只能同步全量数据;另外,通过使用消息队列,可以对需要同步的增量数据进行暂存,由于消息队列可以将数据持久化到硬盘,能够保存大量数据,因此,即使集群之间断开连接持续较长时间,仍然能够实现集群间的增量数据同步。
可选地,所述获取单元包括:
获取子单元,用于通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
解析子单元,用于根据所述第一数据,获得所述更新命令。
可选地,所述数据同步装置还包括:
存储模块,用于将所述目标消息队列的消费偏移量保存至存储设备中。
可选地,所述数据同步装置还包括:
偏移获取模块,用于在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
队列监听模块,用于根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
该实施例的数据同步装置,可以从不同来源获取更新命令,实现了根据业务场景只同步部分数据,而不必同步全量数据,提升了同步效率;通过消息队列和回放模块,实现了即使两个集群之间断开连接持续较长时间,仍然能够进行增量数据同步;通过消息队列,实现了两个集群增量数据双向同步,能够保持两个集群的数据一致性,使得两个集群能够同时对外提供服务。
本发明另一实施例的网络设备,如图11所示,包括收发器1110、处理器1100、存储器1120及存储在所述存储器1120上并可在所述处理器1100上运行的程序或指令;所述处理器1100执行所述程序或指令时实现上述应用于第一网络设备的数据同步方法,或者实现上述应用于第二网络设备的数据同步方法。
所述收发器1110,用于在处理器1100的控制下接收和发送数据。
其中,在图11中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1100代表的一个或多个处理器和存储器1120代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器1110可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。处理器1100负责管理总线架构和通常的处理,存储器1120可以存储处理器1100在执行操作时所使用的数据。
本发明另一实施例的集群,如图12所示,包括收发器1210、处理器1200、存储器1220及存储在所述存储器1220上并可在所述处理器1200上运行的程序或指令;所述处理器1200执行所述程序或指令时实现上述应用于第一集群的数据同步方法。
所述收发器1210,用于在处理器1200的控制下接收和发送数据。
其中,在图12中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1200代表的一个或多个处理器和存储器1220代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器1210可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。处理器1200负责管理总线架构和通常的处理,存储器1220可以存储处理器1200在执行操作时所使用的数据。
本发明实施例的一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的数据同步方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
进一步需要说明的是,此说明书中所描述的终端包括但不限于智能手机、平板电脑等,且所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
上述范例性实施例是参考该些附图来描述的,许多不同的形式和实施例是可行而不偏离本发明精神及教示,因此,本发明不应被建构成为在此所提出范例性实施例的限制。更确切地说,这些范例性实施例被提供以使得本发明会是完善又完整,且会将本发明范围传达给那些熟知此项技术的人士。在该些图式中,组件尺寸及相对尺寸也许基于清晰起见而被夸大。在此所使用的术语只是基于描述特定范例性实施例目的,并无意成为限制用。如在此所使用地,除非该内文清楚地另有所指,否则该单数形式“一”、“一个”和“该”是意欲将该些多个形式也纳入。会进一步了解到该些术语“包含”及/或“包括”在使用于本说明书时,表示所述特征、整数、步骤、操作、构件及/或组件的存在,但不排除一或更多其它特征、整数、步骤、操作、构件、组件及/或其族群的存在或增加。除非另有所示,陈述时,一值范围包含该范围的上下限及其间的任何子范围。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (19)

1.一种数据同步方法,应用于第一网络设备,其特征在于,包括:
获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
2.根据权利要求1所述的数据同步方法,其特征在于,还包括:
在所述更新命令不需要同步至所述第二集群的情况下,将所述更新命令发送至所述第一集群。
3.根据权利要求1所述的数据同步方法,其特征在于,将所述第一消息队列中的所述更新命令同步至第二消息队列,包括:
通过同步模块,将所述第一消息队列中的所述更新命令同步至第二消息队列;其中,所述第一消息队列与所述第二消息队列通过所述同步模块通信连接。
4.一种数据同步方法,应用于第二网络设备,其特征在于,包括:
获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
5.根据权利要求4所述的数据同步方法,其特征在于,还包括:
在所述更新命令不需要同步至所述第一集群的情况下,将所述更新命令发送至所述第二集群。
6.根据权利要求4所述的数据同步方法,其特征在于,将所述第三消息队列中的所述更新命令同步至第四消息队列,包括:
通过同步模块,将所述第三消息队列中的所述更新命令同步至第四消息队列;其中,所述第三消息队列与所述第四消息队列通过所述同步模块通信连接。
7.一种数据同步方法,应用于第一集群,其特征在于,包括:
获取更新命令;
根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
8.根据权利要求7所述的数据同步方法,其特征在于,所述获取目标消息队列中的更新命令,包括:
通过回放模块监听目标消息队列,在所述目标消息队列中的数据发生变化的情况下,获取所述目标消息队列中新增的第一数据;
根据所述第一数据,获得所述更新命令。
9.根据权利要求8所述的数据同步方法,其特征在于,还包括:
将所述目标消息队列的消费偏移量保存至存储设备中。
10.根据权利要求9所述的数据同步方法,其特征在于,还包括:
在所述回放模块重启之后,从所述存储设备中获取所述消费偏移量;
根据所述消费偏移量,通过所述回放模块对所述目标消息队列进行监听。
11.一种数据同步装置,应用于第一网络设备,其特征在于,包括:
第一获取模块,用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第一判断模块,用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
第一同步模块,用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
12.一种数据同步装置,应用于第二网络设备,其特征在于,包括:
第二获取模块,用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
第二判断模块,用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
第二同步模块,用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
13.一种数据同步装置,应用于第一集群,其特征在于,包括:
命令获取模块,用于获取更新命令;
数据更新模块,用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述命令获取模块包括以下其中一项:
接收单元,用于接收第一网络设备发送的更新命令;
获取单元,用于获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
14.一种网络设备,所述网络设备为第一网络设备,其特征在于,包括:收发机和处理器;
所述收发机用于获取用户设备发送的与第一集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第二集群;
所述处理器还用于在所述更新命令需要同步至所述第二集群的情况下,将所述更新命令发送至第一消息队列,并将所述第一消息队列中的所述更新命令同步至第二消息队列;
其中,所述第一消息队列为与所述第一集群相关的消息队列,所述第二消息队列与所述第二集群相关的消息队列。
15.一种网络设备,所述网络设备为第一网络设备,其特征在于,包括:收发机和处理器;
所述收发机用于获取用户设备发送的与第二集群相关的更新命令和同步参数,所述更新命令用于指示更新集群中的数据;
所述处理器用于根据所述同步参数,确定所述更新命令是否需要同步至第一集群;
所述处理器还用于在所述更新命令需要同步至所述第一集群的情况下,将所述更新命令发送至第三消息队列,并将所述第三消息队列中的所述更新命令同步至第四消息队列;
其中,所述第三消息队列为与所述第二集群相关的消息队列,所述第四消息队列与所述第一集群相关的消息队列。
16.一种集群,所述集群为第一集群,其特征在于,包括:收发机和处理器;
所述收发机用于获取更新命令;
所述处理器用于根据所述更新命令,更新所述第一集群中的数据;
其中,所述获取更新命令,包括以下其中一项:
接收第一网络设备发送的更新命令;
获取目标消息队列中的更新命令,所述目标消息队列包括与所述第一集群相关的第一消息队列和第四消息队列,且所述第四消息队列与第三消息队列通过同步模块通信连接,所述第三消息队列为与第二集群相关的消息队列。
17.一种网络设备,包括:收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;其特征在于,所述处理器执行所述程序或指令时实现如权利要求1至3任一项所述的数据同步方法,或者如权利要求4至6任一项所述的数据同步方法。
18.一种集群,包括:收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;其特征在于,所述处理器执行所述程序或指令时实现如权利要求7至10任一项所述的数据同步方法。
19.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1至3任一项所述的数据同步方法中的步骤,或者如权利要求4至6任一项所述的数据同步方法中的步骤,或者如权利要求7至10任一项所述的数据同步方法中的步骤。
CN202110788795.7A 2021-07-13 2021-07-13 一种数据同步方法、装置、网络设备及集群 Pending CN115617536A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110788795.7A CN115617536A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、网络设备及集群

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110788795.7A CN115617536A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、网络设备及集群

Publications (1)

Publication Number Publication Date
CN115617536A true CN115617536A (zh) 2023-01-17

Family

ID=84855926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110788795.7A Pending CN115617536A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、网络设备及集群

Country Status (1)

Country Link
CN (1) CN115617536A (zh)

Similar Documents

Publication Publication Date Title
CN102088490B (zh) 数据存储方法、设备和系统
CN101625568B (zh) 一种基于数据同步控制器的主控单元热备份系统和实现方法
CN101826916A (zh) Ir口主备倒换方法、系统及设备
CN105530220B (zh) 基于opc实现两种不同协议系统通信的接口方法
CN110099084B (zh) 一种保证存储服务可用性的方法、系统及计算机可读介质
CN111432025B (zh) 一种面向云边协同的分布式服务目录管理方法及系统
CN112612851B (zh) 多中心数据同步方法及装置
CN112583512B (zh) 一种时间同步装置和方法
CN101458637A (zh) 一种实现进程通信的方法、装置及系统
CN110232053B (zh) 日志处理方法、相关设备及系统
JP2007535206A (ja) ホーム・ロケーション・レジスタにデータ冗長性を持たせる方法
WO2019011063A1 (zh) 二乘二取二系统同步方法及计算机设备
CN110572228B (zh) 同步信息传输方法、装置、相关设备及存储介质
CN115617536A (zh) 一种数据同步方法、装置、网络设备及集群
CN117271668A (zh) 一种数据同步方法、装置、设备及计算机可读存储介质
CN109257403B (zh) 数据存储方法及设备、分布式存储系统
EP2447824A1 (en) Data remote synchronization system
CN115292293A (zh) 分布式缓存系统的数据迁移方法和装置
CN115705267A (zh) 监控采集设备、基于监控采集设备的主备切换方法及系统
CN116016555A (zh) 一种消息同步方法、装置、设备及计算机存储介质
CN115705269A (zh) 数据同步方法、系统、服务器及存储介质
CN112732482A (zh) 一种cifs业务备份切换方法、装置、设备及可读存储介质
CN117827544B (zh) 热备份系统、方法、电子设备及存储介质
CN117591582A (zh) 重力储能数据采集的方法、装置及电子设备
CN114189547B (zh) 一种集群下ssl隧道快速切换方法

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