掌桥专利:专业的专利平台
掌桥专利
首页

一种数据同步方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 11:19:16


一种数据同步方法、装置、设备及可读存储介质

技术领域

本申请涉及数据处理技术领域,尤其涉及一种数据同步方法、装置、设备及可读存储介质。

背景技术

REDIS(Remote Dictionary Server,远程字典服务)是一个开源的使用ANSIC(American National Standards Institute,美国国家标准学会)语言编写、支持多路网络IO复用、基于内存的高性能Key-Value数据库。现有技术中,在进行数据存储时,通常使用REDIS作为应用数据缓存的首选方案。

通常情况下,在REDIS中,若需进行数据同步,则当前节点将自身切换为从节点(只接受读请求,不接受写请求),保存主节点信息,并连接到主节点,以实时接收主节点发送的数据。由于REDIS存在主从节点之分而导致从节点无法进行写入操作,因此,这种方式有可能造成REDIS节点之间的数据不能完全同步。

发明内容

本申请实施例提供一种数据同步方法、装置、设备及可读存储介质,以实现第一REDIS节点和第二REDIS节点之间的数据同步。

第一方面,本申请实施例提供了一种数据同步方法,应用于数据同步服务工具,包括:

接收第一REDIS节点发送的第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

对所述第一数据同步指令添加标识,得到第二数据同步指令;

向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

第二方面,本申请实施例还提供一种数据同步方法,应用于第一REDIS节点,包括:

向数据同步服务工具发送第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

其中,所述第一数据同步指令用于使得所述数据同步服务工具对所述第一数据同步指令添加标识,得到第二数据同步指令,并向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

第三方面,本申请实施例还提供一种数据同步方法,包括:

第一REDIS节点向数据同步服务工具发送第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

所述数据同步服务工具接收第一REDIS节点发送的第一数据同步指令;

所述数据同步服务工具对所述第一数据同步指令添加标识,得到第二数据同步指令;

所述数据同步服务工具向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

第四方面,本申请实施例还提供一种电子设备,包括:收发机、存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上所述的数据同步方法中的步骤。

第五方面,本申请实施例还提供一种可读存储介质,所述可读存储介质上存储程序,所述程序被处理器执行时实现如上所述的数据同步方法中的步骤。

在本申请实施例中,通过数据同步服务工具将第一REDIS节点发送的第一数据同步指令进行处理得到第二数据同步指令,并向第二REDIS节点发送第二数据同步指令,使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。由上可以看出,第二REDIS节点根据数据同步服务工具的第二数据同步指令进行数据同步,因此,在与第一REDIS节点进行数据同步时,无需第二REDIS节点切换为第一REDIS节点的从节点,也即由数据同步服务工具作为第一REDIS节点和第二REDIS节点之间的桥梁进行信息的处理,在数据同步过程中不存在主节点和从节点的分别。因此,利用本申请实施例的方案,可使得第二REDIS节点进行数据的写入操作,从而使得第一REDIS节点和第二REDIS节点之间能够保持数据同步,实现了第一REDIS节点和第二REDIS节点之间的数据同步。

附图说明

图1是本申请实施例提供的数据同步方法的流程图之一;

图2是本申请实施例提供的数据同步方法的流程图之二;

图3是本申请实施例提供的数据同步方法的流程图之三;

图4是本申请实施例提供的数据同步系统示意图之一;

图5是本申请实施例提供的数据同步系统示意图之二;

图6是本申请实施例提供的数据同步装置的结构图之一;

图7是本申请实施例提供的数据同步装置的结构图之二;

图8是本申请实施例提供的数据同步装置的结构图之三。

具体实施方式

本申请实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本申请实施例中术语“多个”是指两个或两个以上,其它量词与之类似。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1,图1是本申请实施例提供的数据同步方法的流程图,应用于数据同步服务工具。如图1所示,包括以下步骤:

步骤101、接收第一REDIS节点发送的第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的。

在实际应用中,如果某个REDIS节点新写入了数据,删除了无用数据,修改了数据等,需要在REDIS节点之间进行数据同步。此时,用户可通过客户端发送数据同步指令。因此,当接收到用户通过客户端的应用发送的数据同步指令时,第一REDIS节点可向数据同步服务工具发送第一数据同步指令。其中,所述第一数据同步指令可用于指示将第一REDIS节点的数据同步到第二REDIS节点,可携带第一REDIS节点的信息,如标识等。

步骤102、对所述第一数据同步指令添加标识,得到第二数据同步指令。

在此步骤中,数据同步服务工具可首先确定所述第一数据同步指令是否符合预设要求。然后,在所述第一数据同步指令符合预设要求的情况下,在所述第一数据同步指令中添加第一标识和第二标识,得到所述第二数据同步指令;其中,所述第一标识用于表示所述第一数据同步指令的开始信息,所述第二标识用于表示所述第一数据同步指令的结束信息,所述第一标识和所述第二标识中的至少一个包括所述第一REDIS节点的信息。

例如,可分别在第一标识和第二标识中携带所述第一REDIS节点的信息,还可以只在第一标识或者只在第二标识中携带所述第一REDIS节点的信息。通过这种方式,可过滤掉无用的指令或者重复的指令,从而进一步提高了数据处理效率。

其中,所述预设要求可以包括符合预设的安全条件,指令携带的第一节点的信息和待发送的第二REDIS的信息不一致等。

具体的,数据同步服务工具可确定所述第一数据同步指令是否满足预设的安全条件。其中,所述安全条件例如可以是指令为预设格式的指令,指令不是指示重复操作的信令,指令是合法指令等。在所述第一数据同步指令满足所述预设的安全条件的情况下,获取所述第一数据同步指令中携带的第一节点标识。如前所述,所述第一数据同步指令可携带第一数据同步指令的第一REDIS节点,如标识等。因此,数据同步服务工具可获取所述第一数据同步指令中携带的第一节点标识。

所述第一REDIS节点的信息可以为第一REDIS节点的标识。在实际应用中,数据同步服务工具可根据预先配置的配置文件或者预设规则(如将第一数据同步指令中携带的第二REDIS节点确定为第二REDIS节点)等方式确定第二REDIS节点,并确定第二REDIS节点的信息,如标识等。

根据确定的第二REDIS节点的标识,数据同步服务工具可在所述第一数据同步指令中携带的第一节点标识与第二REDIS节点的标识不一致的情况下,确定所述第一数据同步指令符合所述预设要求。如果一致,则可丢弃所述第一数据同步指令。通过这种方式,可避免将第二REDIS节点的数据重新再写入第二REDIS节点中,从而避免数据回环问题。

在添加标识的时候,数据同步服务工具可根据第一数据同步指令的数量有不同的处理方式。

如果所述第一数据同步指令为一条,则在所述第一数据同步指令之前添加所述第一标识,在所述第一数据同步指令之后添加所述第二标识,得到第二数据同步指令。

如果所述第一数据同步指令为两条以上,则在所述第一数据同步指令中的第一条数据同步指令之前添加所述第一标识,在所述第一数据同步指令中的最后一条数据同步指令之后添加所述第二标识,得到第二数据同步指令。在这种情况下,无需对每条数据同步指令都添加标识,从而最大可能的避免了对现有协议的修改,提高了处理效率,节约了成本。

在上述过程中,以所述第一数据同步指令为一条为例,为减少对第一数据同步指令的影响,可在第一数据同步指令的起始字节之前和结束字节之后分别增加相应的字节,以携带第一标识和第二标识。也即,第一标识、第二标识是位于第一数据同步指令之外的。当然,也可以在第一数据同步指令内,在第一数据同步指令的起始字节之前和结束字节之后分别增加相应的字节,以携带第一标识和第二标识。

其中,所述第一标识例如可以是“GXID A START”,所述第二标识例如可以是“GXIDA END”,其中,A表示第一节点的标识。

由于第二数据同步指令中携带第一REDIS节点和第二REDIS节点的信息,那么,第二REDIS节点可根据第二数据同步指令不将第一REDIS节点提供的信息再重新返回到第一REDIS节点中,从而避免了数据同步回环问题。

获得的第二数据同步指令可存储待写入指令缓存中,等候处理。

步骤103、向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令用于使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

当缓存已满和/或同步定时器到时时,则向第二REDIS节点发送所述第二数据同步指令。

也即,当缓存已满或者同步定时器到时,或者同时满足以上两个条件时,向第二REDIS节点发送所述第二数据同步指令。通过这种方式,可避免不断的发送第二数据同步指令,从而节约资源,提高效率。

在本申请实施例中,通过数据同步服务工具将第一REDIS节点发送的第一数据同步指令进行处理得到第二数据同步指令,并向第二REDIS节点发送第二数据同步指令,使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。由上可以看出,第二REDIS节点根据数据同步服务工具的第二数据同步指令进行数据同步,因此,在与第一REDIS节点进行数据同步时,无需第二REDIS节点切换为第一REDIS节点的从节点,也即由数据同步服务工具作为第一REDIS节点和第二REDIS节点之间的桥梁进行信息的处理,在数据同步过程中不存在主节点和从节点的分别。因此,利用本申请实施例的方案,可使得第二REDIS节点进行数据的写入操作,从而使得第一REDIS节点和第二REDIS节点之间能够保持数据同步,实现了第一REDIS节点和第二REDIS节点之间的数据同步。

由于第一REDIS节点和第二REDIS节点在不同的处理过程中的身份都是相对的,也就是说一个REDIS节点既可作为第一REDIS节点又可作为第二REDIS节点,因此,利用本申请实施例的方案,可实现REDIS节点之间的双向同步。其中,在将第一REDIS节点的数据同步到第二REDIS节点的过程中,第一REDIS节点相当于源REDIS节点,第二REDIS节点相当于目的REDIS节点;在将第二REDIS节点的数据同步到第一REDIS节点的过程中,第一REDIS节点相当于目的REDIS节点,第二REDIS节点相当于源REDIS节点。

在本申请实施例中,在步骤101之前,所述方法还可包括以下至少一个步骤:

(1)数据同步服务工具与所述第一REDIS节点进行数据同步。在同步的过程中,数据同步服务工具可看作为第一REDIS节点的从节点,那么,根据现有技术中主从节点的同步过程,数据同步服务工具利用同步协议(PSYNC2(partial resynchronization version2,部分重新同步版本2))拉取和解析待同步指令,每隔1秒上报同步偏移量,提供同步进度监控。通过这种方式,可保证数据同步服务工具和第一REDIS节点之间的数据同步。

(2)数据同步服务工具预先配置配置文件,所述配置文件包括以下一项或者多项:第一REDIS节点的信息,第二REDIS节点的信息,同步定时器的信息,缓存的信息。如表1所示,为配置文件所包括的信息的示例:

表1

(3)将所述第二数据处理命令保存在REDIS同步指令复制缓存区(Repl_Backlog)中。

其中,REDIS同步指令复制缓存区使用环形缓冲形式,用于记录命令的相关信息,如命令名称、参数个数、各个参数值信息等。环形缓冲是一种特殊队列结构,能满足队列内元素的先进先出的需要,也能重复利用队列的内存空间。

在本申请实施例中,所述第一REDIS节点和所述第二REDIS节点处理不同的业务。例如,第一REDIS节点处理个人贷款业务,第二REDIS节点处理个人保险业务等。在这种情况下,由于两个REDIS节点处理不同的业务,且进行了数据同步,那么,当有任何的节点发生故障时,其他正常运行的节点都可代替其进行数据的处理,从而减少了业务中断时间,保证了业务的连续性。

参见图2,图2是本申请实施例提供的数据同步方法的流程图,应用于第一REDIS节点,如图2所示,包括以下步骤:

步骤201、向数据同步服务工具发送第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

其中,所述第一数据同步指令使得所述数据同步服务工具对所述第一数据同步指令添加标识,得到第二数据同步指令,并向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令用于使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

在以上实施例的基础上,第一REDIS节点还可与所述数据同步服务工具进行数据同步。其中,二者的同步过程和现有技术中主从节点数据同步的过程相似。

在本申请实施例中,通过数据同步服务工具将第一REDIS节点发送的第一数据同步指令进行处理得到第二数据同步指令,并向第二REDIS节点发送第二数据同步指令,使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。由上可以看出,第二REDIS节点根据数据同步服务工具的第二数据同步指令进行数据同步,因此,在与第一REDIS节点进行数据同步时,无需第二REDIS节点切换为第一REDIS节点的从节点,也即由数据同步服务工具作为第一REDIS节点和第二REDIS节点之间的桥梁进行信息的处理,在数据同步过程中不存在主节点和从节点的分别。因此,利用本申请实施例的方案,可使得第二REDIS节点进行数据的写入操作,从而使得第一REDIS节点和第二REDIS节点之间能够保持数据同步,实现了第一REDIS节点和第二REDIS节点之间的数据同步。

参见图3,图3是本申请实施例提供的数据同步方法的流程图,应用于第二REDIS节点,如图3所示,包括以下步骤:

步骤301、接收数据同步服务工具发送的第二数据同步指令;

步骤302、根据所述第二数据同步指令,与第一REDIS节点进行数据同步。

具体的,在此步骤中,对所述第二数据同步指令进行解析,根据解析结果,与第一REDIS节点进行数据同步。

例如,写入第二数据同步指令携带的信息等。

在本申请实施例中,通过数据同步服务工具将第一REDIS节点发送的第一数据同步指令进行处理得到第二数据同步指令,并向第二REDIS节点发送第二数据同步指令,使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。由上可以看出,第二REDIS节点根据数据同步服务工具的第二数据同步指令进行数据同步,因此,在与第一REDIS节点进行数据同步时,无需第二REDIS节点切换为第一REDIS节点的从节点,也即由数据同步服务工具作为第一REDIS节点和第二REDIS节点之间的桥梁进行信息的处理,在数据同步过程中不存在主节点和从节点的分别。因此,利用本申请实施例的方案,可使得第二REDIS节点进行数据的写入操作,从而使得第一REDIS节点和第二REDIS节点之间能够保持数据同步,实现了第一REDIS节点和第二REDIS节点之间的数据同步。

现有技术中,在主从同步模式下,从REDIS节点一直处于只读状态,不能提供写入服务;从REDIS节点只能单向从主REDIS节点同步数据;主从REDIS节点之间不支持双向同步,会引起数据同步回环问题。为解决上述问题,在本申请实施例中,设置数据同步服务工具REDIS-MT,通过数据同步服务工具REDIS-MT,REDIS节点之间可完成双向同步数据操作。

其中,数据同步服务工具MT可实现如下功能:指令解析、指令过滤、缓存指令批量写入、数据回环保护等。

以下,结合具体实施例详细描述一下本申请实施例的实现过程。

参见图4,为本申请实施例中指令处理系统的示意图,可包括源REDIS节点401,源REDIS节点侧的数据同步服务工具402,目的REDIS节点403,目的REDIS节点侧的数据同步服务工具404。其中,在将源REDIS节点的数据同步到目的REDIS节点的过程中,源REDIS节点相当于第一REDIS节点,目的REDIS节点相当于第二REDIS节点;在将目的REDIS节点的数据同步到源REDIS节点的过程中,目的REDIS节点相当于第一REDIS节点,源REDIS节点相当于第二REDIS节点。

其中,对于REDIS节点来讲,对其进行改进,使其支持新增指令“GXID${REDIS标识}START”和“GXID${REDIS标识}END”,新增的指令保存至Repl_Backlog结构中,主要用于在REDIS ReplBuffer(环形缓冲区)中记录REDIS指令的来源节点的信息。通过这种方式可最小的减少对现有协议的影响。

在该系统中,源REDIS节点侧的数据同步服务工具连接源REDIS节点成功后,接收并解析源REDIS节点的操作指令列表,按照配置的安全条件、指令来源标识等规则进行过滤。源REDIS节点侧的数据同步服务工具将过滤后的指令列表添加标识,并按REDIS通信协议发送到目的REDIS节点端执行。目的REDIS节点执行成功后,源REDIS节点侧的数据同步服务工具就完成了一次单向数据同步。同理,目的REDIS节点侧的数据同步服务工具也可按照同样的过程对源REDIS节点进行单向数据同步。至此,完成了双向数据同步。

在图5中,以源REDIS节点为REIDS-A,源REDIS节点侧的数据同步服务工具为REIDS-MT-A,目的REDIS节点为REIDS-B,目的REDIS节点侧的数据同步服务工具为REIDS-MT-B为例。本申请实施例的指令处理方法的具体过程可包括:

步骤501、REIDS-MT-A与REIDS-A之间利用同步协议(PSYNC2)实现拉取和解析待同步指令、每隔1秒上报同步偏移量、提供同步进度监控等。

步骤502、REIDS-A按REDIS协议(RESP2(Redis Serialization Protocolversion2,Redis序列化协议版本2))发送写指令和接收写指令响应结果。

步骤503、REIDS-MT-A读取配置文件。其中,配置文件可如表1所示。

步骤504、REDIS-MT-A执行单向数据同步过程,具体如下:

(1)REDIS-MT-A按配置的缓存大小建立待写入指令缓存,用于保存调整后的待写入指令。

(2)REDIS-MT-A按配置的同步定时器间隔开启定时扫描线程,在每次定时到时的时候发出“定时器到期”信号给后台写入线程。

(3)启动后台写入线程,后台写入线程等待“缓存指令满”和“定时器到期”信号。

(4)REDIS-MT-A向REDIS-A发起PSYNC指令。之后,REDIS-MT-A开始实时接收REDIS-A返回的Repl_Buffer中保存的指令,例如,该指令可以是“INCRBY KEYONE 10”。

(5)REDIS-MT-A对接收到的REDIS-A的指令列表进行处理,具体可包括:

(51)REDIS-MT-A按安全条件对指令列表进行过滤。如某个指令不符合安全条件,则可不处理该指令。

(52)对于符合安全条件的指令,判断其来源节点与待发送的目的节点是否一致,如一致,则可不处理该指令。

(53)来源标识检查通过后,将此指令保存到待写入指令缓存中。

(54)如果待写入指令缓存已满,则向后台写入线程发出“缓存指令满”信号,通过后台写入线程准备将缓存中指令以批量方式写入目的节点。

(6)后台写入线程在收到信号后,在缓存的第一个指令前加入“GXID A START”,在最后一个指令后加入“GXID A END”,并按标准REDIS通信协议发送到REDIS-B。

REDIS-B处理成功后,REDIS-MT-A就完成了一次数据同步操作。REDIS-MT-A循环上述过程,可实现REDIS-A向REDIS-B的实时单向数据同步。

同理,REIDS-MT-B的处理过程和上述原理相同。不同的是,此时的源REDIS节点为REIDS-B,目的节点为REIDS-B-MT。那么,相应的指令也需做对应的修改。

REIDS-B对接收到的REDIS-B的指令列表进行处理,具体可包括:

(511)REDIS-MT-B按安全条件对指令列表进行过滤。如某个指令不符合安全条件,则可不处理该指令。

(521)对于符合安全条件的指令,判断其来源节点与待发送的目的节点是否一致,如一致,则可不处理该指令。

(531)来源标识检查通过后,将此指令保存到待写入指令缓存中。

(541)如果待写入指令缓存已满,则向后台写入线程发出“缓存指令满”信号,通过后台写入线程准备将缓存中指令以批量方式写入目的节点。

假设REIDS-B收到的指令是:INCRBY KEYTWO 100。

其中,缓存的指令有:

GXID A START INCR KEYONE 10GXID A END。

在(521)中,经判断,缓存的指令中携带的节点A的标识和目的节点REIDS-A的标识相同,那么,REIDS-B将不处理“GXID A START INCR KEYONE 10GXID A END”,不再重新写入REIDS-A,从而避免了数据回环问题。

通过以上描述可以看出,在本申请实施例中,通过REDIS-MT来进行REDIS节点的实时同步,可以灵活地支持REDIS的各种同步需求,如“过滤非安全指令”等。在上述过程中,目的REDIS节点根据数据同步服务工具的数据同步指令进行数据同步,因此,在与源REDIS节点进行数据同步时,数据同步服务工具为源REDIS节点的从节点,无需目的REDIS节点切换为源REDIS节点的从节点。因此,利用本申请实施例的方案,可使得目的REDIS节点进行数据的写入操作,从而使得源REDIS节点和目的REDIS节点之间能够保持数据同步,提高了源REDIS节点和目的REDIS节点之间的数据同步性。此外,由于同步服务工具的数据同步指令中携带源REDIS节点的信息,那么,目的REDIS节点可根据该指令不将源REDIS节点提供的信息再重新返回到源REDIS节点中,从而避免了数据同步回环问题。

本申请实施例的方案,可应用在多机房部署的服务实例中。例如,假设实际应用中,各机房的服务实例只读写本机房部署的REDIS数据,同时在各机房的服务实例部署REDIS-MT,并由本机房服务实例的REDIS-MT双向同步REDIS数据到其他机房的服务实例。其中,业务请求将按照路由键和路由规则路由到对应机房的服务实例。由于REDIS-MT在实时同步REDIS数据到其他机房的服务实例,当某个机房出现故障情况时,可以由其他任一机房的服务实例接替继续处理应用业务请求,从而减少机房故障引起的服务中断时间。

假设机房A的服务实例A处理个人贷款业务,机房B的服务服务实例B处理个人保险业务,机房A和机房B由统一的控制中心设备进行监控。机房A的服务实例A和机房B的服务实例B均部署有REDIS-MT,机房A的服务实例A和机房B的服务服务实例B分别作为REDIS节点。

和前述描述的实施例的过程类似,机房A的服务实例A和机房B的服务实例B可分别通过各自设置的REDIS-MT进行双向的数据同步。

假设当前控制中心设备监测到机房A的服务实例A出现故障,那么,对于发送到机房A的服务实例A的业务请求,控制中心设备将其路由到机房B的服务实例B进行处理。由于机房B的服务实例B同步有机房A的服务实例A的数据,那么,机房B的服务实例B可代替机房A的服务实例A处理其业务请求,从而保证个人贷款业务的顺利进行。或者,如果机房A的服务实例A的数据同步到了多个机房,控制中心设备还可根据各机房的实际运行情况等,将发送到机房A的服务实例A的业务请求,路由到不同的机房进行处理,从而避免了某个机房的负载过重,保证了业务的顺利进行。

此外,本申请实施例还提供了一种数据同步方法,包括:

S1:第一REDIS节点向数据同步服务工具发送第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

S2:所述数据同步服务工具接收第一REDIS节点发送的第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

S3:所述数据同步服务工具对所述第一数据同步指令添加标识,得到第二数据同步指令;

S4:所述数据同步服务工具向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

其中,步骤S2-S4的具体实现过程可参照前述图1所示的实施例中步骤101-103的描述。并且,本申请实施例的技术效果和前述实施例的效果类似,本实施例此处不再赘述。

参见图6,图6是本申请实施例提供的数据同步装置的结构图,应用于数据同步服务工具。由于数据同步装置解决问题的原理与本申请实施例中数据同步方法相似,因此该数据同步装置的实施可以参见方法的实施,重复之处不再赘述。

如图6所示,数据同步装置600包括:

第一接收模块601,用于接收第一REDIS节点发送的第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;第一处理模块602,用于对所述第一数据同步指令添加标识,得到第二数据同步指令;第一发送模块603,用于向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令用于使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

在本申请实施例中,所述第一REDIS节点和所述第二REDIS节点处理不同的业务。

可选的,所述第一处理模块包括:

确定子模块,用于确定所述第一数据同步指令是否符合预设要求;获取子模块,用于在所述第一数据同步指令符合预设要求的情况下,在所述第一数据同步指令中添加第一标识和第二标识,得到所述第二数据同步指令;其中,所述第一标识用于表示所述第一数据同步指令的开始信息,所述第二标识用于表示所述第一数据同步指令的结束信息,所述第一标识和所述第二标识中的至少一个包括所述第一REDIS节点的信息。

可选的,所述确定子模块包括:

第一确定单元,用于确定所述第一数据同步指令是否满足预设的安全条件;

获取单元,用于在所述第一数据同步指令满足所述预设的安全条件的情况下,获取所述第一数据同步指令中携带的第一节点标识;

第二确定单元,用于若所述第一数据同步指令中携带的第一节点标识与所述第二REDIS节点的标识不一致,则确定所述第一数据同步指令符合所述预设要求。

可选的,所述获取子模块,用于:

如果所述第一数据同步指令为一条,则在所述第一数据同步指令之前添加所述第一标识,在所述第一数据同步指令之后添加所述第二标识,得到第二数据同步指令;

如果所述第一数据同步指令为两条以上,则在所述第一数据同步指令中的第一条数据同步指令之前添加所述第一标识,在所述第一数据同步指令中的最后一条数据同步指令之后添加所述第二标识,得到第二数据同步指令。

可选的,所述第一发送模块,用于当缓存已满和/或同步定时器到时时,向第二REDIS节点发送所述第二数据同步指令。

可选的,所述装置还可包括以下至少一个模块:

配置模块,用于预先配置配置文件,所述配置文件包括以下一项或者多项:

第一REDIS节点的信息,第二REDIS节点的信息,同步定时器的信息,缓存的信息。

本申请实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

参见图7,图7是本申请实施例提供的数据同步装置的结构图,应用于第一REDIS节点。由于数据同步装置解决问题的原理与本申请实施例中数据同步方法相似,因此该数据同步装置的实施可以参见方法的实施,重复之处不再赘述。

如图7所示,数据同步装置700包括:

第一发送模块701,用于向数据同步服务工具发送第一数据同步指令,所述第一数据同步指令是所述第一REDIS节点在接收到客户端的数据同步指令的情况下发送的;

其中,所述第一数据同步指令用于使得所述数据同步服务工具对所述第一数据同步指令添加标识,得到第二数据同步指令,并向第二REDIS节点发送所述第二数据同步指令,所述第二数据同步指令用于使得所述第二REDIS节点与所述第一REDIS节点实现数据同步。

可选的,所述装置还可包括:

同步模块,用于与所述数据同步服务工具进行数据同步。

本申请实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

参见图8,图8是本申请实施例提供的数据同步装置的结构图,应用于第二REDIS节点。由于数据同步装置解决问题的原理与本申请实施例中数据同步方法相似,因此该数据同步装置的实施可以参见方法的实施,重复之处不再赘述。

如图8所示,数据同步装置800包括:

第一接收模块801,用于接收数据同步服务工具发送的第二数据同步指令;第一处理模块802,用于根据所述第二数据同步指令,与第一REDIS节点进行数据同步。

可选的,所述第一处理模块包括:

解析子模块,用于对所述第二数据同步指令进行解析;处理子模块,用于根据解析结果,与第一REDIS节点进行数据同步。

本申请实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现包括如前所述的数据同步方法中的步骤。

本申请实施例还提供一种可读存储介质,可读存储介质上存储有程序,该程序被处理器执行时实现上述数据同步方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的可读存储介质,可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。根据这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁盘、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

相关技术
  • 数据库数据同步方法、装置、设备及可读存储介质
  • 一种分布式事务数据同步方法、装置、设备及可读存储介质
技术分类

06120112880822