CN108228397A - 一种集群间跨机房同步的方法和装置 - Google Patents
一种集群间跨机房同步的方法和装置 Download PDFInfo
- Publication number
- CN108228397A CN108228397A CN201611200103.8A CN201611200103A CN108228397A CN 108228397 A CN108228397 A CN 108228397A CN 201611200103 A CN201611200103 A CN 201611200103A CN 108228397 A CN108228397 A CN 108228397A
- Authority
- CN
- China
- Prior art keywords
- queue
- synchronization
- data
- increment
- state
- 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
Links
Classifications
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种集群间跨机房同步的方法和装置,以解决目前集群跨机房同步时延较长且同步可靠性较差的问题。该方法为,位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。这样能够基于同步状态实现跨机房同步,实时同步状态下使得同步时延较小,延时同步状态下保证数据同步的可靠性,使同步数据达到最终一致。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种集群间跨机房同步的方法和装置。
背景技术
目前针对一些大型网站业务,在系统可用性上往往会考虑数据库的跨机房镜像复制,容灾备份等,在发生不可抗力因素导致当地数据不可用时,能够快速的通过异步的数据库备份或者镜像提供系统访问。
目前,对于增量数据的跨机房同步已经有了一些实现方式。主要有以下三种:
第一种,同步数据传输。本地站点处理完数据更改请求后,将请求转发远程站点进行处理,并等待远程站点处理结果。这种同步方案,延迟长,容易造成阻塞,甚至服务假死,实际中很少使用。
第二种,异步数据传输。本地站点处理完数据更改请求后,将请求转发远程站点进行处理,不等待远程站点处理结果,这种同步方案,由于网络不稳定等原因,容易造成同步失败。
第三种,队列传输。本地站点处理完数据更改请求后,并为发生变更的数据创建用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列,本地站点根据所述FIFO队列中的索引键值,找到对应的发生变更的数据内容,向各远程站点发出同步指令,如同步失败,则将索引重新添加到队列的末尾,这种同步方案,因为所有同步请求都写入FIFO队列再处理,增加了中间过程,导致同步时延增长。
发明内容
本发明实施例提供一种集群间跨机房同步的方法和装置,以解决目前集群跨机房同步时延较长且同步可靠性较差的问题。
本发明实施例提供的具体技术方案如下:
第一方面,本发明实施例提供一种集群间跨机房同步的方法,包括:
位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;
在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
这样能够基于同步状态实现跨机房同步,实时同步状态下使得同步时延较小,延时同步状态下保证数据同步的可靠性,使同步数据达到最终一致。
可选的,所述方法还包括:
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统;
所述第一同步系统将所述增量数据写入到增量同步队列中,包括:
所述第一同步系统确定所述增量同步队列所处的状态;
所述第一同步系统基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中;
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
所述第一同步系统确定所述增量同步队列所处的状态;
所述第一同步系统基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统。
这种设计中,在实现增量同步时,基于增量同步队列的状态,从增量同步队列中读取数据,并将所述增量数据写入到增量同步队列中,能够自动实现增量数据的同步过程,保证同步数据的一致性。
可选的,所述增量同步队列包括普通队列和后备队列;
所述第一同步系统确定所述增量同步队列所处的状态,包括:
若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态;
若所述第一机房与所述第二机房间心跳失败次数达到所述预设阈值时,确定所述增量同步队列所处的状态为后备状态;
所述第一同步系统基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中,包括:
在所述增量同步队列所处的状态为正常状态时,将所述增量数据写入到所述普通队列中;
在所述增量同步队列所处的状态为后备状态时,将所述增量数据写入到所述后备队列中。
这种设计中,通过多层队列实现增量数据的同步过程,在增量同步队列为正常状态时,将增量数据写入普通队列,在增量同步队列为后备状态时,将增量数据写入后备队列,从而基于增量同步队列所处的状态,进行增量数据的同步,在网络故障时,也能实现数据的同步,防止数据丢失,保证同步数据的可靠性和一致性。
可选的,所述增量同步队列还包括前沿队列;
所述第一同步系统确定所述增量同步队列所处的状态,还包括:
若从所述增量同步队列中读取数据同步到所述第二同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态;
若从所述前沿队列中获取数据发送到所述第二同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
所述第一同步系统基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第二同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
这种设计中,在增量同步队列中的数据同步失败时,将同步失败的数据写入到前沿队列,使前沿队列中保存最早需要同步的数据,从而在所述增量同步队列的状态为前沿状态时,先从前沿队列中读取数据,使前沿队列的同步唯一,保证在增量同步队列中取出数据时,能够确保数据的顺序性。
可选的,在所述增量同步队列所处的状态为后备状态时,所述方法还包括:
从所述后备队列中读取设定数量的数据执行合并操作,并写入所述普通队列;和/或,
对所述普通队列中设定数量的数据执行合并操作。
这种设计中,通过数据的合并操作对大量的数据的进行有效压缩,提高数据同步效率。
可选的,所述第一同步系统将所述增量数据写入到增量同步队列中,包括:
所述第一同步系统将所述增量数据对应的更改动作和对应的索引键值和数据键值写入到所述增量同步队列中。
这种设计中,增量同步队列中保存数据更改时对应的更改动作,以及更改对应的索引键值和数据键值,由于数据更改时的增量数据对应的数据量较小,用这种方式使同步的数据量大大减小。
可选的,所述方法还包括:
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统;
在所述增量同步队列中无数据时,所述第一同步系统进入实时同步状态。
可选的,所述方法还包括:
从所述增量同步队列中读取数据并确定所述读取的数据对应的顺序编号,按照顺序编号的排列顺序依次同步读取的数据到所述第二同步系统。
可选的,所述第一同步系统向所述第二同步系统发送增量数据之前,所述方法还包括:
所述第一同步系统接收所述第二同步系统发送的全量扫描同步请求和索引参数;
所述第一同步系统基于所述全量扫描同步请求和所述索引参数,创建所述索引参数对应的索引键值,并获取所述索引键值对应的数据同步至所述第二同步系统;
所述第一同步系统在接收到全量同步队列的处理请求后,从全量同步队列中获取更改数据键值,并基于所述更改数据键值,获取全量扫描过程中发生更改的更改数据,并将所述更改数据同步至所述第二同步系统。
这种设计中,在实现增量数据同步之前,实现全量同步,使第二同步系统在第一同步系统已经有初始化数据情形下,可以在不停机时实现全量同步,保证同步双方数据一致。
第二方面,本发明实施例提供一种集群间跨机房同步的装置,应用于位于第一机房的第一同步系统中,包括:
收发单元,用于在第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;
处理单元,用于在发送所述增量数据失败时,使所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
可选的,所述处理单元还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
将所述增量数据写入到增量同步队列中,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中;
从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统。
可选的,所述增量同步队列包括普通队列和后备队列;
所述处理单元在确定所述增量同步队列所处的状态时,具体用于:
若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态;
若所述第一机房与所述第二机房间心跳失败次数达到所述预设阈值时,确定所述增量同步队列所处的状态为后备状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中,包括:
在所述增量同步队列所处的状态为正常状态时,将所述增量数据写入到所述普通队列中;
在所述增量同步队列所处的状态为后备状态时,将所述增量数据写入到所述后备队列中。
可选的,所述增量同步队列还包括前沿队列;
所述处理单元在确定所述增量同步队列所处的状态时,还用于:
若从所述增量同步队列中读取数据同步到所述第二同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态;
若从所述前沿队列中获取数据发送到所述第二同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第二同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
可选的,在所述增量同步队列所处的状态为后备状态时,所述处理单元还用于:
从所述后备队列中读取设定数量的数据执行合并操作,并写入所述普通队列;和/或,
对所述普通队列中设定数量的数据执行合并操作。
可选的,所述处理单元在将所述增量数据写入到增量同步队列中时,具体用于:
将所述增量数据对应的更改动作和对应的索引键值和数据键值写入到所述增量同步队列中。
可选的,所述处理单元还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
在所述增量同步队列中无数据时,使所述第一同步系统进入实时同步状态。
可选的,所述处理单元还用于:
从所述增量同步队列中读取数据并确定所述读取的数据对应的顺序编号,按照顺序编号的排列顺序依次同步读取的数据到所述第二同步系统。
可选的,所述收发单元在向所述第二同步系统发送增量数据之前,还用于:
接收所述第二同步系统发送的全量扫描同步请求和索引参数;
所述处理单元,还用于基于所述全量扫描同步请求和所述索引参数,创建所述索引参数对应的索引键值,并获取所述索引键值对应的数据同步至所述第二同步系统;
在接收到全量同步队列的处理请求后,从全量同步队列中获取更改数据键值,并基于所述更改数据键值,获取全量扫描过程中发生更改的更改数据,并将所述更改数据同步至所述第二同步系统。
本发明实施例中,位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。这样能够基于同步状态实现跨机房同步,实时同步状态下使得同步时延较小,延时同步状态下保证数据同步的可靠性,使同步数据达到最终一致。
附图说明
图1为本发明实施例的系统架构示意图;
图2为本发明实施例中全量数据同步过程示意图;
图3为本发明实施例中集群间跨机房同步的方法流程图;
图4为本发明实施例中普通状态和后备状态转化图;
图5为本发明实施例中增量数据同步的过程示意图;
图6为本发明实施例中实时同步状态和延时同步状态转化图;
图7为本发明实施例中数据同步时的操作过程示意图;
图8为本发明实施例中发送方和接收方按顺序一致性同步示意图;
图9为本发明实施例中集群间跨机房同步的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Redis是一种高效的内存数据库,而Redis Cluster是Redis的集群实现。因为服务器部署在不同的机房,需要在不同的机房中部署Redis Cluster;又因为安全备份和就近访问以提高访问速度等原因,需要在机房间进行同步。
本发明实施例提供的集群间跨机房同步的方法以Redis集群为例进行说明,显而易见的是,该方法同样适用于其他数据库形式的集群。
如图1所示,为本发明实施例的系统架构,包括至少两个机房,每个机房包括同步系统、先入先出(First Input First Output,FIFO)队列、Redis集群(Cluster)、分布式系统的可靠协调系统(ZooKeeper)。
机房间的同步是双向的,每个机房里的同步系统都是同步发起方和同步接收方。各机房通过配置文件指定要同步的Redis Cluster,以及同步目的方;要同步的RedisCluster可以是多个,同步目的方也可以有多个。同步系统至少部署在两个机房,也可以部署在多个机房,各机房两两同步,不影响其它之间的同步。
机房中支持的多个Redis Cluster在配置文件中设置即可,多个Redis Cluster的同步和一个Redis Cluster的同步过程相似,以后的例子只取一个Redis Cluster在不同机房间同步。下面以第一机房为机房A和第二机房为机房B之间同步为例,对本发明实施例进行说明。
首先说明全量数据同步过程。当两个机房间同步时,如果都没有初始数据,则不需要进行全量数据同步;如一方有数据,另一方没有数据,则有数据方向没有数据方做全量数据同步;不存在初始双方都有数据的情况,此时双方数据不一致,无法做同步。
例如,机房A中Redis Cluster已经运行了一段时间,要在机房B中也添加RedisCluster,以分担机房A的压力。
图2所示为全量数据同步过程示意图。首先,机房B的配置文件中对Redis Cluster配置了多个正则表达式,每个表达式定义从Redis Cluster中获取键(key)值的规则。这里定义多个正则表达式是为了尽量将获取的key值分割成多份,以减轻每次读取RedisCluster的返回量压力,并且可以使全量数据的同步处理在多个服务器中的系统上并行进行。
全量数据同步时提供接口,由外部调用触发。机房B的同步系统接收到全量数据同步命令后,向ZooKeeper注册,ZooKeeper则将此命令广播至机房B所有包含同步系统的服务器节点。每个同步系统节点向ZooKeeper注册一片没有被使用的正则片。
部署在B的同步系统向部署在A的同步系统发出全量扫描同步请求,并提供正则参数;A方接收到全量扫描同步请求后,调用Redis Cluster,根据正则参数获取对应的key列表;并对列表每隔一段分为一组,每组根据自身的key列表到Redis Cluster中获取对应的数据(value),打包后向B方同步;B方接收到同步数据后写入B的Redis Cluster。每组的同步方A不必等待同步结果,接着执行下一组即可。列表中数据都同步完成后,向B方发送此正则匹配项处理完成标志。B方记录此正则匹配项处理完成标志,并通过ZooKeeper广播,再从剩余的未处理正则片中取出一片,做同样的同步请求。当所有正则匹配项都处理完成后,全量扫描同步阶段完成。但不是全量数据同步完成。这里通过以分段同步的方式减小每次同步的数据量大小,缓解网络压力。
在全量扫描的过程中,对A机房中的Redis Cluster的读写也一直在运行中,所以也会进行更改数据等操作。全量数据同步也会对这部分数据进行处理。具体过程为:在进行全量扫描的同时,对于本机房A的Redis Cluster的写操作也会写入全量同步队列中,此全量同步队列中只记录key值即可,数据从Redis Cluster中回源获取。在全量扫描结束后,进行此部分数据的处理,具体过程如下:
B方向A方发出全量同步队列中的数据处理请求求,A方从全量同步队列中取出一段key值列表,因为全量同步队列中记录的是每步的写操作,可能有重复对同一key值的操作,首先对列表去重,对同一个key值只保留一个,然后到Redis Cluster中获取对应value,向B方同步。重复进行此动作直到全量同步队列中所有数据全部处理完毕,全量数据同步结束,此时机房A和机房B数据一致,两者间双向的同步状态都转为增量同步状态。
在全量数据同步过程中,如果有网络等原因导致同步不成功的情况,则进行等待重试,如果重试次数超过阈值,则此次全量数据同步失败,可以等网络转好后再手动调用。
图3所示为本发明实施例中集群间跨机房同步的方法流程图,具体包括以下步骤:
步骤31:位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据。
步骤32:在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
需要说明的是,增量数据的同步状态有两种状态:实时同步状态和延时同步状态。实时同步状态即同步的双方没有网络故障,每次同步都能顺利地发送到接收方,此时同步双方的时延最短。延时同步状态是机房间有网络故障导致无法发送成功时进入的状态,这时将同步数据写入增量同步队列中,该队列为FIFO队列,保证同步的数据不丢失,待网络正常时再做同步操作,此时双方有时延,但数据不会丢失,最终会同步过去,保证数据一致性。图4所示为实时同步状态到延时同步状态的转化图。
具体的,所述第一同步系统基于所述第一机房与所述第二机房之间的网络状态,确定增量数据的同步状态,通过以下过程实现:
S0:初始时,第一机房与第二机房之间的网络状态为正常,此时,增量数据的同步状态为实时同步状态。
S1:在所述第一机房与所述第二机房之间的网络状态由正常转变为故障时时或者第一机房或第二机房的服务器故障时,所述增量数据的同步状态由实时同步状态转变为延时同步状态。
S2:在所述第一机房与所述第二机房之间的网络状态由故障转变为正常,且所述增量同步队列中无数据时,所述增量数据的同步状态由延时同步状态转变为实时同步状态。
具体的,在所述增量数据的同步状态为延时同步状态时,确定所述增量同步队列所处的状态,包括以下方式:
方式一,在所述增量数据的同步状态为延时同步状态,若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态。
方式二,在所述增量数据的同步状态为延时同步状态,在所述第一机房与所述第二机房间心跳失败次数达到预设阈值时,确定所述增量同步队列所处的状态为后备状态。
方式三,在所述增量数据的同步状态为延时同步状态,从所述增量同步队列中读取数据同步到所述第一同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态。
方式四,在所述增量同步队列所处的状态为前沿状态,从所述前沿队列中获取数据同步到所述第一同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
在增量数据同步过程中,增量同步队列分为3种:普通队列、后备队列和前沿队列。并对应两组状态:普通状态、后备状态和前沿状态与非前沿状态。图4所示为普通状态和后备状态转化图,普通状态是后备队列无数据而普通队列里有数据的状态,此时需要同步数据时,写入普通队列;后备状态是机房间心跳失败次数超过预设阈值时进入的状态,此时有需要同步数据时,写入后备状态。前沿状态是从增量同步队列中取出数据再同步仍不成功时进入的状态,此时将数据写入前沿队列中,取增量同步队列中的数据时先从前沿队列中取数据;前沿队列中无数据时是非前沿状态。普通状态与后备状态相互转化,合称正规状态;非前沿状态与前沿状态相互转化。
需要说明的是,与全量数据同步时全量同步队列中只保存key值来回源数据不同,增量同步队列中保存这次更改的动作和对应的key-value。增量同步时有些操作如对list的操作,此key对应的value会非常大,而增量可能非常小,用这种方式可以使同步的数据量大大减小。
具体的,基于增量同步队列所处的状态,将同步的所述增量数据写入到所述增量同步队列中,包括以下情形:
情形一,在所述增量同步队列所处的状态为正常状态时,将同步的所述增量数据写入到所述普通队列中;
情形二,在所述增量同步队列所处的状态为后备状态时,将同步的所述增量数据写入到所述后备队列中。
具体的,基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括以下情况:
情况一,在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
情况二,在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第一同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
下面以第一机房为机房A向第二机房为机房B的同步数据为例,说明增量数据同步的过程,具体可参阅图5所示。
如图6所示为实时同步状态和延时同步状态转化图,初始增量数据同步时的同步状态为实时同步状态,如网络没有故障,每次A方发送数据至B方都能接收到,则同步状态一直处于实时状态。此时A方对Redis Cluster的修改动作即时发送到B方,B方对本机房的Redis Cluster做写入操作,同步完成。
当机房间网络发生故障时,如网络断开等导致A方无法顺利发送数据至B方,此时增量数据的同步状态进入延时同步状态,将同步数据写入A机房的增量同步队列中,并通过ZooKeeper通知A机房内系统所有服务器节点增量数据的同步状态进入延时同步状态。
对于延时状态的数据同步有3种方式可以触发。一种是A机房的Redis Cluster有数据更改时触发;另外一种是定时的触发;还有一种是人工的干预,手动调用系统接口触发批量同步,适用于网络故障时间较长,积压同步数据较多时进行。
图7所示为数据同步时的操作过程示意图。如图7所示,A方Redis Cluster有数据更新时,先查看增量同步队列所处的状态。如队列处于非前沿状态和普通状态,则从普通队列中取出定量条数的数据;如取出条数不足,说明普通队列中数据已取完,此时将更新的数据附在取出数据的最后;否则说明普通队列中还有数据,将更新数据写入普通队列的队尾,向B方做数据同步操作;如同步成功,则此次同步完成;如同步不成功,将同步数据写入前沿队列,队列状态进入前沿状态。
在前沿状态时,A方Redis Cluster有数据更新时,根据正规状态写入普通队列或后备队列,并从前沿队列中取出数据,向B方做数据同步操作,如同步成功,则转入非前沿状态,否则保持前沿状态,并把取出的数据写回前沿队列。
当A方到B方的心跳失败达到一定数量时,增量同步队列的正规状态进入后备状态。此时,当有数据更新时,写入后备队列的队尾。当处于非前沿状态时,先从普通队列里读取数据进行同步,如普通队列中无数据,则从后备队列中取数据同步。当心跳恢复并且后备队列中无数据时,正规状态转为普通状态。
定时的操作分为两种:数据同步和数据合并。
数据同步即从增量同步队列中取数据进行同步操作,跟数据更新时的操作类似。不同之处是没有新的数据要写入增量同步队列,当增量同步队列处于非前沿状态而普通队列和后备队列中都没有数据可读取时,同步状态变为实时同步状态。
数据合并是增量同步队列的正规状态处于后备状态时进行的操作,从后备队列中取出一定量的数据,对数据进行合并操作,并写入普通队列。此场景适用于机房间长时间断开的情况,这时会有大量待同步数据存放于本机房队列中,而其中很多操作是针对RedisCluster中同一key的操作,很多前面的操作会被后面的操作覆盖掉。例如:在机房断开的过程中出现很多次对同一key的设置(set)操作,最后的结果与只执行最后一次set操作结果相同,就可以把对这一key的多次操作合并为最后一次set操作。对同一key的多种操作也会有合并,普通队列中存放的是每隔一段时间合并后的数据。这样当网络恢复后,需同步的数据量会大量减少,提高同步速度。可选的,也可以从普通队列中取出一定量的数据,对数据进行合并操作。
以下为合并过程:
*+del=del
*+set=set
increment+decrement=increment-decrement
set+incre(decre)=set(value+incre(decre))
set+append=set(value+append)
del+incre(decre)=set(incre(decre))
del+append=set(append)
del+linsert=del
del+lpushx=del
del+rpushx=del
进一步的,针对延时状态的数据同步的第3种触发方式,即手动调用批量处理方式。外部调用批量过程为,A方每次从增量同步队列中取出一定量的数据向B方同步,如增量同步队列中还有数据,则再次取出同步,直到增量同步队列中没有数据为止,此时增量数据的同步状态进入实时同步状态。此场景适用于网络断开时间较长,积压同步数据较多,网络重新恢复正常的时候。可以快速处理积压的同步数据,使同步尽快进入实时同步状态。
整个同步的过程是实时同步优先,保证同步数据不丢失,尽量压缩数据,减少时延。当因网络原因进入延时同步状态后,系统会对延时数据做优化,并在网络恢复后,处理完延时同步,自动进入实时同步。
通过以上手段,保证同步发送方按顺序、不丢失数据的将数据同步到接收方。但因为接收是并发进行,并不能保证先发送的数据先接收到。为此,本发明实施例中对发送和接收的顺序一致性进行了设计,保证接收方也按顺序执行同步。
图8所示为发送方和接收方按顺序一致性同步示意图,如图8所示,发送方在同步之前领取一个顺序号,顺序号是按自然数排序的数,每次同步的顺序号都是上一次的顺序号+1,并取模,形成一个环形数组。将顺序号和对应的同步数据写入ZooKeeper,并发送同步。接收方接收到同步后,会先将此同步顺序号与上次同步完成的顺序号进行对比。如果两个顺序号是相邻数字,表示此次同步数据是按顺序发送的数据;否则说明还有同步数据是在此次同步之前发送的,只是因为网络并发等原因而没有接收到,接收方将此次同步数据写入ZooKeeper暂存;如果所需的相邻顺序号始终接收不到,并超过一定次数,则接收方主动向发送方发送请求,让发送方重发相邻顺序号数据;发送方到ZooKeeper中取出此顺序号数据,并同步发送,使发送方总会不遗漏数据的按顺序同步数据。接收方处理完按顺序的同步数据后,也会到ZooKeeper中查询已经接收到的排序在后边的同步数据并写入RedisCluster,并注销对应的ZooKeeper中数据。每处理完一次同步,都向发送方反馈此次同步完成,发送方到本机房中的ZooKeeper中注销对应的顺序号数据,节约内存空间。
综上所述,本发明实施例中,位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。这样能够基于同步状态实现跨机房同步,实时同步状态下使得同步时延较小,延时同步状态下保证数据同步的可靠性,使同步数据达到最终一致。
基于上述方法实施例,如图9所示,本发明实施例中提供一种集群间跨机房同步的装置,该装置应用于位于第一机房的第一同步系统中,包括:
收发单元91,用于在第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;
处理单元92,用于在发送所述增量数据失败时,使所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
可选的,所述处理单元92还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
将所述增量数据写入到增量同步队列中,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中;
从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统。
可选的,所述增量同步队列包括普通队列和后备队列;
所述处理单元92在确定所述增量同步队列所处的状态时,具体用于:
若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态;
若所述第一机房与所述第二机房间心跳失败次数达到所述预设阈值时,确定所述增量同步队列所处的状态为后备状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中,包括:
在所述增量同步队列所处的状态为正常状态时,将所述增量数据写入到所述普通队列中;
在所述增量同步队列所处的状态为后备状态时,将所述增量数据写入到所述后备队列中。
可选的,所述增量同步队列还包括前沿队列;
所述处理单元92在确定所述增量同步队列所处的状态时,还用于:
若从所述增量同步队列中读取数据同步到所述第二同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态;
若从所述前沿队列中获取数据发送到所述第二同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第二同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
可选的,在所述增量同步队列所处的状态为后备状态时,所述处理单元92还用于:
从所述后备队列中读取设定数量的数据执行合并操作,并写入所述普通队列;和/或,
对所述普通队列中设定数量的数据执行合并操作。
可选的,所述处理单元92在将所述增量数据写入到增量同步队列中时,具体用于:
将所述增量数据对应的更改动作和对应的索引键值和数据键值写入到所述增量同步队列中。
可选的,所述处理单元92还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
在所述增量同步队列中无数据时,使所述第一同步系统进入实时同步状态。
可选的,所述处理单元92还用于:
从所述增量同步队列中读取数据并确定所述读取的数据对应的顺序编号,按照顺序编号的排列顺序依次同步读取的数据到所述第二同步系统。
可选的,所述收发单元91在向所述第二同步系统发送增量数据之前,还用于:
接收所述第二同步系统发送的全量扫描同步请求和索引参数;
所述处理单元92,还用于基于所述全量扫描同步请求和所述索引参数,创建所述索引参数对应的索引键值,并获取所述索引键值对应的数据同步至所述第二同步系统;
在接收到全量同步队列的处理请求后,从全量同步队列中获取更改数据键值,并基于所述更改数据键值,获取全量扫描过程中发生更改的更改数据,并将所述更改数据同步至所述第二同步系统。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种集群间跨机房同步的方法,其特征在于,包括:
位于第一机房的第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;
在发送所述增量数据失败时,所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统;
所述第一同步系统将所述增量数据写入到增量同步队列中,包括:
所述第一同步系统确定所述增量同步队列所处的状态;
所述第一同步系统基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中;
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
所述第一同步系统确定所述增量同步队列所处的状态;
所述第一同步系统基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统。
3.如权利要求2所述的方法,其特征在于,所述增量同步队列包括普通队列和后备队列;
所述第一同步系统确定所述增量同步队列所处的状态,包括:
若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态;
若所述第一机房与所述第二机房间心跳失败次数达到所述预设阈值时,确定所述增量同步队列所处的状态为后备状态;
所述第一同步系统基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中,包括:
在所述增量同步队列所处的状态为正常状态时,将所述增量数据写入到所述普通队列中;
在所述增量同步队列所处的状态为后备状态时,将所述增量数据写入到所述后备队列中。
4.如权利要求3所述的方法,其特征在于,所述增量同步队列还包括前沿队列;
所述第一同步系统确定所述增量同步队列所处的状态,还包括:
若从所述增量同步队列中读取数据发送到所述第二同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态;
若从所述前沿队列中获取数据发送到所述第二同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
所述第一同步系统基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第二同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
5.如权利要求3或4所述的方法,其特征在于,在所述增量同步队列所处的状态为后备状态时,所述方法还包括:
从所述后备队列中读取设定数量的数据执行合并操作,并写入所述普通队列;和/或,
对所述普通队列中设定数量的数据执行合并操作。
6.如权利要求1所述的方法,其特征在于,所述第一同步系统将所述增量数据写入到增量同步队列中,包括:
所述第一同步系统将所述增量数据对应的更改动作和对应的索引键值和数据键值写入到所述增量同步队列中。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一同步系统从所述增量同步队列中读取数据同步到所述第二同步系统;
在所述增量同步队列中无数据时,所述第一同步系统进入实时同步状态。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
从所述增量同步队列中读取数据并确定所述读取的数据对应的顺序编号,按照顺序编号的排列顺序依次同步读取的数据到所述第二同步系统。
9.如权利要求1-8任一项所述的方法,其特征在于,所述第一同步系统向所述第二同步系统发送增量数据之前,所述方法还包括:
所述第一同步系统接收所述第二同步系统发送的全量扫描同步请求和索引参数;
所述第一同步系统基于所述全量扫描同步请求和所述索引参数,创建所述索引参数对应的索引键值,并获取所述索引键值对应的数据同步至所述第二同步系统;
所述第一同步系统在接收到全量同步队列的处理请求后,从全量同步队列中获取更改数据键值,并基于所述更改数据键值,获取全量扫描过程中发生更改的更改数据,并将所述更改数据同步至所述第二同步系统。
10.一种集群间跨机房同步的装置,应用于位于第一机房的第一同步系统中,其特征在于,包括:
收发单元,用于在第一同步系统在实时同步状态下,实时向位于第二机房的第二同步系统发送增量数据;
处理单元,用于在发送所述增量数据失败时,使所述第一同步系统进入延时同步状态,以及将所述增量数据写入到增量同步队列中。
11.如权利要求10所述的装置,其特征在于,所述处理单元还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
将所述增量数据写入到增量同步队列中,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中;
从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
确定所述增量同步队列所处的状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统。
12.如权利要求11所述的装置,其特征在于,所述增量同步队列包括普通队列和后备队列;
所述处理单元在确定所述增量同步队列所处的状态时,具体用于:
若所述后备队列中没有存储任何数据且所述第一机房与所述第二机房间心跳失败次数小于预设阈值时,确定所述增量同步队列所处的状态为正常状态;
若所述第一机房与所述第二机房间心跳失败次数达到所述预设阈值时,确定所述增量同步队列所处的状态为后备状态;
基于所述增量同步队列所处的状态,将所述增量数据写入到所述增量同步队列中,包括:
在所述增量同步队列所处的状态为正常状态时,将所述增量数据写入到所述普通队列中;
在所述增量同步队列所处的状态为后备状态时,将所述增量数据写入到所述后备队列中。
13.如权利要求12所述的装置,其特征在于,所述增量同步队列还包括前沿队列;
所述处理单元在确定所述增量同步队列所处的状态时,还用于:
若从所述增量同步队列中读取数据同步到所述第二同步系统的操作失败时,将同步的所述增量数据写入到所述第一机房的前沿队列中,确定所述增量同步队列所处的状态为前沿状态;
若从所述前沿队列中获取数据发送到所述第二同步系统的操作成功且所述前沿队列中无数据时,确定所述增量同步队列所处的状态为非前沿状态;
基于所述增量同步队列所处的状态,从所述增量同步队列中读取数据同步到所述第二同步系统,包括:
在所述增量同步队列所处的状态为前沿状态时,从所述前沿队列中读取数据同步到所述第二同步系统;
在所述增量同步队列所处的状态为非前沿状态时,先从所述普通队列中读取数据同步到所述第二同步系统,在所述普通队列中无数据时,再从所述后备队列中读取数据同步到所述第二同步系统。
14.如权利要求12或14所述的装置,其特征在于,在所述增量同步队列所处的状态为后备状态时,所述处理单元还用于:
从所述后备队列中读取设定数量的数据执行合并操作,并写入所述普通队列;和/或,
对所述普通队列中设定数量的数据执行合并操作。
15.如权利要求10所述的装置,其特征在于,所述处理单元在将所述增量数据写入到增量同步队列中时,具体用于:
将所述增量数据对应的更改动作和对应的索引键值和数据键值写入到所述增量同步队列中。
16.如权利要求10所述的装置,其特征在于,所述处理单元还用于:
从所述增量同步队列中读取数据同步到所述第二同步系统;
在所述增量同步队列中无数据时,使所述第一同步系统进入实时同步状态。
17.如权利要求10所述的装置,其特征在于,所述处理单元还用于:
从所述增量同步队列中读取数据并确定所述读取的数据对应的顺序编号,按照顺序编号的排列顺序依次同步读取的数据到所述第二同步系统。
18.如权利要求10-17任一项所述的装置,其特征在于,所述收发单元在向所述第二同步系统发送增量数据之前,还用于:
接收所述第二同步系统发送的全量扫描同步请求和索引参数;
所述处理单元,还用于基于所述全量扫描同步请求和所述索引参数,创建所述索引参数对应的索引键值,并获取所述索引键值对应的数据同步至所述第二同步系统;
在接收到全量同步队列的处理请求后,从全量同步队列中获取更改数据键值,并基于所述更改数据键值,获取全量扫描过程中发生更改的更改数据,并将所述更改数据同步至所述第二同步系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611200103.8A CN108228397A (zh) | 2016-12-22 | 2016-12-22 | 一种集群间跨机房同步的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611200103.8A CN108228397A (zh) | 2016-12-22 | 2016-12-22 | 一种集群间跨机房同步的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108228397A true CN108228397A (zh) | 2018-06-29 |
Family
ID=62656345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611200103.8A Pending CN108228397A (zh) | 2016-12-22 | 2016-12-22 | 一种集群间跨机房同步的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228397A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376197A (zh) * | 2018-09-28 | 2019-02-22 | 掌阅科技股份有限公司 | 一种数据同步方法、服务器及计算机存储介质 |
CN109561151A (zh) * | 2018-12-12 | 2019-04-02 | 北京达佳互联信息技术有限公司 | 数据存储方法、装置、服务器和存储介质 |
CN109684406A (zh) * | 2018-11-13 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 跨机房的redis集群备份数据的方法、装置、设备及存储介质 |
CN109710688A (zh) * | 2018-11-26 | 2019-05-03 | 福建天泉教育科技有限公司 | 一种数据实时比对校验方法及消息中间件 |
CN110795503A (zh) * | 2019-10-18 | 2020-02-14 | 北京达佳互联信息技术有限公司 | 分布式存储系统的多集群数据同步方法及相关装置 |
CN110941665A (zh) * | 2019-10-31 | 2020-03-31 | 北京浪潮数据技术有限公司 | 节点间的数据同步方法、数据同步装置及数据同步设备 |
WO2020134480A1 (zh) * | 2018-12-28 | 2020-07-02 | 中兴通讯股份有限公司 | 一种数据库主备复制延迟监控方法、装置和系统 |
CN111506587A (zh) * | 2020-03-31 | 2020-08-07 | 紫光云技术有限公司 | 一种基于Redis的异地双活方法 |
CN112653753A (zh) * | 2020-12-18 | 2021-04-13 | 平安银行股份有限公司 | 基于rpc的多机房独立多活方法、系统及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130304694A1 (en) * | 2012-05-04 | 2013-11-14 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform |
CN103678718A (zh) * | 2013-12-31 | 2014-03-26 | 金蝶软件(中国)有限公司 | 数据库同步方法及系统 |
CN103095769B (zh) * | 2011-11-04 | 2015-12-09 | 阿里巴巴集团控股有限公司 | 跨机房的数据同步方法以及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
-
2016
- 2016-12-22 CN CN201611200103.8A patent/CN108228397A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095769B (zh) * | 2011-11-04 | 2015-12-09 | 阿里巴巴集团控股有限公司 | 跨机房的数据同步方法以及系统 |
US20130304694A1 (en) * | 2012-05-04 | 2013-11-14 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform |
CN103678718A (zh) * | 2013-12-31 | 2014-03-26 | 金蝶软件(中国)有限公司 | 数据库同步方法及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376197A (zh) * | 2018-09-28 | 2019-02-22 | 掌阅科技股份有限公司 | 一种数据同步方法、服务器及计算机存储介质 |
CN109376197B (zh) * | 2018-09-28 | 2020-01-17 | 掌阅科技股份有限公司 | 一种数据同步方法、服务器及计算机存储介质 |
CN109684406A (zh) * | 2018-11-13 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 跨机房的redis集群备份数据的方法、装置、设备及存储介质 |
CN109710688A (zh) * | 2018-11-26 | 2019-05-03 | 福建天泉教育科技有限公司 | 一种数据实时比对校验方法及消息中间件 |
CN109561151A (zh) * | 2018-12-12 | 2019-04-02 | 北京达佳互联信息技术有限公司 | 数据存储方法、装置、服务器和存储介质 |
CN109561151B (zh) * | 2018-12-12 | 2021-09-17 | 北京达佳互联信息技术有限公司 | 数据存储方法、装置、服务器和存储介质 |
WO2020134480A1 (zh) * | 2018-12-28 | 2020-07-02 | 中兴通讯股份有限公司 | 一种数据库主备复制延迟监控方法、装置和系统 |
CN110795503A (zh) * | 2019-10-18 | 2020-02-14 | 北京达佳互联信息技术有限公司 | 分布式存储系统的多集群数据同步方法及相关装置 |
CN110941665A (zh) * | 2019-10-31 | 2020-03-31 | 北京浪潮数据技术有限公司 | 节点间的数据同步方法、数据同步装置及数据同步设备 |
CN111506587A (zh) * | 2020-03-31 | 2020-08-07 | 紫光云技术有限公司 | 一种基于Redis的异地双活方法 |
CN112653753A (zh) * | 2020-12-18 | 2021-04-13 | 平安银行股份有限公司 | 基于rpc的多机房独立多活方法、系统及电子设备 |
CN112653753B (zh) * | 2020-12-18 | 2023-04-07 | 平安银行股份有限公司 | 基于rpc的多机房独立多活方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228397A (zh) | 一种集群间跨机房同步的方法和装置 | |
CN108600353B (zh) | 一种区块链节点的并行块同步方法 | |
JP5776267B2 (ja) | 分散ファイルシステム | |
US9934242B2 (en) | Replication of data between mirrored data sites | |
CN103875229B (zh) | 异步复制方法、装置与系统 | |
CN108804523A (zh) | 数据同步方法、系统及计算机可读存储介质 | |
CN107231400B (zh) | 一种数据的同步方法和装置 | |
CN104092719A (zh) | 文件传输方法、装置及分布式集群文件系统 | |
US11265182B2 (en) | Messaging to enforce operation serialization for consistency of a distributed data structure | |
CN112052230B (zh) | 多机房数据同步方法、计算设备及存储介质 | |
CN113010496A (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CN110324166B (zh) | 一种在多个节点中同步目标信息的方法、装置及系统 | |
WO2019109953A1 (zh) | 日志处理方法、相关设备及系统 | |
CN104580425A (zh) | 一种客户端数据同步方法及系统 | |
CN105302670A (zh) | 一种采用多机冗余方式对车站进行监控的方法及装置 | |
WO2017016196A1 (zh) | 同步数据方法、装置及系统 | |
CN112965839B (zh) | 消息传输方法、装置、设备及存储介质 | |
KR101650691B1 (ko) | 소프트웨어 정의 네트워크에서 분산 컨트롤러를 운용하는 방법 및 장치 | |
CN105812492A (zh) | 一种数据同步方法及系统 | |
CN106855869A (zh) | 一种实现数据库高可用的方法、装置和系统 | |
CN116304390B (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
CN104967641B (zh) | 一种实现主备元服务器数据同步的方法及装置 | |
CN114598593A (zh) | 消息处理方法、系统、计算设备及计算机存储介质 | |
CN111813795A (zh) | 在区块链网络中确认交易的方法及装置 | |
CN110275802A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180629 |
|
WD01 | Invention patent application deemed withdrawn after publication |