CN110263093A - 数据同步方法、装置、节点、集群及存储介质 - Google Patents
数据同步方法、装置、节点、集群及存储介质 Download PDFInfo
- Publication number
- CN110263093A CN110263093A CN201910447215.0A CN201910447215A CN110263093A CN 110263093 A CN110263093 A CN 110263093A CN 201910447215 A CN201910447215 A CN 201910447215A CN 110263093 A CN110263093 A CN 110263093A
- Authority
- CN
- China
- Prior art keywords
- node
- order
- data
- host node
- operation commands
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据同步方法、装置、节点、集群及存储介质,以快速实现集群中的主节点与从属于该主节点的从节点之间的数据同步。该数据同步方法包括:将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对;将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
Description
技术领域
本公开涉及数据处理技术领域,具体地,涉及一种数据同步方法、装置、节点、集群及存储介质。
背景技术
在应用系统中,由于业务量的快速增长,需要应用系统有较好的并发能力,所以,应用系统往往采用集群部署。集群中可以包括主节点和从属于该主节点的多个从节点。为了保证数据的一致性,比如在主节点由于故障下线的情况下,需要实现新的主节点与从属于该新主节点的从节点之间的数据同步,或者在有新的主节点或从节点加入集群的情况下,也需要实现对应主节点和从属于该主节点的从节点之间的数据同步。
相关技术中,主要是通过全量数据同步的方式实现主节点和从属于该主节点的从节点之间的数据同步,即,将主节点的全部数据发送给对应从节点,从而实现主节点和该从节点之间的数据同步。但是,在高并发的应用场景下,全量数据同步的方式需要耗费较多的网络资源,无法快速实现主节点和从属于该主节点的从节点之间的数据同步。
发明内容
本公开的目的是提供一种数据同步方法、装置、节点、集群及存储介质,以快速实现主节点和从属于该主节点的从节点之间的数据同步。
为了实现上述目的,第一方面,本公开提供一种数据同步方法,应用于主节点,包括:
将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对;
将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,其中,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
可选地,在将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对之前,所述方法还包括:
根据所述主节点的节点标识和所述从节点的节点标识,确定所述主节点和所述从节点属于同一数据分区。
可选地,所述方法还包括:
每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在所述命令存储区域中的存储地址连续;
每在所述命令存储区域写入一新的数据操作命令,更新所述命令存储区域的最大命令偏移量,其中,所述最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址。
可选地,所述将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对,包括:
将所述主节点的命令存储区域的最大命令偏移量与所述从节点的命令存储区域的最大命令偏移量进行比对;
所述将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,包括:
若所述主节点的命令存储区域的最大命令偏移量大于所述从节点的命令存储区域的最大命令偏移量,则确定所述从节点的命令存储区域的最大命令偏移量大小在所述主节点的命令存储区域中对应的目标偏移地址;
将所述主节点的命令存储区域中,所述目标偏移地址之后,以及该命令存储区域的最大偏移地址以前存储的数据操作命令作为所述目标操作命令。
可选地,包括所述主节点和所述从节点的集群处于故障切换状态,所述方法还包括:
确定所述集群的平均故障切换时间以及所述主节点接收数据操作命令的速率;
根据所述平均故障切换时间和所述速率,确定目标存储容量;
创建存储容量为所述目标存储容量的所述命令存储区。
第二方面,本公开还提供一种数据同步方法,应用于从节点,所述方法包括:
接收主节点发送的目标操作命令,所述目标操作命令是在所述主节点中存储且所述从节点中未存储的数据操作命令,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步;
执行所述目标操作命令。
可选地,所述方法还包括:
每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在所述命令存储区域中的存储地址连续;
每在所述命令存储区域写入一新的数据操作命令,更新所述命令存储区域的最大命令偏移量,其中,所述最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址;
将更新后的所述最大命令偏移量发送给所述主节点。
第三方面,本公开还提供一种数据同步装置,应用于主节点,包括:
比对模块,用于将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对;
发送模块,用于将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,其中,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
第四方面,本公开还提供一种数据同步装置,应用于从节点,包括:
接收模块,用于接收主节点发送的目标操作命令,所述目标操作命令是在所述主节点中存储且所述从节点中未存储的数据操作命令,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步;
执行模块,用于执行所述目标操作命令。
第五方面,本公开还提供一种主节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中中任一项所述方法的步骤。
第六方面,本公开还提供一种从节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第二方面中任一所述方法的步骤。
第七方面,本公开还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面和第二方面中任一项所述方法的步骤。
第八方面,本公开还提供一种存储集群,包括一个第六方面所述的主节点和至少一个第七方面所述的从节点。
通过上述技术方案,可以将主节点存储的数据操作命令与从节点存储的数据操作命令进行比对,然后将在主节点存储且从节点中未存储的数据操作命令作为目标操作命令,并将该目标操作命令发送给从节点,从而可以使得从节点根据该目标操作命令更新自身存储的数据,最终实现主节点与从节点之间的数据同步。相较于相关技术中全量数据同步的方式,本公开的数据同步方法通过向从节点发送目标操作命令的方式可以快速实现主节点与从节点之间的数据同步。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种集群架构示意图。
图2是根据本公开一示例性实施例示出的一种数据同步方法的流程图;
图3是根据本公开另一示例性实施例示出的一种数据同步方法的流程图;
图4是根据本公开另一示例性实施例示出的一种数据同步方法的流程图;
图5是根据本公开一示例性实施例示出的一种数据同步装置的框图;
图6是根据本公开另一示例性实施例示出的一种数据同步装置的框图;
图7是根据本公开一示例性实施例示出的一种主节点的框图;
图8是根据本公开一示例性实施例示出的一种从节点的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在应用系统中,由于业务量的快速增长,需要应用系统有较好的并发能力,所以,应用系统往往采用集群部署。集群中可以包括主节点和从属于该主节点的多个从节点。例如,集群的架构示意图可以如图1所示,该集群中可以包括多个主节点和多个从节点,其中从节点A、B、C从属于主节点1,从节点D、E、F从属于主节点2,从节点G、H、I从属于主节点3。并且,该集群可以通过包括多个监控节点的监控节点集合监控主节点和从节点状态,并对集群的各项性能进行监控。
为了保证数据一致性,比如在主节点由于故障下线的情况下,需要实现新的主节点与从属于该新主节点的从节点之间的数据同步,或者在有新的主节点或从节点加入集群的情况下,也需要实现对应主节点和从节点之间的数据同步。
相关技术中,主要是通过全量数据同步的方式实现主节点和从属于该主节点的从节点之间的数据同步,即,将主节点的全部数据发送给对应从节点,从而实现主节点和该从节点之间的数据同步。但是,在高并发的应用场景下,全量数据同步的方式需要耗费较多的网络资源,无法快速实现主节点和从属于该主节点的从节点之间的数据同步。
为了解决相关技术中存在的技术问题,本公开实施例提供一种数据同步方法、装置、节点、集群及存储介质,以通过向从节点发送目标操作命令的方式快速实现集群中主节点和从属于该主节点的从节点之间的数据同步,提高数据同步的效率。
图2是根据本公开一示例性实施例示出的一种数据同步方法的流程图。参照图2,该数据同步方法可以应用于主节点,可以包括以下步骤:
步骤S201,将主节点存储的数据操作命令与从节点存储的数据操作命令进行比对。
示例地,主节点和从节点可以是服务器节点、分布式缓存节点、数据库节点等等不同形式,本公开实施例对此不作限定。
例如,包括主节点和从节点的集群架构可以如图1所示,那么本公开实施例中的主节点可以是节点1、2、3中的任一主节点。在主节点为节点1的情况下,步骤S201中的从节点可以是从节点A、B、C中的至少一个。相应地,在主节点为节点2的情况下,步骤S201中的从节点可以是从节点D、E、F中的至少一个。在主节点为节点3的情况下,步骤S201中的从节点可以是从节点G、H、I中的至少一个。也即是说,步骤S201中的从节点可以是从属于主节点的任意从节点。当然,在其他可能的情况下,从节点也可以是集群中的任意从节点,本公开实施例对此不作限定。
示例地,数据操作命令包括用于对节点存储的数据进行修改,写入以及删除操作的命令,其中,该数据操作命令可以是主节点从集群外部设备获取到的,也可以是主节点自身生成的。并且,为了保持主节点与从节点的数据一致,主节点通常会将数据操作命令发送给从节点,这样,主节点和从节点通过执行相同的数据操作命令实现存储数据的一致性。然而由于主节点可能发生故障,或者是网络故障等原因,可能导致从节点未接收到主节点发送的数据操作命令,并且主节点也无法获知从节点哪些数据操作命令未接收到,例如,由于上一任主节点发生故障,而成为新的主节点的节点,就无法获知上一任主节点哪些数据操作命令为发送至从节点。在此种情况下,可以通过本公开实施例的方法实现主节点与从节点之间的数据一致性。
示例地,在本公开实施例中,节点可以接收数据操作命令,并将接收到的数据操作命令进行保存,因此在步骤S201中主节点可以直接获取存储的数据操作命令用于比对。而从节点存储的数据操作命令可以是从节点在接收到数据操作命令后主动发给主节点的,也可以是主节点先向从节点发送获取数据操作命令的请求,然后从节点响应于该请求向主节点发送的,等等,本公开实施例对此不作限定。
步骤S202,将在主节点中存储且从节点中未存储的数据操作命令作为目标操作命令,并将目标操作命令发送给所述从节点。其中,目标操作命令用于被从节点执行以实现主节点与从节点之间的数据同步。
例如,主节点和从节点存储的数据都为3,然后主节点接收并存储了用于将节点数据自减1的数据操作命令,而从节点未接收并存储该数据操作命令。也即是说,可能存在主节点的数据变为2,而从节点的数据仍为3的情况,那么为了实现主节点和从节点之间的数据同步,在本公开实施例中可以将该用于节点数据自减1的数据操作命令作为目标操作命令并发送给从节点。然后,从节点可以通过执行接收到的目标操作命令更新自身存储的数据,即,从节点可以通过执行目标操作命令将节点数据变为2,从而可以实现主节点与从节点之间的数据同步。
通过上述方式,主节点无需向从节点发送主节点的数据以实现主节点与从节点之间的数据同步,在高并发的场景下,可以快速实现主节点与从节点的数据同步,提高数据同步效率。
在一种可能的方式中,在将主节点存储的数据操作命令与从节点存储的数据操作命令进行比对之前,还可以先根据主节点的节点标识和从节点的节点标识,确定主节点和从节点属于同一数据分区。
示例地,节点的节点标识可以是用于唯一标识该节点的字符或字符串,可以是数字、字母或两者的结合等不同的形式,本公开实施例对此不作限定。比如,节点的节点标识可以表示为A,或者节点的节点标识可以表示为001,又或者节点的节点标识可以表示为A001。
示例地,数据分区可以包括唯一主节点和多个从属于该主节点的从节点。比如,参照图1,主节点1和从节点A、B、C属于同一数据分区,主节点2和从节点D、E、F属于同一数据分区,主节点3和从节点G、H、I属于同一数据分区。
应当理解的是,属于同一数据分区的主节点和从节点可以具有相同的节点标识。在一种可能的方式中,属于同一数据分区的节点标识可以通过该数据分区中的唯一主节点的节点标识进行表示,即属于同一数据分区的主节点可以将自身节点标识发送给从属于该主节点的多个从节点,从而该多个从节点可以将该主节点的节点标识作为自身节点标识。
比如,参照图1,主节点1的节点标识为Mid1,那么主节点1可以将自身节点标识Mid1发送给该数据分区中的其他从节点A、B、C,那么从节点A、B、C的节点标识则均可以表示为Mid1,从而通过比对主节点和从节点的节点标识是否一致,可以确定主节点和从节点是否属于同一数据分区。
如果主节点和从节点的节点标识一致,则说明主节点和从节点属于同一数据分区。对于同一数据分区的从节点,其数据操作命令是从主节点处接收到的。在高并发的场景下,主节点发送给从节点的数据操作命令可能存在较大的延迟,从而可能影响主节点与从节点之间的数据一致性。
因此,在本公开实施例中,在确定主节点与从节点属于同一数据分区后,可以将主节点存储的数据操作命令与从节点的数据操作命令进行比对,然后将在主节点中存储且从节点中未存储的数据操作命令作为目标操作命令并发送给从节点。由于主节点与从节点属于同一数据分区,主节点存储的数据操作命令与从节点存储的数据操作命令间的差异较小,因此通过上述方式,可以更加快速地实现主节点与从节点之间的数据同步,提高数据同步的效率。
在其他可能的情况下,如果主节点和从节点的节点标识不一致,则说明主节点和从节点不属于同一数据分区,那么主节点存储的数据操作命令与从节点存储的数据操作命令间差异可能会较大。在此种情况下,可以在主节点中存储且从节点中未存储的数据操作命令作为目标操作命令并发送给从节点以实现数据同步,也可以直接将主节点的全部数据发送给从节点以实现数据同步,或者还可以结合上述两种方式实现主节点和从节点之间的数据同步,本公开实施例对此不作限定。
应当理解的是,如果从节点与主节点属于同一数据分区,那么从节点存储的数据操作命令均是由同一数据分区中的主节点依次发送给从节点的。也就是说,从节点的数据操作命令均是来源于主节点。并且,主节点存储的各个数据操作命令之间的顺序与从节点存储的各个数据操作命令之间的顺序相同,因此,可以通过比对用于表征数据操作命令顺序的参数来确定主节点中存储且从节点中未存储的数据操作命令,比如可以通过比对节点中数据操作命令的存储地址来确定主节点中存储且从节点中未存储的数据操作命令,或者可以通过比对最大命令偏移量来确定主节点中存储且从节点中未存储的数据操作命令。
对于比对最大命令偏移量的方式,主节点和从节点需存储最大命令偏移量,并在每接收到一个数据操作命令后,更新该最大命令偏移量,以通过该最大命令偏移量表征节点最近一次接收到的数据操作命令的偏移地址,便于后续的比对过程。
在一种可能的方式中,可以每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,然后每在命令存储区域写入一新的数据操作命令,更新命令存储区域的最大命令偏移量。
其中,各数据操作命令在命令存储区域中的存储地址连续,最大命令偏移量用于表征已存储的数据操作命令在命令存储区域中的最大偏移地址。
各数据操作命令在命令存储区域中的存储地址连续即是说各数据操作命令在命令存储区域中的偏移地址连续。其中,偏移地址是计算机里的内存分段后,在段内某一地址相对于段首地址的偏移量。对于属于同一数据分区的主节点和从节点,主节点存储的各个数据操作命令之间的顺序与从节点存储的各个数据操作命令之间的顺序相同,那么主节点与从节点存储的各数据操作命令的偏移地址也对应相同,从而可以通过主节点的最大偏移地址和从节点的最大偏移地址确定主节点中存储且从节点中未存储的数据操作命令。
或者,为了提高比对的效率,可以通过最大命令偏移量来表征已存储的数据操作命令在命令存储区域中的最大偏移地址。相应地,可以每在命令存储区域写入一新的数据操作命令,更新该命令存储区域的最大命令偏移量,然后在比对时,将最大命令偏移量进行比较。
其中,更新最大命令偏移量的过程可以是每在命令存储区域写入一新的数据操作命令,则将最大命令偏移量增加1,或者可以每在命令存储区域写入一新的数据操作命令,则将最大命令偏移量增加该数据操作命令对应的字节数,等等,本公开实施例对此不作限定。
在一种可能的方式中,上述步骤S201可以是将主节点的命令存储区域的最大命令偏移量与从节点的命令存储区域的最大命令偏移量进行比对。相应地,上述步骤S202可以是若主节点的命令存储区域的最大命令偏移量大于从节点的命令存储区域的最大命令偏移量,则确定从节点的命令存储区域的最大命令偏移量大小在主节点的命令存储区域中对应的目标偏移地址,然后将主节点的命令存储区域中,目标偏移地址之后,以及该命令存储区域的最大偏移地址以前存储的数据操作命令作为目标操作命令。
最大命令偏移量可以表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址,因此本公开实施例中可以将主节点和从节点中的最大命令偏移量进行比对,若最大命令偏移量相同,则表明主节点和从节点中的数据一致,无需进行差异数据的同步。
若最大命令偏移量不相同,则可以进一步确定从节点的命令存储区域的最大命令偏移量大小在主节点的命令存储区域中对应的目标偏移地址,然后将主节点的命令存储区域中,目标偏移地址之后,以及该命令存储区域的最大偏移地址以前存储的数据操作命令作为目标操作命令。
应当理解的是,目标偏移地址之后存储的数据操作命令不包括该目标偏移地址存储的数据操作命令,而最大偏移地址以前存储的数据操作命令则包括该最大偏移地址以前存储的数据操作命令
例如,从节点中的最大命令偏移量为10008,主节点中的最大命令偏移量为12001,主节点与从节点的最大命令偏移量不相同,则可以进一步确定从节点的命令存储区域的最大命令偏移量大小在主节点的命令存储区域对应的目标偏移地址,即先确定从节点的最大命令偏移量表征的最大偏移地址,比如,从节点的最大命令偏移量表征的最大偏移地址为100,那么目标偏移地址即为100。
然后将主节点的命令存储区域中,目标偏移地址之后,以及该命令存储区域的最大偏移地址以前存储的数据操作命令作为目标操作命令。比如,在上述举例中,主节点的最大命令偏移量12001表征的最大偏移地址为102,那么可以在主节点的命令存储区域中,将目标偏移地址100之后,以及主节点的最大偏移地址102以前的数据操作命令作为目标操作命令,也就是将偏移地址101和102存储的数据操作命令作为目标操作命令。
采用上述方式,避免了对数据操作命令进行一一比对,加快了比对速率,进而提高了数据同步效率。
在本公开实施例中,为了减小存储空间,进一步提高数据同步效率,用于存储数据操作命令的命令存储区域可以是固定长度的先入先出队列结构,用户可以根据实际情况确定命令存储区域的存储容量,本公开实施例对此不作限定。
在一种可能的方式中,如果包括主节点和从节点的集群处于故障切换状态,那么命令存储区域的创建过程可以是:先确定集群的平均故障切换时间以及主节点接收数据操作命令的速率,然后根据该平均故障切换时间以及该速度,确定目标存储容量,最后创建存储容量为该目标存储容量的命令存储区域。
示例地,故障切换是指集群中的某一主节点由于故障下线或由于停机下线而需要切换主节点的情况。切换主节点可以是在从属于该主节点的多个从节点中确定一个目标从节点作为新的主节点。比如,参照图1,如果主节点1由于故障下线,那么可以在从节点A、B、C中确定一个目标从节点作为新的主节点。应当理解的是,在本公开实施例中,可以将最大命令偏移量最大的从节点作为新的主节点,或者也可以按照相关技术中的其他方式确定新的主节点,本公开实施例对此不作限定。
示例地,集群的平均故障切换时间是指从集群中的某一主节点下线开始到完成新的主节点与从节点间的数据同步的时间,可以是根据历史数据预先设定的,等等,本公开实施例对此不作限定。
示例地,主节点接收数据操作命令的速率可以是根据历史数据确定的,比如预先统计主节点在预设时长内接收的数据操作命令总量,然后将该数据操作命令总量与该预设时长作除,得到主节点接收数据操作命令的速率。或者,主节点接收数据操作命令的速率也可以是在执行本公开实施例的过程中通过周期性统计而确定的。具体地,可以是在执行本公开实施例的过程中,周期性统计预设时长内接收的数据操作命令总量,然后将该数据操作命令总量与该预设时长作除,得到主节点接收数据操作命令的速率。
在确定集群的平均故障切换时间以及主节点接收数据操作命令的速率之后,可以根据该平均故障切换时间以及该速度,确定目标存储容量。例如,可以按照以下公式,确定目标存储容量:
其中,BufferSize为目标存储容量,Tf为平均故障切换时间,WS为预设时长内主节点T时间内接收到的数据操作命令总量。
在确定目标存储容量后,可以创建存储容量为目标存储容量的命令存储区域,用于存储接收到的数据操作命令和对应的命令偏移量,并每在命令存储区域写入一新的数据操作命令,更新该命令存储区域的最大命令偏移量。通过这样的方式,在需要进行主从节点进行数据同步的场景中,只需比对主节点与从节点命令存储区域存储的数据操作命令,然后将主节点中存储且从节点未存储的数据操作命令作为目标操作命令发送给从节点,从而快速实现主节点和从节点之间的数据同步,提高数据同步效率。
基于同一发明构思,参照图3,本公开实施例还可以提供一种数据同步方法,该数据同步方法可以应用于从节点,可以包括以下步骤:
步骤S301,接收主节点发送的目标操作命令。
其中,目标操作命令是在主节点中存储且从节点中未存储的数据操作命令,并且,目标操作命令可以用于被所述从节点执行以实现主节点与所述从节点之间的数据同步。应当理解的是,目标操作命令的确定过程已在上文主节点部分中进行详细说明,这里不再赘述。
步骤S302,执行目标操作命令。
通过上述方式,从节点可以通过执行目标操作命令更新自身存储的数据,从而快速实现与主节点的数据同步,相较于相关技术中全量数据同步的方式,上述方式无需从节点接收主节点的全部数据,既可以提高数据同步的效率,也可以减少从节点的数据接收和存储压力。
在一种可能的方式中,从节点还可以每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在命令存储区域中的存储地址连续。然后每在命令存储区域写入一新的数据操作命令,更新命令存储区域的最大命令偏移量,最后将更新后的最大命令偏移量发送给主节点。
其中,最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址,其具体的更新方式与主节点的最大命令偏移量类似,这里不再赘述。同样地,从节点中用于存储数据操作命令的命令存储区的创建过程也与主节点类似,这里不再赘述。
通过上述方式,从节点可以将获取的最大命令偏移量主动发送给主节点。当然在其他可能的情况下,从节点也可以响应于接收到主节点发送的获取最大命令偏移量的请求,将自身最大命令偏移量发送给主节点,本公开实施例对此不作限定。
下面以故障切换场景为例对本公开中的数据同步方法进行说明。参照图4,该数据同步方法可以包括以下步骤:
步骤S401,主节点M和从节点S1、S2创建命令存储区。
步骤S402,主节点M向从节点S1、S2发送自身节点标识。
步骤S403,从节点S1、S2将接收到的节点标识作为自身节点标识进行存储。
步骤S404,主节点M响应于接收到数据操作命令,将接收到的数据操作命令存储到命令存储区;
步骤S405,主节点M更新最大命令偏移量,并将更新后的最大命令偏移量存储到命令存储区。
步骤S406,主节点M将接收到的数据操作命令发送给从节点S1、S2。
步骤S407,从节点S1、S2接收主节点M发送的数据操作命令,并将接收到的数据操作命令存储到命令存储区。
步骤S408,从节点S1、S2更新命最大令偏移量,并将更新后的最大命令偏移量存储到命令存储区。
步骤S409,监控节点确定是否发送故障切换,如果是,则进入步骤S410,否则,进入步骤S404。
步骤S410,监控节点将从节点S2确定为新的主节点。
步骤S411,新的主节点S2向从节点S1发送数据同步请求。其中,该数据同步请求用于请求从节点S1的节点标识和最大命令偏移量。
步骤S412,从节点S1向新的主节点S2发送自身标识和最大命令偏移量。
步骤S413,新的主节点S2确定自身是否与从节点S1属于同一数据分区,如果是,则进入步骤S414,否则进入步骤S415。
步骤S414,新的主节点S2确定自身最大命令偏移量是否大于从节点S1的最大命令偏移量,如果是,则进入步骤S416,否则进入步骤S415。
步骤S415,新的主节点S2发送自身节点标识、自身最大命令偏移量以及存储的全部数据给从节点S1。
步骤S416,新的主节点S2将自身节点标识发送给从节点S1,并将自身存储有且从节点S1未存储的数据操作命令作为目标操作命令发送给从节点S1。
步骤S417,从节点S1执行接收到的目标操作命令,并根据接收到的节点标识更新自身节点标识,从而与主节点的数据同步。
上述各步骤的具体实施方式已在上文进行详细举例说明,这里不再赘述。另外应当理解的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受上文所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,上文所描述的实施例属于优选实施例,所涉及的步骤并不一定是本公开所必须的。
通过上述数据同步方法,在高并发的场景下,可以快速实现主节点与从节点的数据同步,提高数据同步效率。并且,可以减少故障切换状态下的数据同步量和故障切换的时间,提高了集群的可用性。
基于同一发明构思,参照图5,本公开实施例还可以提供一种数据同步装置500。该数据同步装置500可以通过软件、硬件或两者结合的方式成为主节点的部分或全部,可以包括:
比对模块501,用于将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对。
发送模块502,用于将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
可选地,所述装置500还包括:
第一确定模块,用于在将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对之前,根据所述主节点的节点标识和所述从节点的节点标识,确定所述主节点和所述从节点属于同一数据分区。
可选地,所述装置500还包括:
第一存储模块,用于每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在所述命令存储区域中的存储地址连续;
第一更新模块,用于每在所述命令存储区域写入一新的数据操作命令,更新所述命令存储区域的最大命令偏移量,其中,所述最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址。
可选地,所述比对模块501用于:
将所述主节点的命令存储区域的最大命令偏移量与所述从节点的命令存储区域的最大命令偏移量进行比对;
所述发送模块502用于:
当所述主节点的命令存储区域的最大命令偏移量大于所述从节点的命令存储区域的最大命令偏移量时,确定所述从节点的命令存储区域的最大命令偏移量大小在所述主节点的命令存储区域中对应的目标偏移地址;将所述主节点的命令存储区域中,所述目标偏移地址之后,以及该命令存储区域的最大偏移地址以前存储的数据操作命令作为所述目标操作命令,并将所述目标操作命令发送给所述从节点。
可选地,包括所述主节点和所述从节点的集群处于故障切换状态,所述装置500还包括:
第二确定模块,用于确定所述集群的平均故障切换时间以及所述主节点接收数据操作命令的速率;
第三确定模块,用于根据所述平均故障切换时间和所述速率,确定目标存储容量;
创建模块,用于创建存储容量为所述目标存储容量的所述命令存储区。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述任一数据同步装置,可以向从节点发送目标操作命令,以快速实现主节点与从节点之间的数据同步,提高主节点与从节点之间的数据同步。
基于同一发明构思,参照图6,本公开实施例还可以提供一种数据同步装置600。该数据同步装置600可以通过软件、硬件或两者结合的方式成为从节点的部分或全部,可以包括:
接收模块601,用于接收主节点发送的目标操作命令,所述目标操作命令是在所述主节点中存储且所述从节点中未存储的数据操作命令,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步;
执行模块602,用于执行所述目标操作命令。
可选地,所述装置600还包括:
第二存储模块,用于每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在所述命令存储区域中的存储地址连续;
第二更新模块,用于每在所述命令存储区域写入一新的数据操作命令,更新所述命令存储区域的最大命令偏移量,其中,所述最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址;
偏移量发送模块,用于将更新后的所述最大命令偏移量发送给所述主节点。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述任一数据同步装置,从节点可以通过执行目标操作命令更新自身存储的数据,从而快速实现与主节点的数据同步,提高数据同步的效率。
基于同一发明构思,本公开实施例还可以提供一种主节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述任一应用于主节点的数据同步方法的步骤。
在一种可能的方式中,该主节点的框图可以如图7所示。参照图7,主节点700可以被提供为一服务器,可以包括处理器722,其数量可以为一个或多个,以及存储器732,用于存储可由处理器722执行的计算机程序。存储器732中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器722可以被配置为执行该计算机程序,以执行上述任一应用于主节点的数据同步方法。
另外,主节点700还可以包括电源组件726和通信组件750,该电源组件726可以被配置为执行主节点700的电源管理,该通信组件750可以被配置为实现主节点700的通信,例如,有线或无线通信。此外,该主节点700还可以包括输入/输出(I/O)接口758。主节点700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的任一应用于主节点的数据同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器732,上述程序指令可由主节点700的处理器722执行以完成上述的任一应用于主节点的数据同步方法。
基于同一发明构思,本公开实施例还可以提供一种从节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述任一应用于从节点的数据同步方法的步骤。
在一种可能的方式中,该从节点的框图可以如图8所示。参照图8,从节点800可以被提供为一服务器,可以包括处理器822,其数量可以为一个或多个,以及存储器832,用于存储可由处理器822执行的计算机程序。存储器832中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器822可以被配置为执行该计算机程序,以执行上述任一应用于从节点的数据同步方法。
另外,从节点800还可以包括电源组件826和通信组件850,该电源组件826可以被配置为执行从节点800的电源管理,该通信组件850可以被配置为实现从节点800的通信,例如,有线或无线通信。此外,该从节点800还可以包括输入/输出(I/O)接口858。从节点800可以操作基于存储在存储器832的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的任一应用于从节点的数据同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器832,上述程序指令可由从节点800的处理器822执行以完成上述的任一应用于从节点的数据同步方法。
基于同一发明构思,本公开实施例还可以提供一种存储集群,包括一个上述的主节点和至少一个上述的从节点。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种数据同步方法,其特征在于,应用于主节点,所述方法包括:
将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对;
将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,其中,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
2.根据权利要求1所述的方法,其特征在于,在将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对之前,所述方法还包括:
根据所述主节点的节点标识和所述从节点的节点标识,确定所述主节点和所述从节点属于同一数据分区。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
每接收到一新的数据操作命令,将该新的数据操作命令存储到命令存储区域,其中,各数据操作命令在所述命令存储区域中的存储地址连续;
每在所述命令存储区域写入一新的数据操作命令,更新所述命令存储区域的最大命令偏移量,其中,所述最大命令偏移量用于表征已存储的数据操作命令在所述命令存储区域中的最大偏移地址。
4.一种数据同步方法,其特征在于,应用于从节点,所述方法包括:
接收主节点发送的目标操作命令,所述目标操作命令是在所述主节点中存储且所述从节点中未存储的数据操作命令,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步;
执行所述目标操作命令。
5.一种数据同步装置,其特征在于,应用于主节点,包括:
比对模块,用于将所述主节点存储的数据操作命令与从节点存储的数据操作命令进行比对;
发送模块,用于将在所述主节点中存储且所述从节点中未存储的数据操作命令作为目标操作命令,并将所述目标操作命令发送给所述从节点,其中,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步。
6.一种数据同步装置,其特征在于,应用于从节点,包括:
接收模块,用于接收主节点发送的目标操作命令,所述目标操作命令是在所述主节点中存储且所述从节点中未存储的数据操作命令,所述目标操作命令用于被所述从节点执行以实现所述主节点与所述从节点之间的数据同步;
执行模块,用于执行所述目标操作命令。
7.一种主节点,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-3中任一项所述方法的步骤。
8.一种从节点,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求4中所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
10.一种存储集群,其特征在于,包括一个权利要求7所述的主节点和至少一个权利要求8所述的从节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447215.0A CN110263093B (zh) | 2019-05-27 | 2019-05-27 | 数据同步方法、装置、节点、集群及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447215.0A CN110263093B (zh) | 2019-05-27 | 2019-05-27 | 数据同步方法、装置、节点、集群及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110263093A true CN110263093A (zh) | 2019-09-20 |
CN110263093B CN110263093B (zh) | 2021-07-23 |
Family
ID=67915566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910447215.0A Active CN110263093B (zh) | 2019-05-27 | 2019-05-27 | 数据同步方法、装置、节点、集群及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110263093B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049928A (zh) * | 2019-12-24 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111552701A (zh) * | 2020-04-30 | 2020-08-18 | 中国建设银行股份有限公司 | 确定分布式集群中数据一致性的方法及分布式数据系统 |
CN111800460A (zh) * | 2020-05-27 | 2020-10-20 | 深圳壹账通智能科技有限公司 | Ldap服务节点的数据同步方法、装置、设备及存储介质 |
CN112134887A (zh) * | 2020-09-23 | 2020-12-25 | 哈尔滨海能达科技有限公司 | 一种分布式集群中节点的数据同步方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377100A (zh) * | 2012-04-26 | 2013-10-30 | 华为技术有限公司 | 一种数据备份方法、网络节点及系统 |
CN106598762A (zh) * | 2016-12-29 | 2017-04-26 | 上海理想信息产业(集团)有限公司 | 一种消息同步方法及系统 |
CN106657169A (zh) * | 2015-10-28 | 2017-05-10 | 北京京东尚科信息技术有限公司 | 一种Redis中主从节点数据同步方法 |
CN108183965A (zh) * | 2018-01-15 | 2018-06-19 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置、设备、系统及可读存储介质 |
CN108696595A (zh) * | 2018-05-28 | 2018-10-23 | 郑州云海信息技术有限公司 | 分布式集群数据同步方法、主节点、从节点、系统及介质 |
-
2019
- 2019-05-27 CN CN201910447215.0A patent/CN110263093B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377100A (zh) * | 2012-04-26 | 2013-10-30 | 华为技术有限公司 | 一种数据备份方法、网络节点及系统 |
CN106657169A (zh) * | 2015-10-28 | 2017-05-10 | 北京京东尚科信息技术有限公司 | 一种Redis中主从节点数据同步方法 |
CN106598762A (zh) * | 2016-12-29 | 2017-04-26 | 上海理想信息产业(集团)有限公司 | 一种消息同步方法及系统 |
CN108183965A (zh) * | 2018-01-15 | 2018-06-19 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置、设备、系统及可读存储介质 |
CN108696595A (zh) * | 2018-05-28 | 2018-10-23 | 郑州云海信息技术有限公司 | 分布式集群数据同步方法、主节点、从节点、系统及介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049928A (zh) * | 2019-12-24 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111049928B (zh) * | 2019-12-24 | 2022-03-29 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111552701A (zh) * | 2020-04-30 | 2020-08-18 | 中国建设银行股份有限公司 | 确定分布式集群中数据一致性的方法及分布式数据系统 |
CN111552701B (zh) * | 2020-04-30 | 2023-07-21 | 中国建设银行股份有限公司 | 确定分布式集群中数据一致性的方法及分布式数据系统 |
CN111800460A (zh) * | 2020-05-27 | 2020-10-20 | 深圳壹账通智能科技有限公司 | Ldap服务节点的数据同步方法、装置、设备及存储介质 |
CN112134887A (zh) * | 2020-09-23 | 2020-12-25 | 哈尔滨海能达科技有限公司 | 一种分布式集群中节点的数据同步方法及装置 |
CN112134887B (zh) * | 2020-09-23 | 2022-08-09 | 哈尔滨海能达科技有限公司 | 一种分布式集群中节点的数据同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110263093B (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110263093A (zh) | 数据同步方法、装置、节点、集群及存储介质 | |
CN111865736B (zh) | 一种设备控制方法及装置 | |
CN110933137B (zh) | 一种数据同步方法、系统、设备及可读存储介质 | |
CN111552483B (zh) | 一种云服务部署方法、装置、设备、介质 | |
EP3993350A1 (en) | Method and device for ip address allocation and topology management in das system, and storage medium | |
CN107135279A (zh) | 一种处理长连接建立请求的方法和装置 | |
CN102026228B (zh) | 通信网络性能数据的统计方法和设备 | |
CN110083504B (zh) | 分布式任务的运行状态监控方法及装置 | |
CN106060135B (zh) | 一种版本更新方法和装置 | |
CN109617950A (zh) | 一种数据更新方法、装置、设备及可读存储介质 | |
US12079201B2 (en) | Blockchain-based data storage method, related device and storage medium | |
CN110851186B (zh) | 网络设备重启的方法、装置、电子设备及可读存储介质 | |
CN107967150A (zh) | 一种线程执行顺序确定方法、装置、设备及存储介质 | |
JP2014067324A (ja) | 制御装置、制御方法および制御プログラム | |
CN110888892A (zh) | 一种区块同步方法、装置及存储介质 | |
US9477736B2 (en) | Apparatus and method for active and passive data gathering using stochastic model in control network | |
CN107547622B (zh) | 一种资源调整方法及装置 | |
CN114760318A (zh) | 一种边缘计算管理方法及系统 | |
CN108509281A (zh) | 消息存储方法及装置 | |
CN105306255A (zh) | 电信网管中大数据量多个拓扑图实例系统及管理方法 | |
CN115022175B (zh) | 一种配置信息的同步方法及装置 | |
JP5993762B2 (ja) | オンライン制御システムおよび通信品質検出方法 | |
US20200159518A1 (en) | Update of equipment firmware and/or configurations for an electric distribution grid | |
US11477067B2 (en) | Packet transmission method and apparatus | |
CN113157807B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |