多集群间数据同步的方法及装置与流程
未命名
07-26
阅读:88
评论:0
1.本发明涉及云计算技术领域,尤其涉及多集群间数据同步的方法及装置。
背景技术:
2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.在redis集群之间的数据双向同步中,需要是两个集群中的某一个(或几个)节点之间的数据同步。需要能够确定哪些节点拥有可以代表该集群的最新已提交数据。在redis集群中,可以使用主节点作为集群间数据同步的节点。
4.由于redis集群是可能发生主从切换的,此时需要将节点切换的信息通知给其他集群
5.新的主节点上需要有被切下去的主节点上,关于同步工作的状态信息数据,以便恢复同步现场。其中,需要同步的数据包括存量数据和增量数据,存量数据是在同步开始之前,源集群已经存在的数据,即源集群数据的快照。这些数据是同步开始之前就已经存在的,因此没有时间戳,不属于“日志”。增量数据是指同步开始之后,源集群继续接受客户端写入新的数据,将在存量数据同步完成后,按照源集群接受新数据的顺序向目标集群传送新的,带有时间戳的日志数据。
6.对于双向同步的数据,每个集群既为发送方,也是接收方,则要求自己集群和对方集群在数据冲突时,能够以某种原则保持数据的一致性。
7.现有技术中,有采用开源方案实现的dynomite,见图1,通过代理层接受数据后写入各个需要同步的节点。但是该开源方案中,客户端需要优化添加dyno client(例如基于hash切分的redis集群方案就需要接入)服务端每个节点需要部署dyno node,数据存在冗余同步(无需同步的数据会被纳入同步),如果不冗余就需要接入方标准不一致,运维不统一(有些部署dynomite,有些不部署),read/write性能较原生差异较大,主要体现在write上,之间的差异随着node节点数越多越严重。
8.现有技术中,业内流行的架构方案见图2,所有的数据写入到redis,数据同步对业务层透明,主要包括redis事件监听及写入服务、mq及消息同步组件。但是,该架构方案被动监听同步日志,延时高;对于冲突的键值无法处理,只能数据隔离,当需要数据共享时,只能通过业务代码处理;架构复杂,故障转移恢复需要人工干预。
9.综上,目前存在一种不入侵原来的redis集群及其业务、且能够保证数据双向同步的最终一致性的多缓存集群间数据复制方案。
技术实现要素:
10.本发明实施例提供一种多集群间数据同步的方法,能够不入侵原来的redis集群及其业务、且能够保证数据双向同步的最终一致性,该方法应用于多个集群中每个集群,包括:
11.在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;
12.若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;
13.将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;
14.当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;
15.从该集群的发送的缓存和接收的缓存中读取增量数据;
16.合并读取的增量数据。
17.本发明实施例还提供一种多集群间数据同步的装置,能够不入侵原来的redis集群及其业务、且能够保证数据双向同步的最终一致性,该装置应用于多个集群中每个集群,包括:
18.数据请求接收模块,用于在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;
19.增量数据确定模块,用于若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;
20.发送的缓存处理模块,用于将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;
21.接收的缓存处理模块,用于当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;
22.增量数据读取模块,用于从该集群的发送的缓存和接收的缓存中读取增量数据;
23.增量数据合并模块,用于合并读取的增量数据。
24.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述多集群间数据同步的方法。
25.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述多集群间数据同步的方法。
26.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述多集群间数据同步的方法。
27.本发明实施例中,在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;从该集群的发送的缓存和接收的缓存中读取增量数据;合并读取的增量数据。与现有技术中采用开源方案和架构方案的技术方案相比,通过设置发送的缓存和接收的缓存,在集群间建立可恢复、具有高可用性
的双向复制,在不侵入客户端、不侵入原集群复制协议的情况下达成集群间的高可用和数据共享,业务无需改造或安装agent,客户端访问单个集群方式维持不变,单个redis集群内部的主从复制、主从切换不受影响;另外,可以进行数据的双向同步,可以为不同的集群之间的数据提供共享,能够处理冲突的键值,使得同步的集群之间,数据在经过一段用户可接受的时间后,数据保持一致。
附图说明
28.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
29.图1为现有技术开源方案实现的dynomite的示意图;
30.图2为现有技术业内流行的架构方案的示意图;
31.图3为本发明实施例中多集群间数据同步的方法的流程图;
32.图4为本发明实施例中按照数据同步报文格式进行增量数据传递的示意图;
33.图5为本发明实施例中发送的缓存的示意图;
34.图6为本发明实施例中接收的缓存的示意图;
35.图7为本发明实施例中多几个集群主从切换的示意图;
36.图8为本发明实施例中多集群间数据同步的装置的示意图;
37.图9为本发明实施例中计算机设备的示意图。
具体实施方式
38.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
39.首先对本发明涉及的术语进行解释。
40.redis集群:多台redis服务器,以6台为例,通过hash分片,将数据分布在三组、每组两台服务器上,其中每组占约1/3的数据,每组内部分为主服务器和从服务器,通常主服务器负责一切写请求,从服务器从主服务器上同步数据,可以负责响应读请求,也可以是单纯的备份。当主服务器出现故障时,从服务器可以晋升为主服务器。
41.日志:在分布式系统中的数据即为日志。数据一致性即为分布式集群依照协议共同认可相同的日志。
42.图3为本发明实施例中多集群间数据同步的方法的流程图,包括:
43.步骤301,在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;
44.步骤302,若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;
45.步骤303,将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;
46.步骤304,当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标
识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存,以避免增量数据从曾经途径过的集群再次出发,增量数据的路径形成环路;
47.步骤305,从该集群的发送的缓存和接收的缓存中读取增量数据;
48.步骤306,合并读取的增量数据。
49.在本发明实施例中,与现有技术中采用开源方案和架构方案的技术方案相比,通过设置发送的缓存和接收的缓存,在集群间建立可恢复、具有高可用性的双向复制,在不侵入客户端、不侵入原集群复制协议的情况下达成集群间的高可用和数据共享;另外,可以进行数据的双向同步,可以为不同的集群之间的数据提供共享。
50.在一实施例中,所述方法还包括:
51.确定集群间的数据同步报文格式,所述数据同步格式包括集群间复制协议标识、源集群的唯一标识、需要同步的增量数据、源集群的数据库标识、执行数据同步的时间戳。
52.所述数据同步报文格式如下:
53.rreplayuuid_source_cluster[rreplayuuid_source_cluster
…
](origin_redis_command)dbid_source_clustertimestamp
[0054]
其中,rreplay为集群间复制协议标识;
[0055]
uuid_source_cluster为源集群的唯一标识;
[0056]
origin_redis_command:为增量数据,例如可以是数据记录的原始redis命令,字符串形式,如“setab”;
[0057]
dbid_source_cluster为源集群的数据库标识;
[0058]
timestamp为执行数据同步的时间戳。
[0059]
图4为本发明实施例中按照数据同步报文格式进行增量数据传递的示意图。在本发明实施例中,一个集群向另一个集群发送一次增量数据,为一跳增量数据。
[0060]
在一实施例中,发送的缓存和接收的缓存为环形缓存,命名为backlog。
[0061]
在一实施例中,将需要同步的增量数据存入该集群的发送的缓存,包括:
[0062]
将需要同步的增量数据存入该集群的发送的缓存时,记录写入位置master_backlog_offset;
[0063]
记录向每个其他集群发送增量数据的位置。
[0064]
在一实施例中,将增量数据存入该集群与该其他集群对应的接收的缓存,包括:
[0065]
在将增量数据存入该集群与该其他集群对应的接收的缓存时,记录接收增量数据的位置,其中,所述接收增量数据的位置,与该其他集群对应的发送的缓存中,向该其他集群发送增量数据的位置一致。
[0066]
以三个集群间的双向同步为例,则每个集群都要维护三个backlog。其中,backlog的结构是一个环形缓存,图5为本发明实施例中发送的缓存的示意图,为集群a的本地backlog,向集群b、c发送自己的增量数据,当集群a获得需要同步的增量数据,所写增量数据按照顺序存入backlog中,记录写入位置master_backlog_offset。repl_backlog_offset_x用于记录向集群x发送增量数据的位置,repl_backlog_offset_x永远落后或者等于master_backlog_offset。
[0067]
集群a发送增量数据时,假设接收数据方为集群b、c,在集群a中分别保存有两个集
群接收进度。在接受集群中也有一块环形缓存保存接收的数据,以集群c为例,图6为本发明实施例中接收的缓存的示意图,集群c接收来自集群a的增量数据,repl_backlog_offset_c的位置与集群a中的repl_backlog_offset_c相同。
[0068]
在一实施例中,每个集群包括主节点和多个从节点;
[0069]
其中,主节点向该集群中其他节点同步增量数据、发送的缓存和接收的缓存;
[0070]
所述方法还包括:
[0071]
在每个集群发生主从切换时,从节点代替主节点向其他集群发送增量数据以及接收增量数据。
[0072]
图7为本发明实施例中多几个集群主从切换的示意图,集群c接受来自两个集群a和b的数据,发出一份自己的数据分别给集群a和b,那么一个集群中有三个backlog,backlog-a、backlog-b和backlog-c。
[0073]
综上,n个集群间同步数据,每个节点都需要n个backlog作为数据同步的缓存。
[0074]
在一实施例中,所述方法还包括:
[0075]
在所述最新数据不在该集群对应的空间中时,将该集群中的数据同步至其他集群。
[0076]
上述步骤对应的是全量数据同步。
[0077]
在一实施例中,将该集群中的数据同步至其他集群,包括:
[0078]
使用redis的数据快照文件,将该集群中的数据同步至其他集群。
[0079]
在一实施例中,从该集群的发送的缓存和接收的缓存中读取增量数据,包括:
[0080]
按照数据同步报文格式中时间戳的顺序,从该集群的发送的缓存和接收的缓存中读取增量数据。
[0081]
在一实施例中,所述方法还包括:
[0082]
使用一致性同步时钟为多集群提供一致性的时间。
[0083]
综上所述,在本发明实施例提出的方法中,在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;从该集群的发送的缓存和接收的缓存中读取增量数据;合并读取的增量数据。与现有技术中采用开源方案和架构方案的技术方案相比,通过设置发送的缓存和接收的缓存,在集群间建立可恢复、具有高可用性的双向复制,在不侵入客户端、不侵入原集群复制协议的情况下达成集群间的高可用和数据共享,业务无需改造或安装agent,客户端访问单个集群方式维持不变,单个redis集群内部的主从复制、主从切换不受影响;另外,可以进行数据的双向同步,可以为不同的集群之间的数据提供共享,能够处理冲突的键值,使得同步的集群之间,数据在经过一段用户可接受的时间后,数据保持一致。另外,一致性的合并逻辑,保证多集群数据的最终一致性。
[0084]
本发明实施例还提出一种多集群间数据同步的装置,其原理与多集群间数据同步的方法类似,这里不再赘述。
[0085]
图8为本发明实施例中多集群间数据同步的装置的示意图之一,包括:
[0086]
数据请求接收模块801,用于在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;
[0087]
增量数据确定模块802,用于若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;
[0088]
发送的缓存处理模块803,用于将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;
[0089]
接收的缓存处理模块804,用于当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;
[0090]
增量数据读取模块805,用于从该集群的发送的缓存和接收的缓存中读取增量数据;
[0091]
增量数据合并模块806,用于合并读取的增量数据。
[0092]
在一实施例中,所述装置还包括报文格式确定模块807,用于:
[0093]
确定集群间的数据同步报文格式,所述数据同步格式包括集群间复制协议标识、源集群的唯一标识、需要同步的增量数据、源集群的数据库标识、执行数据同步的时间戳。
[0094]
在一实施例中,增量数据读取模块具体用于:
[0095]
按照数据同步报文格式中时间戳的顺序,从该集群的发送的缓存和接收的缓存中读取增量数据。
[0096]
在一实施例中,发送的缓存和接收的缓存为环形缓存。
[0097]
在一实施例中,发送的缓存处理模块具体用于:
[0098]
将需要同步的增量数据存入该集群的发送的缓存时,记录写入位置master_backlog_offset;
[0099]
记录向每个其他集群发送增量数据的位置。
[0100]
在一实施例中,接收的缓存处理模块具体用于:
[0101]
在将增量数据存入该集群与该其他集群对应的接收的缓存时,记录接收增量数据的位置,其中,所述接收增量数据的位置,与该其他集群对应的发送的缓存中,向该其他集群发送增量数据的位置一致。
[0102]
在一实施例中,每个集群包括主节点和多个从节点;
[0103]
其中,主节点向该集群中其他节点同步增量数据、发送的缓存和接收的缓存;
[0104]
所述装置还包括主从切换处理模块,用于:
[0105]
在每个集群发生主从切换时,从节点代替主节点向其他集群发送增量数据以及接收增量数据。
[0106]
在一实施例中,所述装置还包括全量数据处理模块808,用于:
[0107]
在所述最新数据不在该集群对应的空间中时,将该集群中的数据同步至其他集群。
[0108]
在一实施例中,全量数据处理模块具体用于:
[0109]
使用redis的数据快照文件,将该集群中的数据同步至其他集群。
[0110]
在一实施例中,所述装置还包括时钟一致模块809,用于:
[0111]
使用一致性同步时钟为多集群提供一致性的时间。
[0112]
综上所述,本发明实施例提出的装置中,数据请求接收模块,用于在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;增量数据确定模块,用于若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;发送的缓存处理模块,用于将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;接收的缓存处理模块,用于当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;增量数据读取模块,用于从该集群的发送的缓存和接收的缓存中读取增量数据;增量数据合并模块,用于合并读取的增量数据。与现有技术中采用开源方案和架构方案的技术方案相比,通过设置发送的缓存和接收的缓存,在集群间建立可恢复、具有高可用性的双向复制,在不侵入客户端、不侵入原集群复制协议的情况下达成集群间的高可用和数据共享,业务无需改造或安装agent,客户端访问单个集群方式维持不变,单个redis集群内部的主从复制、主从切换不受影响;另外,可以进行数据的双向同步,可以为不同的集群之间的数据提供共享,能够处理冲突的键值,使得同步的集群之间,数据在经过一段用户可接受的时间后,数据保持一致。另外,一致性的合并逻辑,保证多集群数据的最终一致性。
[0113]
本发明实施例还提供一种计算机设备,图9为本发明实施例中计算机设备的示意图,所述计算机设备900包括存储器910、处理器920及存储在存储器910上并可在处理器920上运行的计算机程序930,所述处理器920执行所述计算机程序930时实现上述水平多集群间数据同步的方法。
[0114]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述多集群间数据同步的方法。
[0115]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述多集群间数据同步的方法。
[0116]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0117]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0118]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0119]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0120]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种多集群间数据同步的方法,其特征在于,应用于多个集群中每个集群,包括:在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;从该集群的发送的缓存和接收的缓存中读取增量数据;合并读取的增量数据。2.如权利要求1所述的方法,其特征在于,还包括:确定集群间的数据同步报文格式,所述数据同步格式包括集群间复制协议标识、源集群的唯一标识、需要同步的增量数据、源集群的数据库标识、执行数据同步的时间戳。3.如权利要求2所述的方法,其特征在于,从该集群的发送的缓存和接收的缓存中读取增量数据,包括:按照数据同步报文格式中时间戳的顺序,从该集群的发送的缓存和接收的缓存中读取增量数据。4.如权利要求3所述的方法,其特征在于,发送的缓存和接收的缓存为环形缓存。5.如权利要求4所述的方法,其特征在于,将需要同步的增量数据存入该集群的发送的缓存,包括:将需要同步的增量数据存入该集群的发送的缓存时,记录写入位置;记录向每个其他集群发送增量数据的位置。6.如权利要求4所述的方法,其特征在于,将增量数据存入该集群与该其他集群对应的接收的缓存,包括:在将增量数据存入该集群与该其他集群对应的接收的缓存时,记录接收增量数据的位置,其中,所述接收增量数据的位置,与该其他集群对应的发送的缓存中,向该其他集群发送增量数据的位置一致。7.如权利要求1所述的方法,其特征在于,每个集群包括主节点和多个从节点;其中,主节点向该集群中其他节点同步增量数据、发送的缓存和接收的缓存;所述方法还包括:在每个集群发生主从切换时,从节点代替主节点向其他集群发送增量数据以及接收增量数据。8.如权利要求1所述的方法,其特征在于,还包括:在所述最新数据不在该集群对应的空间中时,将该集群中的数据同步至其他集群。9.如权利要求8所述的方法,其特征在于,将该集群中的数据同步至其他集群,包括:使用redis的数据快照文件,将该集群中的数据同步至其他集群。10.如权利要求1所述的方法,其特征在于,还包括:使用一致性同步时钟为多集群提供一致性的时间。11.一种多集群间数据同步的装置,其特征在于,应用于多个集群中每个集群,包括:
数据请求接收模块,用于在接收到其他集群发送的数据请求时,获得所述数据请求中的最新数据;增量数据确定模块,用于若所述最新数据在该集群对应的空间中,确定需要同步的增量数据;发送的缓存处理模块,用于将需要同步的增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;接收的缓存处理模块,用于当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;增量数据读取模块,用于从该集群的发送的缓存和接收的缓存中读取增量数据;增量数据合并模块,用于合并读取的增量数据。12.如权利要求11所述的装置,其特征在于,还包括报文格式确定模块,用于:确定集群间的数据同步报文格式,所述数据同步格式包括集群间复制协议标识、源集群的唯一标识、需要同步的增量数据、源集群的数据库标识、执行数据同步的时间戳。13.如权利要求12所述的装置,其特征在于,增量数据读取模块具体用于:按照数据同步报文格式中时间戳的顺序,从该集群的发送的缓存和接收的缓存中读取增量数据。14.如权利要求13所述的装置,其特征在于,发送的缓存和接收的缓存为环形缓存。15.如权利要求14所述的装置,其特征在于,发送的缓存处理模块具体用于:将需要同步的增量数据存入该集群的发送的缓存时,记录写入位置master_backlog_offset;记录向每个其他集群发送增量数据的位置。16.如权利要求14所述的装置,其特征在于,接收的缓存处理模块具体用于:在将增量数据存入该集群与该其他集群对应的接收的缓存时,记录接收增量数据的位置,其中,所述接收增量数据的位置,与该其他集群对应的发送的缓存中,向该其他集群发送增量数据的位置一致。17.如权利要求11所述的装置,其特征在于,每个集群包括主节点和多个从节点;其中,主节点向该集群中其他节点同步增量数据、发送的缓存和接收的缓存;所述装置还包括主从切换处理模块,用于:在每个集群发生主从切换时,从节点代替主节点向其他集群发送增量数据以及接收增量数据。18.如权利要求11所述的装置,其特征在于,还包括全量数据处理模块,用于:在所述最新数据不在该集群对应的空间中时,将该集群中的数据同步至其他集群。19.如权利要求18所述的装置,其特征在于,全量数据处理模块具体用于:使用redis的数据快照文件,将该集群中的数据同步至其他集群。20.如权利要求11所述的装置,其特征在于,还包括时钟一致模块,用于:使用一致性同步时钟为多集群提供一致性的时间。21.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10任一项所述
方法。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至10任一项所述方法。23.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至10任一项所述方法。
技术总结
本发明公开了一种多集群间数据同步的方法及装置,该方法包括:在接收到其他集群发送的数据请求时,获得数据请求中的最新数据;若最新数据在该集群对应的空间中,确定增量数据;将增量数据存入该集群的发送的缓存,并从发送的缓存中将所述增量数据同步至其他集群;当该集群接收到其他集群传递的一跳增量数据时,判断该集群的唯一标识是否在接收到的增量数据中;若是,丢弃该增量数据;若否,在增量数据的头部增加该集群的唯一标识后,将增量数据存入该集群与该其他集群对应的接收的缓存;从该集群的发送的缓存和接收的缓存中读取增量数据;合并增量数据。本发明能够不入侵原来的Redis集群及其业务、且能够保证数据双向同步的最终一致性。的最终一致性。的最终一致性。
技术研发人员:周莹
受保护的技术使用者:建信金融科技有限责任公司
技术研发日:2023.04.23
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
