CN112711630B - 数据同步方法、分布式缓存节点及系统、可读存储介质 - Google Patents
数据同步方法、分布式缓存节点及系统、可读存储介质 Download PDFInfo
- Publication number
- CN112711630B CN112711630B CN201911019185.XA CN201911019185A CN112711630B CN 112711630 B CN112711630 B CN 112711630B CN 201911019185 A CN201911019185 A CN 201911019185A CN 112711630 B CN112711630 B CN 112711630B
- Authority
- CN
- China
- Prior art keywords
- data
- destination node
- full
- node
- source node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000010076 replication Effects 0.000 claims abstract description 53
- 238000012795 verification Methods 0.000 claims description 35
- 238000013500 data storage Methods 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 claims description 18
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000969 carrier Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种数据同步方法、分布式缓存节点及系统、可读存储介质,所述数据同步方法包括:在确定进行数据同步的源节点以及目的节点之间建立连接;基于所述目的节点的数据复制请求,所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。本发明实施例中的技术方案可以提升数据同步的效率。
Description
技术领域
本发明实施例涉及计算机数据存储领域,尤其涉及一种数据同步方法、分布式缓存节点及系统、可读存储介质。
背景技术
随着计算机系统的发展,对数据存储载体的要求也越来越高。特别是互联网数据,由于用户众多,对数据存储性能的要求较高,Redis(REmote DIctionary Server)作为一种性能较好的键值(Key-Value,KV)数据库,得到了广泛应用。
现在,在进行Redis数据库的数据同步时,同步的数据为整个Redis节点的数据,数据同步效率低,且同步数据冗余较大。
发明内容
本发明实施例解决的问题是如何提升数据同步的效率。
为解决上述问题,本发明实施例提供一种用于源节点的数据同步方法,包括:在确定进行数据同步的源节点以及目的节点之间建立连接;基于所述目的节点的数据复制请求,所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。
可选的,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;所述源节点发送对应所述数据复制请求的数据至所述目的节点包括:基于所述目的节点的数据复制请求,所述源节点向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件;所述源节点在获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
可选的,所述基于所述目的节点的数据复制请求,所述源节点向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件,包括:响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照;获取所述源节点的全量数据快照中所述指定数据单位的全量数据;存储所述指定数据单位的全量数据至所述全量数据文件;所述源节点向所述目的节点发送所述全量数据文件。
可选的,所述源节点的子线程执行所述进行全量数据快照以及存储所述指定数据单位的全量数据至所述全量数据文件的操作,并在执行结束后,通知所述源节点的主线程,所述源节点的主线程执行向所述目的节点发送所述全量数据文件的操作。
可选的,所述源节点发送对应所述数据复制请求的数据至所述目的节点,还包括:所述源节点向所述目的节点发送所述增量数据之前,存储所述增量数据至所述源节点的缓存区;所述向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件,包括:获取所述源节点的缓存区存储的所述增量数据;发送包含所述增量数据的增量数据文件至所述目的节点。
可选的,还包括:响应于接收到所述目的节点发送的增量偏移量,所述源节点对所述目的节点进行数据同步校验,确定所述源节点以及所述目的节点的数据同步进度。
可选的,还包括:在所述建立连接后,所述源节点对所述目的节点进行密码校验,并确定验证通过。
本发明实施例还提供了一种用于目的节点的数据同步方法,包括:在确定进行数据同步的源节点以及目的节点之间建立连接;所述目的节点向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;响应于所述源节点发送所述指定数据单位的数据,所述目的节点接收并存储所述数据。
可选的,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;所述响应于所述源节点发送所述指定数据单位的数据,所述目的节点接收并存储所述数据,包括:响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,所述目的节点接收所述全量数据文件,解析所述全量数据文件,得到所述全量数据,并存储所述全量数据至所述目的节点的主数据库;响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,所述目的节点接收所述增量数据文件,解析所述增量数据文件,得到所述增量数据,并存储所述增量数据至所述目的节点的主数据库。
可选的,所述目的节点接收所述全量数据文件,解析所述全量数据文件,得到所述全量数据,并存储所述全量数据至所述目的节点的主数据库,包括:所述目的节点接收所述全量数据文件,并实时解析所述全量数据文件;实时存储解析所述全量数据文件得到的所述全量数据至所述目的节点的内存空间;存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
可选的,所述目的节点的子线程执行所述解析所述全量数据文件、以及存储所述内存地址至所述临时数据库的操作,并在执行结束后,通知所述目的节点的主线程,所述目的节点的主线程执行获取所述临时数据库中所述全量数据的内存地址、以及存储获取的所述内存地址至所述目的节点的主数据库的操作。
可选的,所述获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库包括:按照存储所述内存地址至所述临时数据库中的时间片,分批次获取所述临时数据库中所述全量数据的内存地址,并存储所述内存地址至所述目的节点的主数据库。
可选的,存储所述全量数据至所述目的节点的主数据库后,所述目的节点接收并存储所述数据,还包括:将所述目的节点的主数据库的全量数据同步至所述目的节点的备份数据库。
本发明实施例还提供了一种分布式缓存节点,适于作为数据同步的源节点,包括:数据存储单元,适于存储数据;第一连接建立单元,适于与确定进行数据同步的目的节点之间建立连接;请求接收单元,适于接收所述目的节点的数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;数据发送单元,适于发送对应所述数据复制请求的数据至所述目的节点。
可选的,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;所述数据发送单元包括:全量数据发送子单元,适于基于所述目的节点的数据复制请求,向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件;状态获取子单元,适于获取所述目的节点是否处于空闲状态;增量数据发送子单元,适于在所述状态获取子单元获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
可选的,所述数据发送单元还包括:存储子单元,适于在所述增量数据发送子单元向所述目的节点发送所述增量数据之前,存储所述增量数据至缓存区;
所述增量数据发送子单元包括:增量数据获取模块,适于获取所述缓存区存储的所述增量数据;增量数据发送模块,适于发送所述增量数据至所述目的节点。
可选的,所述全量数据发送子单元包括:全量数据快照模块,适于响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照;数据获取模块,适于获取所述源节点的全量数据快照中所述指定数据单位的全量数据;存储模块,适于存储所述指定数据单位的全量数据至所述全量数据文件;全量数据发送模块,适于向所述目的节点发送所述全量数据文件。
可选的,还包括:密码校验单元,适于在所述第一连接建立单元建立连接后,对所述目的节点进行密码校验。
可选的,还包括:增量偏移量接收单元,适于接收所述目的节点发送的增量偏移量;同步校验单元,适于基于所述增量偏移量,对所述目的节点进行数据同步校验,确定与所述目的节点的数据同步进度。
本发明实施例还提供了一种分布式缓存节点,适于作为数据同步的目的节点,包括:第二连接建立单元,适于与确定进行数据同步的源节点之间建立连接;数据复制请求发送单元,适于向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;数据接收单元,适于响应于所述源节点发送所述指定数据单位的数据,接收所述数据;数据存储单元,适于存储所述数据接收单元接收到的数据。
可选的,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;所述数据接收单元包括:第一接收子单元,适于响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,接收所述全量数据文件;第一解析子单元,适于实时解析所述全量数据文件,得到所述全量数据;第二接收子单元,适于响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,接收所述增量数据文件;第二解析子单元,适于实时解析所述增量数据文件,得到所述增量数据。
可选的,所述数据存储单元,包括:存储子单元,适于实时存储解析所述全量数据文件及增量数据文件得到的所述全量数据及增量数据至所述目的节点的内存空间中存储的主数据库;第一内存地址存储子单元,适于存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;第二内存地址存储子单元,适于在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
可选的,所述第二内存地址存储子单元,适于按照存储所述内存地址至所述临时数据库中的时间片,分批次获取所述临时数据库中所述全量数据的内存地址,并存储所述内存地址至所述目的节点的主数据库。
可选的,还包括:同步备份子单元,适于在所述数据存储单元存储所述全量数据至所述目的节点的主数据库后,将所述目的节点的主数据库的全量数据同步至所述目的节点的备份数据库。
本发明实施例还提供了一种分布式缓存系统,包括:源节点和目的节点,其中:所述源节点,适于与进行数据同步的所述目的节点之间建立连接,基于所述目的节点发送的包含指定数据单位的数据的数据复制请求,向所述目的节点发送所述指定数据单位的数据;所述目的节点,适于与进行数据同步的所述源节点之间建立连接,向所述源节点发送包含所述指定数据单位的数据的数据复制请求,并接收所述源节点发送的所述指定数据单位的数据。
本发明实施例还提供了一种分布式缓存节点,包括:存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行上述任一实施例所述的用于源节点的数据同步方法的步骤。
本发明实施例还提供了一种分布式缓存节点,其特征在于,包括:存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行上述任一实施例所述的用于目的节点的数据同步方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一实施例所述的用于源节点的数据同步方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一实施例所述的用于目的节点的数据同步方法的步骤。
与现有技术相比,本发明的技术方案具有以下有益效果:
本发明实施例中,在确定进行数据同步的源节点以及目的节点之间建立连接,基于所述目的节点的数据复制请求,从所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。源节点发送至目标节点的数据基于目的节点的数据请求发送,并对应于数据请求中源节点的指定数据单位的数据,从而,同步至目的节点的数据为源节点中的部分数据,可以减少数据同步过程中的同步数据冗余。并且,源节点直接向目的节点发送数据,数据同步过程无须第三方组件的参与,因此可以减少交互环节,可以节约网络传输资源,提升数据同步的同步效率。
进一步,所述源节点在获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件,可以更加充分地利用目的节点的系统资源,提高资源利用效率。
进一步,通过源节点的子线程执行所述进行全量数据快照以及存储所述指定数据单位的全量数据至所述全量数据文件的操作,并在执行结束后,通知所述源节点的主线程,所述源节点的主线程执行向所述目的节点发送所述全量数据文件的操作,可以更加充分地利用源节点的系统资源,提高资源利用效率。
进一步,在源节点以及目的节点的建立连接后,源节点对目的节点进行密码校验,可以完成对数据同步的目的节点的合法性校验,避免数据同步到错误的目的节点,保障数据安全。
进一步,在目的节点接收全量数据文件,并解析该全量数据文件,相比通过第三方组件解析该全量数据文件,可以无须第三方组件的参与,因此可以减少交互环节,节约网络传输资源,提升数据同步的同步效率。
进一步,通过将目的节点的主数据库的全量数据同步至目的节点的备份数据库,备份数据库对主数据库的全量数据进行备份,可以避免主数据库因发生故障时从源节点同步的数据发生数据缺失,可以提升数据存储的完整性。
附图说明
图1是一种Redis数据同步系统的结构示意图;
图2是本发明实施例中一种数据同步方法的流程图;
图3是本发明实施例中一种源节点发送数据至目的节点的方法的流程图;
图4是本发明实施例中一种发送全量数据文件的方法的流程图;
图5是本发明实施例中一种发送增量数据文件的方法的流程图;
图6是本发明实施例中另一种数据同步方法的流程图;
图7是本发明实施例中一种目的节点接收并存储数据的方法的流程图;
图8是本发明实施例中一种数据解析存储的方法的流程图;
图9是本发明一具体实施例中源节点与目的节点之间数据同步的流程图;
图10是本发明实施例中一种分布式缓存节点的结构示意图;
图11是本发明实施例中一种全量数据发送子单元的结构示意图;
图12是本发明实施例中一种增量数据发送子单元的结构示意图;
图13是本发明实施例中另一种分布式缓存节点的结构示意图;
图14是本发明实施例中一种分布式缓存系统的结构示意图。
具体实施方式
由背景技术可知,在进行Redis数据库的数据同步时,可以通过借助于第三方的组件,根据目标节点的数据同步请求,将源节点的全量数据发送至目标节点,数据同步效率较低,并且同步数据冗余较大。
其中,目标节点以及源节点可以分别为一个Redis节点,目标节点以及源节点可以是同属于同一Redis集群。
通过借助于第三方的组件,实现将源节点中全量数据同步至目标节点,具体的数据同步原理以下将结合图1进行详细说明。
参考图1所示一种Redis节点数据同步的结构示意图,在进行源节点11与目的节点12的数据同步时,需要借助于第三方组件13进行,例如Redis-Shake。
在进行数据同步时,目的节点12通过第三方组件13向源节点11发送一个数据同步指令,源节点11在接收到该数据同步指令后,将对其数据库中的全量数据做一次全量数据快照,并生成全量数据文件。源节点11将该全量数据文件发送给第三方组件13,通过该第三方组件13进行全量数据文件解析,以得到全量数据。
第三方组件13过滤出目的节点12请求的对应指定哈希槽的数据后,将该数据封装至数据发送命令中,并发送给目的节点12,实现从源节点11至目的节点12的数据同步。
综上可知,源节点需要将全量数据发送给第三方组件13,并通过第三方组件13进行解析后封装至数据发送命令中发送,数据同步的效率较低。
针对上述问题,本发明实施例在确定进行数据同步的源节点以及目的节点之间建立连接后,基于所述目的节点的数据复制请求,从所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。源节点发送至目标节点的数据基于目的节点的数据请求发送,并对应于数据请求中源节点的指定数据单位的数据,从而,同步至目的节点的数据为源节点中的部分数据,可以减少数据同步过程中的同步数据冗余。并且,源节点直接向目的节点发送数据,数据同步过程无须第三方组件的参与,因此可以减少交互环节,可以节约网络传输资源,提升数据同步的同步效率。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明具体实施例做详细的说明。
参照图2所示的一种用于源节点的数据同步方法的流程图,在本发明实施例中,数据同步具体可以包括:
步骤S21,在确定进行数据同步的源节点以及目的节点之间建立连接。
步骤S22,基于所述目的节点的数据复制请求,所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。
如前所述,源节点以及目的节点可以是属于同一Redis集群的Redis节点。
在具体实施中,源节点以及目的节点之间建立连接可以是目的节点在接收到控制端发送给目的节点的数据同步指令后,目的节点根据数据同步指令中的信息,向源节点发送连接请求。
其中,控制端可以是Redis集群中的客户端,客户端可以接收用户的输入命令,并转换为用于控制Redis节点的指令。
在具体实施中,控制端发送给目的节点的数据同步指令可以包括与目的节点进行数据同步的源节点的地址信息、端口信息、以及需要同步数据的数据单位列表(slot列表)。其中,数据单位可以是前文所述的Redis节点的最小数据存储单位,如哈希槽(Hash Slot)。
本领域技术人员可以理解的是,此处仅为对数据同步指令的举例说明,并非对数据同步指令内容的限制,在其他实施例中,数据同步指令还可以包括更多的信息,对此不做限制。
在具体实施中,目的节点向源节点发送连接建立请求,源节点响应于目的节点的连接建立请求,与目的节点建立连接。
在具体实施中,在源节点以及目的节点建立连接后,可以进一步对目的节点进行密码校验。具体的,可以是目的节点向源节点发送密码校验请求,并标记自身状态为等待源节点通过校验,源节点进行密码校验,并在校验通过时向目的节点返回校验成功,实现源节点对目的节点的密码校验。
通过在源节点以及目的节点的建立连接后,源节点对所述目的节点进行密码校验,可以完成对数据同步的目的节点的合法性校验,避免数据同步到错误的目的节点,保障数据安全。
在具体实施中,在源节点对目的节点进行密码校验成功后,目的节点将向所述源节点发送数据复制请求,以请求同步源节点中指定数据单位的数据。
在具体实施中,目的节点发送的对源节点中指定数据单位的数据的请求可以包括对源节点中指定数据单位的全量数据以及增量数据的请求。其中,全量数据为在接收数据复制请求前,指定数据单位中存储的全量数据,增量数据为源节点在向所述目的节点发送所述全量数据时,生成的增量数据。
在具体实施中,源节点发送对应所述数据复制请求的数据至所述目的节点可以包括发送所述全量数据以及所述增量数据,具体的,源节点发送数据至目的节点的处理流程可以参考图3,可以包括如下步骤:
步骤S31,基于所述目的节点的数据复制请求,所述源节点向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件。
步骤S32,所述源节点在获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
通过发送源节点的指定数据单位的全量数据以及增量数据至所述目的节点,可以使目的节点中存储的该指定数据单位的数据与源节点的该指定数据单位的数据一致,可以保持源节点以及目的节点的数据同步的一致性。并且,源节点在获取到目的节点处于空闲状态时,向目的节点发送包含指定数据单位的增量数据的增量数据文件,可以更加充分地利用目的节点的系统资源,提高资源利用效率。
在具体实施中,源节点向目的节点发送包含所述指定数据单位的全量数据的全量数据文件的流程可以参考图4,可以包括如下流程步骤:
步骤S41,响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照。
步骤S42,获取所述源节点的全量数据快照中所述指定数据单位的全量数据。
步骤S43,存储所述指定数据单位的全量数据至所述全量数据文件。
步骤S44,所述源节点向所述目的节点发送所述全量数据文件。
在具体实施中,指定数据单位的全量数据可以是在对源节点进行全量数据快照的过程中,基于目的节点的数据复制请求中指定的数据单位的数据,筛选出该指定数据单位的数据。筛选出的该指定数据单位的数据可以存储至全量数据文件,例如,可以是slot-rdb文件。本领域技术人员可以理解的是,该slot-rdb文件可以是源节点与目的节点之间可以传输,以及能够被目的节点解析的文件,且该slot-rdb文件可以是一个临时的文件,或者也可以是一个可永久性保存的文件,对此不做限制。
在具体实施中,源节点获取指定数据单位的数据并发送至目的节点的操作可以通过源节点的主线程以及子线程配合执行。具体的,源节点的子线程可以执行进行全量数据快照以及存储所述指定数据单位的全量数据至所述全量数据文件的操作,并在执行结束后,通知源节点的主线程,由源节点的主线程执行向所述目的节点发送所述全量数据文件的操作。
通过源节点的子线程以及主线程分别执行各种操作,相比全部操作均在主线程上执行,可以减少对主线程的占用,进而可以节约系统资源耗费。
在具体实施中,源节点在发送全量数据后,目的节点可以接收该全量数据,并存储至该目的节点的数据库,具体流程后文将做详细介绍,此处不做赘述。
在具体实施中,在源节点向目的节点发送全量数据,且目的节点接收并存储全量数据的过程中,源节点可以生成增量数据,并在目的节点接收并存储该全量数据后,源节点发送该增量数据至目的节点。
在具体实施中,源节点向目的节点发送该增量数据之前,源节点生成的增量数据可以存储至源节点的缓存区。其中,该缓存区可以是源节点中用于存储该增量数据的临时缓存空间。本领域技术人员可以理解的是,此处仅为举例说明,在其他实施例中,增量数据也可以存储在源节点的其他存储位置,对此不做限制。
在具体实施中,目标节点在接收并存储所述全量数据后,可以标记自身为空闲状态,源节点在获取到目的节点为空闲状态时,向目的节点发送包含该指定数据单位的增量数据的增量数据文件,具体的,参考图5,可以包括以下流程步骤:
步骤S51,获取所述源节点的缓存区存储的所述增量数据。
步骤S52,发送包含所述增量数据的增量数据文件至所述目的节点。
在具体实施中,源节点在获取缓存区存储的增量数据后,将该增量数据保存至可发送至目的节点的增量数据文件,例如,可以是增量slot-rdb文件。目的节点可以接收并解析该增量数据文件,并存储解析该增量数据文件得到的增量数据至数据库。
在具体实施中,目的节点在接收并存储源节点发送的数据后,可以定时向源节点发送已接收到增量数据的增量偏移量。其中,所述增量偏移量是指增量数据的累积数据长度,例如,一次增量数据发送了10个字节的数据,则增量偏移量可以是10,下一次增量数据发送了20个字节的数据,则增量偏移量就是30。
在具体实施中,源节点可以响应于接收到目的节点发送的增量偏移量,对目的节点进行数据同步校验,确定所述源节点以及所述目的节点的数据同步进度。例如,在增量数据发送时,源节点可以对发送的增量数据的增量偏移量进行记录,在接收到目的节点发送的增量偏移量时,可以对自身的增量偏移量与接收的增量偏移量进行对比,确定是否相等,从而进行数据同步校验。
通过源节点的增量偏移量以及目的节点发送的增量偏移量进行比对,对源节点以及目的节点的数据同步进度进行校验,可以准确获知源节点与目的节点的数据同步进度,可以避免数据重复同步或者数据同步缺失,保障源节点以及目的节点之间数据的一致性。
本发明实施例还提供了一种用于目的节点的数据同步方法,参考图6,所述数据同步方法可以包括以下流程:
步骤S61,在确定进行数据同步的源节点以及目的节点之间建立连接。
步骤S62,所述目的节点向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求。
步骤S63,响应于所述源节点发送所述指定数据单位的数据,所述目的节点接收并存储所述数据。
在具体实施中,目的节点可以是根据控制端发送的数据同步指令与源节点建立连接,具体内容可以参照前文所述,此处不再赘述。
在具体实施中,目的节点对源节点中的指定数据单位的数据的请求可以包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求。
在具体实施中,目的节点向源节点发送数据复制请求后,可以标记自身为等待接收源节点发送数据,在源节点发送对应数据复制请求的数据后,接收并存储对应该数据复制请求的指定数据单位的数据。具体的,目的节点接收并存储所述数据可以参考图7,可以包括以下流程步骤:
步骤S71,响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,所述目的节点接收所述全量数据文件,解析所述全量数据文件,得到所述全量数据,并存储所述全量数据至所述目的节点的主数据库。
步骤S72,响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,所述目的节点接收所述增量数据文件,解析所述增量数据文件,得到所述增量数据,并存储所述增量数据至所述目的节点的主数据库。
在具体实施中,目的节点接收该全量数据文件后,通过对该全量数据文件进行解析,以得到该全量数据文件中存储的指定数据单位的全量数据。具体流程可以参照图8,可以包括如下流程:
步骤S81,所述目的节点接收所述全量数据文件,并实时解析所述全量数据文件;
步骤S82,实时存储解析所述全量数据文件得到的所述全量数据至所述目的节点的内存空间;
步骤S83,存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;
步骤S84,在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
其中,内存空间可是目的节点中用于存储同步数据的空间,目的节点在解析全量数据文件得到的全量数据后,将解析得到的全部或者是部分全量数据存储至内存空间中,并将存储该全部或者部分全量数据的在存储空间的存储地址存储在临时数据库中。本领域技术人员可以理解的是,该临时数据库可以是一个数据表格,或者是其他可以用于临时存储的存储文件,对此不作限制。
在具体实施中,在所述全量数据文件解析完后,可以按照存储全量数据的内存地址至临时数据库中的时间片,分批次获取临时数据库中全量数据的内存地址,并存储该内存地址至所述目的节点的主数据库。
在具体实施中,当目的节点的主线程的时间片到达时,可以自动退出,待下一个时间片到达时再继续处理。例如,为了减少对主线程占用的影响,Redis目的节点的主线程可以按照时间片分批次加载临时数据库中的Key,如果Key过多,当前时间片到达后,则退出本次操作,剩余的key数据等到下次目的节点的主线程空闲时再加载。在具体实施中,Redis节点中进行数据存储的数据库可以包括主数据库以及备份数据库。从源节点中同步的数据在解析后,会存储至目的节点的主数据库,在将全量数据全部存储至主数据后,将对主数据库进行数据同步,将主数据库中的全量数据同步至备份数据库。
通过将目的节点的数据库的全量数据同步至目的节点的备份数据库,备份数据库对数据库的数据进行备份,可以避免数据库因发生故障时从源节点同步的数据发生数据缺失,可以提升数据存储的完整性。
在具体实施中,目的节点执行数据解析、数据存储等操作可以通过目的节点的主线程以及子线程配合完成。具体的,可以通过目的节点的子线程在后台执行所述解析所述全量数据文件、以及存储所述内存地址至所述临时数据库的操作,并在执行结束后,通知该目的节点的主线程,由目的节点的主线程执行获取所述临时数据库中所述全量数据的内存地址、以及存储获取的所述内存地址至所述目的节点的主数据库的操作。
通过目的节点的主线程以及子线程配合进行数据解析以及数据存储的操作,可以避免全部操作据均通过主线程执行而对主线程的长时间占用,从而可以更加充分地利用源节点的系统资源,提高资源利用效率。
进一步,在目的节点的主数据库与备份数据库完成全量数据同步后,目的节点将标记自身为空闲状态,等待源节点发送增量数据。
源节点在获取目的节点处于空闲状态时,将缓存区存储的增量数据存储至增量数据文件,并发送至目的节点。目的节点接收该增量数据文件,并解析,得到增量数据,并存储将该增量数据存储至内存空间,进一步存储该增量数据存储在该内存空间的内存地址至数据库,以实现对源节点的增量数据的数据同步。
在具体实施中,源节点在接收并存储该增量数据后,可以定时的向源节点发送增量偏移量,以通过源节点对目的节点进行数据同步校验,确定源节点以及目的节点的数据同步进度。具体校验方式可以参照前文所述,此处不再赘述。
为使本领域技术人员更好地理解和实现本发明实施例,以下参照附图9,对本发明实施例实现数据同步的具体步骤进行详细描述:
步骤S911,控制端给目的节点发送数据同步指令,指示目的节点同步源节点中指定数据单位的数据。
其中,数据同步指令可以包括与目的节点进行数据同步的源节点的地址信息、端口信息、以及需要同步数据的数据单位列表(slot列表)。
可以理解的是,在具体实施中,也可以在没有控制端或其他第三方触发的情况下,由目的节点主动向源节点发起数据同步请求。
步骤S912,目的节点向控制端返回确认的应答指令。
步骤S913,目的节点可以在主线程空闲时触发数据复制过程。
步骤S914,目的节点标记自身状态为需要与源节点建立连接。
步骤S915,目的节点与向源节点发送连接建立请求,与源节点建立连接。
步骤S916,目的节点标记自身状态为连接建立完成。
通过步骤S913至步骤S916可以实现待数据同步的源节点以及目的节点之间连接的建立。
步骤S917,目的节点请求源节点进行密码校验。
步骤S918,目的节点标记自身状态为等待源节点进行密码校验。
步骤S919,源节点向目的节点返回校验成功。
通过步骤S917至步骤S919可以实现源节点对目的节点进行密码校验。
步骤S920,目的节点标记自身状态为需要发送端口信息给源节点。
步骤S921,目的节点给源节点发送自身的端口信息。
步骤S922,目的节点标记自身状态为等待源节点接收端口信息。
步骤S923,源节点返回给目的节点已接收端口信息。
步骤S924,目的节点标记本身状态为需要给源端发送数据复制请求。
步骤S925,目的节点向源节点发送数据复制请求。
其中,数据复制请求可以是请求复制源节点中指定数据单位的数据复制请求,请求源节点给自己发送指定数据单位的全量数据和增量数据。
步骤S926,目的节点标记本身为等待接收源节点发送对应数据复制请求的数据。
通过步骤S924至步骤S926可以实现目的节点向源节点发送对指定数据单位的数据复制请求。
步骤S927,源节点向目的节点返回同意数据复制请求的信息。
步骤S928,目的节点准备接收源节点发送的全量数据。
步骤S929,目的节点标记自身状态为需要读取源节点的slot-rdb数据。
步骤S930,源节点标记自身状态为等待触发全量数据快照。
步骤S931,源节点主线程在空闲时触发进行全量数据快照。
步骤S932,源节点的子进程进行全量数据快照。
步骤S933,源节点的主线程标记自身状态为等待全量数据快照结束。
步骤S934,源节点生成全量数据文件。
在具体实施中,源节点的子进程按照目的节点的数据复制请求的指定数据单位的数据,生成全量快照时过滤出该指定数据单位的数据,写入到临时的slot-rdb文件中。
步骤S935,源节点的子进程结束后,通知主线程。
步骤S936,源节点标记自己状态为需要给目的节点发送全量数据。
步骤S937,源节点发送给该slot-rdb文件给目的节点。
通过步骤S927至步骤937可以实现源节点响应于目的节点的数据复制请求,向目的节点发送指定数据单位的全量数据文件。
步骤S938,目的节点标记自身状态为读取源节点发送过来的slot-rdb文件。
步骤S939,源节点全量数据发送结束后,标记目的节点可以发送增量数据。
步骤S940,源节点如果有增量数据产生,写入到源节点的缓存区中,等待目的节点可以接收数据时,发送缓存区中的增量数据。
通过步骤S939至步骤940可以实现源节点向目的节点发送增量数据。
步骤S941,目的节点解析接收到的slot-rdb文件。
目的节点启动子线程解析源节点发送的slot-rdb文件,将解析出来的全量数据加入到内存空间中,并将该内存空间的内存地址保存至临时数据库中。
在具体实施中,所述子线程可以在目的节点的后台运行。
步骤S942,目的节点标记自身为解析slot-rdb结束,等待加载进主数据库中。
步骤S943,目的节点的主线程按时间片分批次从临时数据库中将解析出来的全量数据的内存地址添加到主数据库。
通过步骤S938,步骤S941至步骤S943可以实现目的节点接收全量数据文件,解析该全量数据文件,并存储全量数据至主数据库。
步骤S944,目的节点加载完全部临时数据库中的内存地址后,标记自身状态为需要通知备份数据库做一次全量数据同步。
步骤S945,目的节点通知自身的备份数据库和自身主数据库做一次全量主备同步。
通过步骤S944至步骤S945可以实现目的节点从主数据库同步全量数据至备份数据库。
步骤S946,目的节点开始接受源节点的增量数据。
步骤S947,目的节点标记自身状态为正在接受增量数据。
通过步骤S946至步骤S947可以实现目的节点接收源节点发送的增量数据。
步骤S948,目的节点给源节点定时发送已接受到的增量数据的增量偏移量。
在具体实施中,用户可以通过控制端实时获取源节点和目的节点之间的数据同步状态。
本发明实施例提供了一种分布式缓存节点,适于作为数据同步的源节点,在具体实施中,参考图10,所述分布式缓存节点100可以包括:
数据存储单元101,适于存储数据;
第一连接建立单元102,适于与确定进行数据同步的目的节点之间建立连接;
请求接收单元103,适于接收所述目的节点的数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;
数据发送单元104,适于发送对应所述数据复制请求的数据至所述目的节点。
在具体实施中,目的节点对源节点中的指定数据单位的数据的请求可以包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求。
在具体实施中,所述数据发送单元104可以包括:
全量数据发送子单元1041,适于基于所述目的节点的数据复制请求,向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件;
状态获取子单元1042,适于获取所述目的节点是否处于空闲状态;
增量数据发送子单元1043,适于在所述状态获取子单元1042获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
图11示出了一种全量数据发送子单元的结构示意图,在具体实施中,所述全量数据发送子单元1041可以包括:
全量数据快照模块1041a,适于响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照;
数据获取模块1041b,适于获取所述源节点的全量数据快照中所述指定数据单位的全量数据;
存储模块1041c,适于存储所述指定数据单位的全量数据至所述全量数据文件;
全量数据发送模块1041d,适于向所述目的节点发送所述全量数据文件。
继续参考图10,在本发明一具体实现中,所述数据发送单元104还可以包括:存储子单元1044,适于在所述增量数据发送子单元1043向所述目的节点发送所述增量数据之前,存储所述增量数据至缓存区。
进一步,参考图12,所述增量数据发送子单元1043可以包括:
增量数据获取模块1043a,适于获取所述缓存区存储的所述增量数据;
增量数据发送模块1043b,适于发送所述增量数据至所述目的节点。
继续参考图10,在具体实施中,所述分布式缓存节点100还可以包括:密码校验单元105,适于在所述第一连接建立单元102建立连接后,对所述目的节点进行密码校验。
在本发明一具体实现中,所述分布式缓存节点100还可以包括:
增量偏移量接收单元106,适于接收所述目的节点发送的增量偏移量;
同步校验单元107,适于基于所述增量偏移量,对所述目的节点进行数据同步校验,确定与所述目的节点的数据同步进度。
本发明实施例中的适于作为数据同步的源节点的分布式缓存节点的具体实现方式和有益效果,可以参见本发明实施例中的用于源节点的数据同步方法,在此不再赘述。
本发明实施例还提供了另一种分布式缓存节点,适于作为数据同步的目的节点。参考图13,在具体实施中,分布式缓存节点130可以包括:
第二连接建立单元131,适于与确定进行数据同步的源节点之间建立连接;
数据复制请求发送单元132,适于向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;
数据接收单元133,适于响应于所述源节点发送所述指定数据单位的数据,接收数据;
数据存储单元134,适于存储所述数据接收单元接收到的数据。
在具体实施中,所述对所述源节点中的指定数据单位的数据的请求可以包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求。
进一步,所述数据接收单元133可以包括:
第一接收子单元1331,适于响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,接收所述全量数据文件;
第一解析单元1332,适于解析所述全量数据文件,得到所述全量数据;
第二接收子单元1333,适于响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,接收所述增量数据文件;
第二解析单元1334,适于解析所述增量数据文件,得到所述增量数据。
在具体实施中,所述数据存储单元134可以包括:
存储子单元1341,适于实时存储解析所述全量数据文件及增量数据文件得到的所述全量数据及增量数据至所述目的节点的内存空间中存储的主数据库;
第一内存地址存储子单元1342,适于存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;
第二内存地址存储子单元1343,适于在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
在具体实施中,所述第二内存地址存储子单元1343适于按照存储所述内存地址至所述临时数据库中的时间片,分批次获取所述临时数据库中所述全量数据的内存地址,并存储所述内存地址至所述目的节点的主数据库。
继续参考图13,在具体实施中,所述分布式缓存节点130还可以包括:同步备份单元135,适于在所述数据存储单元134存储所述全量数据至所述目的节点的主数据库后,将所述目的节点的主数据库的全量数据同步至所述目的节点的备份数据库。
本发明实施例中的适于作为数据同步的目的节点的分布式缓存节点的具体实现方式和有益效果,可以参见本发明实施例中的用于目的节点的数据同步方法,在此不再赘述。
本发明实施例还提供了一种分布式缓存系统,参考图14,所述分布式缓存系统可以包括:源节点141和目的节点142,其中:
所述源节点141适于与进行数据同步的所述目的节点142之间建立连接,基于所述目的节点142发送的包含指定数据单位的数据的数据复制请求,向所述目的节点142发送所述指定数据单位的数据;
所述目的节点142适于与进行数据同步的所述源节点141之间建立连接,向所述源节点141发送包含所述指定数据单位的数据的数据复制请求,并接收所述源节点142发送的所述指定数据单位的数据。
本发明实施例中的分布式缓存系统中源节点和目的节点的具体实现方式和有益效果均可以参见前文同步方法和分布式缓存节点实施例中介绍,在此不再赘述。
本发明实施例还提供了一种分布式缓存节点,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述运行于源节点的数据同步方法的步骤,具体可以参见前述适于源节点的数据同步方法实施例,此处不再赘述。
其中,所述分布式缓存节点可以是Redis集群中的Redis节点。
本发明实施例还提供了一种分布式缓存节点,包括:存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述运行于目的节点的数据同步方法的步骤,具体可以参见前述适于目的节点的数据同步方法实施例,此处不再赘述。
其中,所述分布式缓存节点可以是Redis集群中的Redis节点。
本发明实施例还提供了一种分布式缓存系统,包括:源节点以及目的节点,所述源节点包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述运行于源节点的数据同步方法的步骤,具体可以参见前述适于源节点的数据同步方法实施例,此处不再赘述。
所述目的节点包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述运行于目的节点的数据同步方法的步骤,具体可以参见前述适于目的节点的数据同步方法实施例,此处不再赘述。
其中,所述分布式缓存系统可以是Redis集群,所述源节点以及所述目的节点可以是同属于该Redis集群的Redis节点。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行前述实施例中用于源节点的数据同步方法的步骤。具体可以参见前述适于源节点的数据同步方法实施例,此处不再赘述
其中,所述计算机可读存储介质可以是光盘、机械硬盘、固态硬盘等。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行前述实施例中用于目的节点的数据同步方法的步骤。具体可以参见前述适于目的节点的数据同步方法实施例,此处不再赘述。
其中,所述计算机可读存储介质可以是光盘、机械硬盘、固态硬盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (29)
1.一种数据同步方法,其特征在于,包括:
在确定进行数据同步的源节点以及目的节点之间建立连接;
基于所述目的节点的数据复制请求,所述源节点发送对应所述数据复制请求的数据至所述目的节点,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;其中,源节点和目的节点均为Redis节点,数据单位是Redis节点的最小数据存储单位。
2.根据权利要求1所述的数据同步方法,其特征在于,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;
所述源节点发送对应所述数据复制请求的数据至所述目的节点包括:
基于所述目的节点的数据复制请求,所述源节点向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件;
所述源节点在获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
3.根据权利要求2所述的数据同步方法,其特征在于,所述基于所述目的节点的数据复制请求,所述源节点向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件,包括:
响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照;
获取所述源节点的全量数据快照中所述指定数据单位的全量数据;
存储所述指定数据单位的全量数据至所述全量数据文件;
所述源节点向所述目的节点发送所述全量数据文件。
4.根据权利要求3所述的数据同步方法,其特征在于,所述源节点的子线程执行所述进行全量数据快照以及存储所述指定数据单位的全量数据至所述全量数据文件的操作,并在执行结束后,通知所述源节点的主线程,所述源节点的主线程执行向所述目的节点发送所述全量数据文件的操作。
5.根据权利要求2所述的数据同步方法,其特征在于,所述源节点发送对应所述数据复制请求的数据至所述目的节点,还包括:所述源节点向所述目的节点发送所述增量数据之前,存储所述增量数据至所述源节点的缓存区;
所述向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件,包括:
获取所述源节点的缓存区存储的所述增量数据;
发送包含所述增量数据的增量数据文件至所述目的节点。
6.根据权利要求2所述的数据同步方法,其特征在于,还包括:响应于接收到所述目的节点发送的增量偏移量,所述源节点对所述目的节点进行数据同步校验,确定所述源节点以及所述目的节点的数据同步进度。
7.根据权利要求1所述的数据同步方法,其特征在于,还包括:在所述建立连接后,所述源节点对所述目的节点进行密码校验,并确定验证通过。
8.一种数据同步方法,其特征在于,包括:
在确定进行数据同步的源节点以及目的节点之间建立连接;
所述目的节点向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;其中,源节点和目的节点均为Redis节点,数据单位是Redis节点的最小数据存储单位;
响应于所述源节点发送所述指定数据单位的数据,所述目的节点接收并存储所述数据。
9.根据权利要求8所述的数据同步方法,其特征在于,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;
所述响应于所述源节点发送所述指定数据单位的数据,所述目的节点接收并存储所述数据,包括:
响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,所述目的节点接收所述全量数据文件,解析所述全量数据文件,得到所述全量数据,并存储所述全量数据至所述目的节点的主数据库;
响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,所述目的节点接收所述增量数据文件,解析所述增量数据文件,得到所述增量数据,并存储所述增量数据至所述目的节点的主数据库。
10.根据权利要求9所述的数据同步方法,其特征在于,所述目的节点接收所述全量数据文件,解析所述全量数据文件,得到所述全量数据,并存储所述全量数据至所述目的节点的主数据库,包括:
所述目的节点接收所述全量数据文件,并实时解析所述全量数据文件;实时存储解析所述全量数据文件得到的所述全量数据至所述目的节点的内存空间;
存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;
在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
11.根据权利要求10所述的数据同步方法,其特征在于,所述目的节点的子线程执行所述解析所述全量数据文件、以及存储所述内存地址至所述临时数据库的操作,并在执行结束后,通知所述目的节点的主线程,所述目的节点的主线程执行获取所述临时数据库中所述全量数据的内存地址、以及存储获取的所述内存地址至所述目的节点的主数据库的操作。
12.根据权利要求10所述的数据同步方法,其特征在于,所述获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库包括:按照存储所述内存地址至所述临时数据库中的时间片,分批次获取所述临时数据库中所述全量数据的内存地址,并存储所述内存地址至所述目的节点的主数据库。
13.根据权利要求9所述的数据同步方法,其特征在于,存储所述全量数据至所述目的节点的主数据库后,所述目的节点接收并存储所述数据,还包括:
将所述目的节点的主数据库的全量数据同步至所述目的节点的备份数据库。
14.一种分布式缓存节点,适于作为数据同步的源节点,其特征在于,包括:
数据存储单元,适于存储数据;
第一连接建立单元,适于与确定进行数据同步的目的节点之间建立连接;
请求接收单元,适于接收所述目的节点的数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;其中,源节点和目的节点均为Redis节点,数据单位是Redis节点的最小数据存储单位;
数据发送单元,适于发送对应所述数据复制请求的数据至所述目的节点。
15.根据权利要求14所述的分布式缓存节点,其特征在于,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;
所述数据发送单元包括:
全量数据发送子单元,适于基于所述目的节点的数据复制请求,向所述目的节点发送包含所述指定数据单位的全量数据的全量数据文件;
状态获取子单元,适于获取所述目的节点是否处于空闲状态;
增量数据发送子单元,适于在所述状态获取子单元获取到所述目的节点处于空闲状态时,向所述目的节点发送包含所述指定数据单位的增量数据的增量数据文件。
16.根据权利要求15所述的分布式缓存节点,其特征在于,所述数据发送单元还包括:存储子单元,适于在所述增量数据发送子单元向所述目的节点发送所述增量数据之前,存储所述增量数据至缓存区;
所述增量数据发送子单元包括:
增量数据获取模块,适于获取所述缓存区存储的所述增量数据;
增量数据发送模块,适于发送所述增量数据至所述目的节点。
17.根据权利要求15所述的分布式缓存节点,其特征在于,所述全量数据发送子单元包括:
全量数据快照模块,适于响应于所述目的节点的数据复制请求,对所述源节点的全量数据进行全量数据快照;
数据获取模块,适于获取所述源节点的全量数据快照中所述指定数据单位的全量数据;
存储模块,适于存储所述指定数据单位的全量数据至所述全量数据文件;
全量数据发送模块,适于向所述目的节点发送所述全量数据文件。
18.根据权利要求14所述的分布式缓存节点,其特征在于,还包括:密码校验单元,适于在所述第一连接建立单元建立连接后,对所述目的节点进行密码校验。
19.根据权利要求14所述的分布式缓存节点,其特征在于,还包括:
增量偏移量接收单元,适于接收所述目的节点发送的增量偏移量;
同步校验单元,适于基于所述增量偏移量,对所述目的节点进行数据同步校验,确定与所述目的节点的数据同步进度。
20.一种分布式缓存节点,适于作为数据同步的目的节点,其特征在于,包括:
第二连接建立单元,适于与确定进行数据同步的源节点之间建立连接;
数据复制请求发送单元,适于向所述源节点发送数据复制请求,所述数据复制请求包括对所述源节点中指定数据单位的数据的请求;其中,源节点和目的节点均为Redis节点,数据单位是Redis节点的最小数据存储单位;
数据接收单元,适于响应于所述源节点发送所述指定数据单位的数据,接收数据;
数据存储单元,适于存储所述数据接收单元接收到的数据。
21.根据权利要求20所述的分布式缓存节点,其特征在于,所述对所述源节点中的指定数据单位的数据的请求,包括:对所述源节点中指定数据单位的全量数据以及增量数据的请求;
所述数据接收单元包括:
第一接收子单元,适于响应于所述源节点发送包含所述指定数据单位的全量数据的全量数据文件,接收所述全量数据文件;
第一解析子单元,适于实时解析所述全量数据文件,得到所述全量数据;
第二接收子单元,适于响应于所述源节点发送包含所述指定数据单位的增量数据的增量数据文件,接收所述增量数据文件;
第二解析子单元,适于实时解析所述增量数据文件,得到所述增量数据。
22.根据权利要求21所述的分布式缓存节点,其特征在于,所述数据存储单元,包括:
存储子单元,适于实时存储解析所述全量数据文件及增量数据文件得到的所述全量数据及增量数据至所述目的节点的内存空间中存储的主数据库;
第一内存地址存储子单元,适于存储所述全量数据在所述目的节点的内存空间的内存地址至所述目的节点的临时数据库;
第二内存地址存储子单元,适于在确定所述全量数据文件已解析完成后,获取所述临时数据库中所述全量数据的内存地址,并存储获取的所述内存地址至所述目的节点的主数据库。
23.根据权利要求22所述的分布式缓存节点,其特征在于,所述第二内存地址存储子单元,适于按照存储所述内存地址至所述临时数据库中的时间片,分批次获取所述临时数据库中所述全量数据的内存地址,并存储所述内存地址至所述目的节点的主数据库。
24.根据权利要求22所述的分布式缓存节点,其特征在于,还包括:
同步备份单元,适于在所述数据存储单元存储所述全量数据至所述目的节点的主数据库后,将所述目的节点的主数据库的全量数据同步至所述目的节点的备份数据库。
25.一种分布式缓存系统,其特征在于,包括:源节点和目的节点,其中:
所述源节点,适于与进行数据同步的所述目的节点之间建立连接,基于所述目的节点发送的包含指定数据单位的数据的数据复制请求,向所述目的节点发送所述指定数据单位的数据;
所述目的节点,适于与进行数据同步的所述源节点之间建立连接,向所述源节点发送包含所述指定数据单位的数据的数据复制请求,并接收所述源节点发送的所述指定数据单位的数据;其中,源节点和目的节点均为Redis节点,数据单位是Redis节点的最小数据存储单位。
26.一种分布式缓存节点,其特征在于,包括:存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至7任一项所述数据同步方法的步骤。
27.一种分布式缓存节点,其特征在于,包括:存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求8至13任一项所述数据同步方法的步骤。
28.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至7任一项所述数据同步方法的步骤。
29.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求8至13任一项所述数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911019185.XA CN112711630B (zh) | 2019-10-24 | 2019-10-24 | 数据同步方法、分布式缓存节点及系统、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911019185.XA CN112711630B (zh) | 2019-10-24 | 2019-10-24 | 数据同步方法、分布式缓存节点及系统、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112711630A CN112711630A (zh) | 2021-04-27 |
CN112711630B true CN112711630B (zh) | 2024-05-17 |
Family
ID=75540339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911019185.XA Active CN112711630B (zh) | 2019-10-24 | 2019-10-24 | 数据同步方法、分布式缓存节点及系统、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112711630B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6529921B1 (en) * | 1999-06-29 | 2003-03-04 | Microsoft Corporation | Dynamic synchronization of tables |
CN101610225A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 一种同步处理方法、系统和装置 |
US8438347B1 (en) * | 2008-03-27 | 2013-05-07 | Symantec Corporation | Techniques for proactive synchronization of backups on replication targets |
CN104506643A (zh) * | 2014-12-30 | 2015-04-08 | 北京奇虎科技有限公司 | 分布式存储系统的服务器及服务器之间的数据同步方法 |
EP2891994A4 (en) * | 2013-11-04 | 2016-06-01 | Guangdong Electronics Industry Inst Ltd | METHOD FOR AUTOMATICALLY SYNCHRONIZING MULTI-SOURCE HETEROGENEOUS DATA RESOURCES |
CN106934048A (zh) * | 2017-03-16 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 数据在线迁移方法、代理节点 |
CN107515874A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种分布式非关系型数据库中同步增量数据的方法与设备 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN108572976A (zh) * | 2017-03-10 | 2018-09-25 | 华为软件技术有限公司 | 一种分布式数据库中数据恢复方法、相关设备和系统 |
CN109271457A (zh) * | 2018-11-19 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种数据同步方法及装置 |
KR20190092362A (ko) * | 2019-07-31 | 2019-08-07 | 네이버 주식회사 | 데이터베이스 샤딩 환경에서의 데이터 복제 |
-
2019
- 2019-10-24 CN CN201911019185.XA patent/CN112711630B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6529921B1 (en) * | 1999-06-29 | 2003-03-04 | Microsoft Corporation | Dynamic synchronization of tables |
US8438347B1 (en) * | 2008-03-27 | 2013-05-07 | Symantec Corporation | Techniques for proactive synchronization of backups on replication targets |
CN101610225A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 一种同步处理方法、系统和装置 |
EP2891994A4 (en) * | 2013-11-04 | 2016-06-01 | Guangdong Electronics Industry Inst Ltd | METHOD FOR AUTOMATICALLY SYNCHRONIZING MULTI-SOURCE HETEROGENEOUS DATA RESOURCES |
CN104506643A (zh) * | 2014-12-30 | 2015-04-08 | 北京奇虎科技有限公司 | 分布式存储系统的服务器及服务器之间的数据同步方法 |
CN107515874A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种分布式非关系型数据库中同步增量数据的方法与设备 |
CN108572976A (zh) * | 2017-03-10 | 2018-09-25 | 华为软件技术有限公司 | 一种分布式数据库中数据恢复方法、相关设备和系统 |
CN106934048A (zh) * | 2017-03-16 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 数据在线迁移方法、代理节点 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN109271457A (zh) * | 2018-11-19 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种数据同步方法及装置 |
KR20190092362A (ko) * | 2019-07-31 | 2019-08-07 | 네이버 주식회사 | 데이터베이스 샤딩 환경에서의 데이터 복제 |
Non-Patent Citations (3)
Title |
---|
一种实时数据库备份恢复方法;史英杰;王远;朱恒;粟勇;;计算机应用;20160610(S1);59-62 * |
一种异构关系型数据库间的数据同步方案;李宁;;福建电脑;20181025(10);118-121 * |
基于分布式内存数据的数据同步设计与实现;朱伟;李纪云;江慧;刘柱云;;现代电子技术;20140115(02);85-87+91 * |
Also Published As
Publication number | Publication date |
---|---|
CN112711630A (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542865B (zh) | 分布式集群系统配置文件同步方法、装置、系统及介质 | |
CN107231402B (zh) | Http请求处理方法、装置及系统 | |
CN104660635B (zh) | 消息同步方法、装置及系统 | |
TW201730784A (zh) | 資料同步方法、裝置及系統 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN104348859B (zh) | 文件同步方法、装置、服务器、终端及系统 | |
CN104239435A (zh) | 一种基于图片缩略处理的分布式图片缓存方法 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
CN111177159B (zh) | 一种数据处理的系统、方法和数据更新设备 | |
CN113094430B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN105516334A (zh) | Cdn文件分发系统 | |
CN106302604B (zh) | 数据传输方法及装置 | |
CN108959278B (zh) | 一种数据同步方法、装置、电子设备以及存储介质 | |
CN101388039B (zh) | 一种响应消息的执行方法和装置 | |
US10142389B2 (en) | Information processing system, information processing method, communication terminal, server, and control methods and control programs thereof | |
CN112711630B (zh) | 数据同步方法、分布式缓存节点及系统、可读存储介质 | |
CN112866406B (zh) | 一种数据存储方法、系统、装置、设备及存储介质 | |
CN112148745B (zh) | 一种多HBase集群访问方法、装置及存储介质 | |
CN107357808B (zh) | 数据管理方法、装置及设备 | |
CN110795920B (zh) | 一种文档生成方法及设备 | |
CN112286852B (zh) | 基于iic总线的数据通信方法和数据通信装置 | |
CN113010103B (zh) | 数据存储方法、装置、相关设备及存储介质 | |
CN106878431B (zh) | 一种转化分布式系统中节点通讯消息格式的方法和装置 | |
CN112306962B (zh) | 计算机集群系统中的文件拷贝方法、装置及存储介质 | |
US11704296B2 (en) | Data management system, data management apparatus, and non-transitory computer readable medium storing data management program |
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 |