CN111522875A - 一种全量数据同步的分布式系统数据副本一致性监测方法 - Google Patents
一种全量数据同步的分布式系统数据副本一致性监测方法 Download PDFInfo
- Publication number
- CN111522875A CN111522875A CN202010211378.1A CN202010211378A CN111522875A CN 111522875 A CN111522875 A CN 111522875A CN 202010211378 A CN202010211378 A CN 202010211378A CN 111522875 A CN111522875 A CN 111522875A
- Authority
- CN
- China
- Prior art keywords
- hash
- block
- data
- value
- log
- 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
Images
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
- G06F16/275—Synchronous replication
-
- 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/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
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)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了计算机领域的一种全量数据同步的分布式系统数据副本一致性监测方法,包括:步骤S10、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳,对第一日志进行编号生成第一编号,基于第一日志、第一编号以及第一时间戳生成第一哈希链;步骤S20、生产子系统将第一哈希链以及第一日志同步给灾备子系统;步骤S30、灾备子系统接收第一日志作为数据副本的第二日志,并将各第一日志接收时的时间戳作为第二时间戳,生成第二哈希链;步骤S40、灾备子系统基于接收的第一哈希链以及第二哈希链对数据副本进行监测。本发明的优点在于:实现对分布式系统数据副本一致性的监测,快速定位数据错误点以及差异量,进而提升数据副本的可用性。
Description
技术领域
本发明涉及计算机领域,特别指一种全量数据同步的分布式系统数据副本一致性监测方法。
背景技术
在互联网、移动互联技术迅猛发展的今天,为了提高系统性能、提供更全面的服务、实现对新需求、新功能的快速满足、保障数字资产安全,服务提供商采用了分布式的系统架构。为达成以上目标,分布式系统建设常按照一定规则拆分、复制多份数据副本,以提高数据安全性、支撑多种不同目标任务执行、支撑并行处理以提高性能或同时响应更多用户请求。
但是,全量数据同步的分布式系统的数据副本存在如下特点,使得如何对数据副本进行监测成为分布式系统的一个难题:1、数据是全量复制的;灾备系统建设目标是当灾难发生时,接管生产系统,对外提供服务,数据由分布式系统其中一个子系统(生产子系统)产生,全量复制到一个或多个子系统(灾备子系统)中,并尽量保持一致。2、数据的不一致性是客观存在的;一种是产生数据的生产子系统与灾备子系统由于空间距离、网络延时以及处理能力差异导致数据没有完全同步;另一种是由于传输环境中干扰、病毒等人为破坏、存储及处理设备故障等导致的数据错误、丢失、重复、顺序颠倒,导致各数据副本已同步的数据存在错误。
因此,如何提供一种全量数据同步的分布式系统数据副本一致性监测方法,实现对分布式系统数据副本的一致性进行监测,快速定位数据错误点以及差异量,进而提升数据副本的可用性,成为一个亟待解决的问题。
经检索,公布号为CN107644077A,公布日为2018.01.30的发明专利公开了数据一致性监控方法、计算机设备和存储介质,该专利实际上是一种数据是否符合业务规则的监控方法;公布号为CN103902617B,公布日为2017.06.09的发明专利公开了分布式数据库同步方法和系统,该专利通过比对在主节点与副节点中构建的数据哈希树,快速定位数据不一致点并进行同步,该方法以数据采样或分区、排序、哈希比对的方式进行,该方法每一次数据变动,都需要按照上面方式进行重新的比对,效率低,实时性较差;公布号为CN109086390A,公布日为2018.12.25的发明专利公开了一种实现数据一致性实时监控方法,该专利通过对多个副本间数据唯一标示值rowkey的HASH值进行比对,实现数据一致性的监控,该方法只能确定数据是否存在,无法发现数据的错误;公布号为CN110830580A,公布日为2020.02.21的发明专利公开了一种存储数据同步方法及装置,该专利将本地存储划分成多个数据片片的,以数据片为单位进行数据同步,并构造含数据索引信息、版本号的数据片摘要信息,用于数据同步及一致性保障,该方法关注的是存储设备层面上的数据一致性,由于存储器存储的数据和应用层的数据是经过处理的,所以这种方法只有在保障数据完全同步时才能保证应用层数据的一致性;公开号为CN110737514A,公布日为2020.01.31的发明专利,公开了一种确保分布式事务最终数据一致性的方法、装置及介质,该专利将一个业务划分成多个服务分布式执行时,通过多个服务间事务协同,参数预扣、消费、释放机制,及幂等任务管理来达到不同服务的相对应数据按照业务设定的预期方向变化,关注的是数据是否符合既定的业务规则,有的关注的是数据是否按照流程完全同步,还有关注的是多个分布式服务之间的协同,即已达成既定规则下的数据一致性;以上方法不关注数据副本间数据差异量的监测,当前数据差异量基本通过生产子系统未同步数据(日志)量结合实时传输速率进行估算,算法复杂,实时性差,当存在多个灾备子系统时,算法实现困难,且只能在生产子系统中实现,当灾难发生,生产子系统服务中断时,这一算法实际上是无效的。
发明内容
本发明要解决的技术问题,在于提供一种全量数据同步的分布式系统数据副本一致性监测方法,实现对分布式系统数据副本的一致性进行监测,快速定位数据错误点以及差异量,进而提升数据副本的可用性。
本发明是这样实现的:一种全量数据同步的分布式系统数据副本一致性监测方法,包括如下步骤:
步骤S10、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳,对所述第一日志进行编号生成第一编号,基于所述第一日志、第一编号以及第一时间戳生成第一哈希链;
步骤S20、生产子系统将所述第一哈希链以及第一日志同步给灾备子系统;
步骤S30、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳,对所述第二日志进行编号生成第二编号,基于所述第二日志、第二编号以及第二时间戳生成第二哈希链;
步骤S40、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本是否产生错误以及第一个产生错误的位置进行监测,重新同步错误的数据副本;
步骤S50、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本的数据差异量进行监测;
步骤S60、生产子系统以及灾备子系统对所述第一哈希链以及第二哈希链已验证部分进行删除。
进一步地,所述步骤S10具体包括:
步骤S11、设定第一哈希块包括一第一块编号、一第一块哈希值、一第一数据哈希值以及一第一时间戳;
步骤S12、判断所述第一编号是否为0,若是,则进入步骤S13;若否,则进入步骤S14;
步骤S13、创建一第一初始哈希块,将所述第一初始哈希块的第一块编号取值为0,以数值0与所述第一初始哈希块的第一数据哈希值作为输入进行哈希计算,得到所述第一初始哈希块的第一块哈希值,作为第一块编号为1的第一哈希块的第一块哈希值的输入,并进入步骤S17;
步骤S14、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳;
步骤S15、对所述第一日志进行编号,即获取当前最大编号并加1生成第一编号,将所述第一编号作为第一块编号;对所述第一日志进行哈希计算得到第一数据哈希值;
步骤S16、将上一个所述第一哈希块的第一块哈希值以及第一数据哈希值作为输入,进行哈希计算得到第一块哈希值;
步骤S17、基于各所述第一块编号、第一块哈希值、第一数据哈希值以及第一时间戳分别生成第一哈希块,并按各所述第一块编号的顺序串联各第一哈希块生成第一哈希链。
进一步地,所述步骤S13中,所述第一初始哈希块的第一数据哈希值的取值为0、生产子系统数据库全部数据或者生产子系统数据库部分数据进行哈希计算得到。
进一步地,所述步骤S30具体包括:
步骤S31、设定第二哈希块包括一第二块编号、一第二块哈希值、一第二数据哈希值以及一第二时间戳;
步骤S32、判断所述第二编号是否为0,若是,则进入步骤S33;若否,则进入步骤S34;
步骤S33、创建一第二初始哈希块,将所述第二初始哈希块的第二块编号取值为0,以数值0与所述第二初始哈希块的第二数据哈希值作为输入进行哈希计算,得到所述第二初始哈希块的第二块哈希值,作为第二块编号为1的第二哈希块的第二块哈希值的输入,并进入步骤S37;
步骤S34、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳;
步骤S35、对所述第二日志进行编号,即获取当前最大编号并加1生成第二编号,将所述第二编号作为第二块编号;对所述第二日志进行哈希计算得到第二数据哈希值;
步骤S36、将上一个所述第二哈希块的块哈希值以及第二数据哈希值作为输入,进行哈希计算得到第二块哈希值;
步骤S37、基于各所述第二块编号、第二块哈希值、第二数据哈希值以及第二时间戳分别生成第二哈希块,并按各所述第二块编号的顺序串联各第二哈希块生成第二哈希链。
进一步地,所述步骤S33中,所述第二初始哈希块的第二数据哈希值的取值为0、灾备子系统数据库全部数据或者灾备子系统数据库部分数据进行哈希计算得到。
进一步地,所述步骤S40具体包括:
步骤S41、灾备子系统接收生产子系统同步的所述第一哈希链;
步骤S42、获取所述第二哈希链中取值最大的第二块编号对应的第二块哈希值,获取所述第二块编号与第一块编号相等的第一哈希块对应第一块哈希值,判断所述第二块哈希值与所述第一块哈希值是否相等,若是,说明生产子系统的数据与灾备子系统的数据副本具备一致性,并进入步骤S50;若否,则进入步骤S43;
步骤S43、以所述第二块编号与第一块编号同时-1的梯度,轮询查找所述第二块哈希值与第一块哈希值相等的第二哈希块以及第一哈希块;
步骤S44、设定一第一阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二时间戳与当前时间的差值是否超过第一阈值,若是,则进入步骤S46;若否,则进入步骤S45;
步骤S45、设定一第二阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二块编号,与第二哈希链取值最大的第二块编号的差值是否超过第二阈值,若是,则进入步骤S46;若否,则进入步骤S47;
步骤S46、灾备子系统向生产子系统发起全库数据重新同步请求,并清除生产子系统以及灾备子系统中所述第一哈希链、第二哈希链、第一日志以及第二日志,清零所述第一编号以及第二编号,等数据同步完成后,进入步骤S41;
步骤S47、灾备子系统向生产子系统发起重新同步所述第二块哈希值与第一块哈希值相等的第一哈希块之后所有第一日志的请求,执行灾备子系统数据回滚操作,清除灾备子系统中对应的重新同步的所述第一哈希链、第二哈希链、第一日志以及第二日志,并进入步骤S50。
进一步地,所述步骤S50具体为:
获取所述第二哈希链中,取值最大的第二块编号对应的第二时间戳;获取所述第一哈希链中,所述第一块编号与第二块编号相等的第一哈希块对应的第一时间戳;将所述第二时间戳减去所述第一时间戳,获取生产子系统与灾备子系统的数据差异量。
进一步地,所述步骤S60具体为:
生产子系统以及灾备子系统将所述第一块编码与第二块编码相等的第一哈希块以及第二哈希块之前的数据删除。
本发明的优点在于:
1、通过生成所述第一哈希链以及第二哈希链,只需对比第一块哈希值与第二块哈希值是否相等即可快速发现数据是否发生错误,简单的向下遍历即可定位首次发生的数据错误点,通过将取值最大的第二块编码对应的第二时间戳减去相应第一块编号对应的第一时间戳,即可快速计算数据差异量,实现对分布式系统数据副本的一致性进行监测,极大的提升了数据副本的可用性。
2、基于所述第一块编号、第一块哈希值、第一数据哈希值以及第一时间戳生成第一哈希链,基于所述第二块编码、第二块哈希值、第二数据哈希值以及第二时间戳生成第二哈希链,算法简单,数据结构精炼,并提供定期清理数据方法,有效降低对系统资源的占用。
3、数据副本一致性监测只需一次数据对比完成,时效性高,能提供有效的监测。
4、所述第一哈希链以及第二哈希链具有错误的传导性,能精确定位首次发生数据故障的位置,进行数据重同步,保障数据一致性。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种全量数据同步的分布式系统数据副本一致性监测方法的流程图。
图2是本发明一种全量数据同步的分布式系统数据副本一致性监测方法的硬件架构图。
图3是本发明第一哈希链的结构示意图。
图4是本发明第二哈希链的结构示意图。
图5是本发明对数据副本是否产生错误进行监测的流程图。
具体实施方式
本申请实施例中的技术方案,总体思路如下:
创建包括块编号、块哈希值、数据哈希值以及时间戳的哈希块,将上一哈希块的块哈希值以及下一哈希块的数据哈希值进行哈希计算,作为下一哈希块的块哈希值,各哈希块按块编号的序号串联成哈希链,即构建具有错误传导性的哈希链,通过对比生产子系统以及灾备子系统的哈希链的块哈希值,即可定位首次发生数据故障的位置,利用最新的哈希块的时间戳,即可快速计算生产子系统与灾备子系统间的数据差异量。
请参照图1至图3所示,本发明一种全量数据同步的分布式系统数据副本一致性监测方法的较佳实施例,包括如下步骤:
步骤S10、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳,对所述第一日志进行编号生成第一编号,基于所述第一日志、第一编号以及第一时间戳生成第一哈希链;
步骤S20、生产子系统将所述第一哈希链以及第一日志同步给灾备子系统;
所述生产子系统将所述第一哈希链同步给灾备子系统具体为:
生产子系统将各所述第一哈希块同步给灾备子系统,灾备子系统基于接收的所述第一哈希块重新组装成第一哈希链;
步骤S30、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳,对所述第二日志进行编号生成第二编号,基于所述第二日志、第二编号以及第二时间戳生成第二哈希链;
步骤S40、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本是否产生错误以及第一个产生错误的位置进行监测,重新同步错误的数据副本;
步骤S50、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本的数据差异量进行监测;
步骤S60、生产子系统以及灾备子系统对所述第一哈希链以及第二哈希链已验证部分进行删除。
所述步骤S10具体包括:
步骤S11、设定第一哈希块包括一第一块编号、一第一块哈希值、一第一数据哈希值以及一第一时间戳;
步骤S12、判断所述第一编号是否为0,若是,则进入步骤S13;若否,则进入步骤S14;
步骤S13、创建一第一初始哈希块,将所述第一初始哈希块的第一块编号取值为0,以数值0与所述第一初始哈希块的第一数据哈希值作为输入进行哈希计算,得到所述第一初始哈希块的第一块哈希值,作为第一块编号为1的第一哈希块的第一块哈希值的输入,并进入步骤S17;
步骤S14、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳;
步骤S15、对所述第一日志进行编号,即获取当前最大编号并加1生成第一编号,将所述第一编号作为第一块编号;对所述第一日志进行哈希计算得到第一数据哈希值,即DH(n)=HASH(第一日志(n));
哈希算法即把任意长度的输入数据通过散列算法变换成固定长度的输出,该输出就是散列值,这个散列值和输入数据的每一个字节都有十分紧密的关系,即输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的哈希算法会产生一个完全不同的散列值,所以可以将该散列值作为该输入数据的标志。哈希算法还具有一个特点,不可能从散列值来确定唯一的输入值,就是很难找到逆向规律。所以哈希算法常常被用于确定所传输数据是否一致,是否在传输过程中发生错误或被篡改,来保障数据传递的安全性。
步骤S16、将上一个所述第一哈希块的第一块哈希值以及第一数据哈希值作为输入,进行哈希计算得到第一块哈希值;即BH(n)=HASH(DH(n),BH(n-1));
步骤S17、基于各所述第一块编号、第一块哈希值、第一数据哈希值以及第一时间戳分别生成第一哈希块,并按各所述第一块编号的顺序串联各第一哈希块生成第一哈希链。生产子系统每次接收到一个操作即实时生成一个所述第一哈希块。
所述步骤S13中,所述第一初始哈希块的第一数据哈希值的取值为0、生产子系统数据库全部数据或者生产子系统数据库部分数据进行哈希计算得到。
当初次建设系统,且无初始数据时,将0的哈希计算值设为所述第一初始哈希块的第一数据哈希值;当初次建设系统或系统初次同步完以后,数据库数据较小,以生产子系统数据库全部数据的哈希值,设为第一初始哈希块的第一数据哈希值;当初次数据库同步完以后,按照约定规则(如抽取每一张表的第1/4,2/4,3/4及最后一个数据)抽样部分数据,即以生产子系统数据库部分数据的哈希值,设为第一初始哈希块的第一数据哈希值。
所述步骤S30具体包括:
步骤S31、设定第二哈希块包括一第二块编号、一第二块哈希值、一第二数据哈希值以及一第二时间戳;
步骤S32、判断所述第二编号是否为0,若是,则进入步骤S33;若否,则进入步骤S34;
步骤S33、创建一第二初始哈希块,将所述第二初始哈希块的第二块编号取值为0,以数值0与所述第二初始哈希块的第二数据哈希值作为输入进行哈希计算,得到所述第二初始哈希块的第二块哈希值,作为第二块编号为1的第二哈希块的第二块哈希值的输入,并进入步骤S37;
步骤S34、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳;
步骤S35、对所述第二日志进行编号,即获取当前最大编号并加1生成第二编号,将所述第二编号作为第二块编号;对所述第二日志进行哈希计算得到第二数据哈希值;
步骤S36、将上一个所述第二哈希块的块哈希值以及第二数据哈希值作为输入,进行哈希计算得到第二块哈希值;
步骤S37、基于各所述第二块编号、第二块哈希值、第二数据哈希值以及第二时间戳分别生成第二哈希块,并按各所述第二块编号的顺序串联各第二哈希块生成第二哈希链。灾备子系统每次接收到一个第二日志即实时生成一个所述第二哈希块。
所述步骤S33中,所述第二初始哈希块的第二数据哈希值的取值为0、灾备子系统数据库全部数据或者灾备子系统数据库部分数据进行哈希计算得到。
当初次建设系统,且无初始数据时,将0的哈希计算值设为所述第一初始哈希块的第一数据哈希值;当初次建设系统或系统初次同步完以后,数据库数据较小,以灾备子系统数据库全部数据的哈希值,设为第一初始哈希块的第一数据哈希值;当初次数据库同步完以后,按照约定规则(如抽取每一张表的第1/4,2/4,3/4及最后一个数据)抽样部分数据,即以灾备子系统数据库部分数据的哈希值,设为第一初始哈希块的第一数据哈希值。
所述步骤S40具体包括:
步骤S41、灾备子系统接收生产子系统同步的所述第一哈希链;
步骤S42、获取所述第二哈希链中取值最大的第二块编号对应的第二块哈希值,获取所述第二块编号与第一块编号相等的第一哈希块对应第一块哈希值,判断所述第二块哈希值与所述第一块哈希值是否相等,若是,说明生产子系统的数据与灾备子系统的数据副本具备一致性,并进入步骤S50;若否,则进入步骤S43;
步骤S43、以所述第二块编号与第一块编号同时-1的梯度,轮询查找所述第二块哈希值与第一块哈希值相等的第二哈希块以及第一哈希块;
例如所述第一哈希链以及第二哈希链都有100个哈希块,若第100个哈希块的所述第一块哈希值与第二块哈希值不相等,则判断第99个哈希块的所述第一块哈希值与第二块哈希值是否相等,若还不相等,则判断第98个哈希块,直至找到所述第一块哈希值与第二块哈希值相等的哈希块;
步骤S44、设定一第一阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二时间戳与当前时间的差值是否超过第一阈值,若是,则进入步骤S46;若否,则进入步骤S45;
步骤S45、设定一第二阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二块编号,与第二哈希链取值最大的第二块编号的差值是否超过第二阈值,若是,则进入步骤S46;若否,则进入步骤S47;
步骤S46、灾备子系统向生产子系统发起全库数据重新同步请求,并清除生产子系统以及灾备子系统中所述第一哈希链、第二哈希链、第一日志以及第二日志,清零所述第一编号以及第二编号,等数据同步完成后,进入步骤S41;
步骤S47、灾备子系统向生产子系统发起重新同步所述第二块哈希值与第一块哈希值相等的第一哈希块之后所有第一日志的请求,执行灾备子系统数据回滚操作,清除灾备子系统中对应的重新同步的所述第一哈希链、第二哈希链、第一日志以及第二日志,并进入步骤S50。
例如所述第二哈希链有100个哈希块,通过轮询查找,发现第80个哈希块的所述第一块哈希值才与第二块哈希值相等,则向生产子系统发送重新同步81至100哈希块对应的第一日志。
所述步骤S50具体为:
获取所述第二哈希链中,取值最大的第二块编号对应的第二时间戳;获取所述第一哈希链中,所述第一块编号与第二块编号相等的第一哈希块对应的第一时间戳;将所述第二时间戳减去所述第一时间戳,获取生产子系统与灾备子系统的数据差异量。
数据差异量在灾备建设相关国际标准中采用RPO(Recovery Point Object)参数来度量,RPO定义为在数据同步过程中生产子系统最新产生的数据时点Tl,与灾备子系统中最新获取的数据产生时点Td的差值:RPO=Tl-Td;
但由于空间间隔、网络延时等的影响,灾备子系统实际无法实时获取Tl,因此,本申请采用RPO≈第二时间戳-第一时间戳,即生产子系统中产生数据与灾备子系统中获得该数据的时间差来近似获取RPO值;
获取RPO值后,根据RPO目标,便可进行不间断的监控,及时发现、找到并调整同步策略,升级同步网络等。
所述步骤S60具体为:
生产子系统以及灾备子系统将所述第一块编码与第二块编码相等的第一哈希块以及第二哈希块之前的数据删除。即删除已验证的哈希链数据,降低哈希链的长度,在下次验证时,可以减少验证的时间,减少占用的数据空间。
综上所述,本发明的优点在于:
1、通过生成所述第一哈希链以及第二哈希链,只需对比第一块哈希值与第二块哈希值是否相等即可快速发现数据是否发生错误,简单的向下遍历即可定位首次发生的数据错误点,通过将取值最大的第二块编码对应的第二时间戳减去相应第一块编号对应的第一时间戳,即可快速计算数据差异量,实现对分布式系统数据副本的一致性进行监测,极大的提升了数据副本的可用性。
2、基于所述第一块编号、第一块哈希值、第一数据哈希值以及第一时间戳生成第一哈希链,基于所述第二块编码、第二块哈希值、第二数据哈希值以及第二时间戳生成第二哈希链,算法简单,数据结构精炼,并提供定期清理数据方法,有效降低对系统资源的占用。
3、数据副本一致性监测只需一次数据对比完成,时效性高,能提供有效的监测。
4、所述第一哈希链以及第二哈希链具有错误的传导性,能精确定位首次发生数据故障的位置,进行数据重同步,保障数据一致性。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的灾备系统的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,本发明不仅适用于灾备系统,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (8)
1.一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:包括如下步骤:
步骤S10、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳,对所述第一日志进行编号生成第一编号,基于所述第一日志、第一编号以及第一时间戳生成第一哈希链;
步骤S20、生产子系统将所述第一哈希链以及第一日志同步给灾备子系统;
步骤S30、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳,对所述第二日志进行编号生成第二编号,基于所述第二日志、第二编号以及第二时间戳生成第二哈希链;
步骤S40、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本是否产生错误以及第一个产生错误的位置进行监测,重新同步错误的数据副本;
步骤S50、灾备子系统基于接收的所述第一哈希链以及第二哈希链对数据副本的数据差异量进行监测;
步骤S60、生产子系统以及灾备子系统对所述第一哈希链以及第二哈希链已验证部分进行删除。
2.如权利要求1所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S10具体包括:
步骤S11、设定第一哈希块包括一第一块编号、一第一块哈希值、一第一数据哈希值以及一第一时间戳;
步骤S12、判断所述第一编号是否为0,若是,则进入步骤S13;若否,则进入步骤S14;
步骤S13、创建一第一初始哈希块,将所述第一初始哈希块的第一块编号取值为0,以数值0与所述第一初始哈希块的第一数据哈希值作为输入进行哈希计算,得到所述第一初始哈希块的第一块哈希值,作为第一块编号为1的第一哈希块的第一块哈希值的输入,并进入步骤S17;
步骤S14、生产子系统获取当前数据操作的第一日志以及相应数据产生时的第一时间戳;
步骤S15、对所述第一日志进行编号,即获取当前最大编号并加1生成第一编号,将所述第一编号作为第一块编号;对所述第一日志进行哈希计算得到第一数据哈希值;
步骤S16、将上一个所述第一哈希块的第一块哈希值以及第一数据哈希值作为输入,进行哈希计算得到第一块哈希值;
步骤S17、基于各所述第一块编号、第一块哈希值、第一数据哈希值以及第一时间戳分别生成第一哈希块,并按各所述第一块编号的顺序串联各第一哈希块生成第一哈希链。
3.如权利要求2所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S13中,所述第一初始哈希块的第一数据哈希值的取值为0、生产子系统数据库全部数据或者生产子系统数据库部分数据进行哈希计算得到。
4.如权利要求1所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S30具体包括:
步骤S31、设定第二哈希块包括一第二块编号、一第二块哈希值、一第二数据哈希值以及一第二时间戳;
步骤S32、判断所述第二编号是否为0,若是,则进入步骤S33;若否,则进入步骤S34;
步骤S33、创建一第二初始哈希块,将所述第二初始哈希块的第二块编号取值为0,以数值0与所述第二初始哈希块的第二数据哈希值作为输入进行哈希计算,得到所述第二初始哈希块的第二块哈希值,作为第二块编号为1的第二哈希块的第二块哈希值的输入,并进入步骤S37;
步骤S34、灾备子系统接收所述第一日志作为数据副本的第二日志,并将各所述第一日志接收时的时间戳作为第二时间戳;
步骤S35、对所述第二日志进行编号,即获取当前最大编号并加1生成第二编号,将所述第二编号作为第二块编号;对所述第二日志进行哈希计算得到第二数据哈希值;
步骤S36、将上一个所述第二哈希块的块哈希值以及第二数据哈希值作为输入,进行哈希计算得到第二块哈希值;
步骤S37、基于各所述第二块编号、第二块哈希值、第二数据哈希值以及第二时间戳分别生成第二哈希块,并按各所述第二块编号的顺序串联各第二哈希块生成第二哈希链。
5.如权利要求4所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S33中,所述第二初始哈希块的第二数据哈希值的取值为0、灾备子系统数据库全部数据或者灾备子系统数据库部分数据进行哈希计算得到。
6.如权利要求2或4所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S40具体包括:
步骤S41、灾备子系统接收生产子系统同步的所述第一哈希链;
步骤S42、获取所述第二哈希链中取值最大的第二块编号对应的第二块哈希值,获取所述第二块编号与第一块编号相等的第一哈希块对应第一块哈希值,判断所述第二块哈希值与所述第一块哈希值是否相等,若是,说明生产子系统的数据与灾备子系统的数据副本具备一致性,并进入步骤S50;若否,则进入步骤S43;
步骤S43、以所述第二块编号与第一块编号同时-1的梯度,轮询查找所述第二块哈希值与第一块哈希值相等的第二哈希块以及第一哈希块;
步骤S44、设定一第一阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二时间戳与当前时间的差值是否超过第一阈值,若是,则进入步骤S46;若否,则进入步骤S45;
步骤S45、设定一第二阈值,判断所述第二块哈希值与第一块哈希值相等的第二哈希块对应的第二块编号,与第二哈希链取值最大的第二块编号的差值是否超过第二阈值,若是,则进入步骤S46;若否,则进入步骤S47;
步骤S46、灾备子系统向生产子系统发起全库数据重新同步请求,并清除生产子系统以及灾备子系统中所述第一哈希链、第二哈希链、第一日志以及第二日志,清零所述第一编号以及第二编号,等数据同步完成后,进入步骤S41;
步骤S47、灾备子系统向生产子系统发起重新同步所述第二块哈希值与第一块哈希值相等的第一哈希块之后所有第一日志的请求,执行灾备子系统数据回滚操作,清除灾备子系统中对应的重新同步的所述第一哈希链、第二哈希链、第一日志以及第二日志,并进入步骤S50。
7.如权利要求2或4所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S50具体为:
获取所述第二哈希链中,取值最大的第二块编号对应的第二时间戳;获取所述第一哈希链中,所述第一块编号与第二块编号相等的第一哈希块对应的第一时间戳;将所述第二时间戳减去所述第一时间戳,获取生产子系统与灾备子系统的数据差异量。
8.如权利要求2或4所述的一种全量数据同步的分布式系统数据副本一致性监测方法,其特征在于:所述步骤S60具体为:
生产子系统以及灾备子系统将所述第一块编码与第二块编码相等的第一哈希块以及第二哈希块之前的数据删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211378.1A CN111522875B (zh) | 2020-03-24 | 2020-03-24 | 一种全量数据同步的分布式系统数据副本一致性监测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211378.1A CN111522875B (zh) | 2020-03-24 | 2020-03-24 | 一种全量数据同步的分布式系统数据副本一致性监测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522875A true CN111522875A (zh) | 2020-08-11 |
CN111522875B CN111522875B (zh) | 2022-05-24 |
Family
ID=71910541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010211378.1A Active CN111522875B (zh) | 2020-03-24 | 2020-03-24 | 一种全量数据同步的分布式系统数据副本一致性监测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522875B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553373A (zh) * | 2021-06-11 | 2021-10-26 | 北京旷视科技有限公司 | 数据同步方法及装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446250A (zh) * | 2010-10-13 | 2012-05-09 | 索尼公司 | 数据完整性的保护和验证方法、设备和系统 |
CN104468548A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种数据验证的方法、灾备存储器和生产存储器 |
CN105608143A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多副本数据一致性的检测方法及装置 |
US10235090B1 (en) * | 2016-09-23 | 2019-03-19 | EMC IP Holding Company LLC | Validating replication copy consistency using a hash function in a storage system |
CN109902071A (zh) * | 2019-01-31 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 业务日志存储方法、系统、装置及设备 |
-
2020
- 2020-03-24 CN CN202010211378.1A patent/CN111522875B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446250A (zh) * | 2010-10-13 | 2012-05-09 | 索尼公司 | 数据完整性的保护和验证方法、设备和系统 |
CN104468548A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种数据验证的方法、灾备存储器和生产存储器 |
CN105608143A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多副本数据一致性的检测方法及装置 |
US10235090B1 (en) * | 2016-09-23 | 2019-03-19 | EMC IP Holding Company LLC | Validating replication copy consistency using a hash function in a storage system |
CN109902071A (zh) * | 2019-01-31 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 业务日志存储方法、系统、装置及设备 |
Non-Patent Citations (1)
Title |
---|
李帅等: "一种基于目录哈希树的磁盘数据", 《信息网络安全》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553373A (zh) * | 2021-06-11 | 2021-10-26 | 北京旷视科技有限公司 | 数据同步方法及装置、存储介质及电子设备 |
CN113553373B (zh) * | 2021-06-11 | 2023-11-21 | 北京旷视科技有限公司 | 数据同步方法及装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111522875B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8260742B2 (en) | Data synchronization and consistency across distributed repositories | |
CN110209726B (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US8285689B2 (en) | Distributed file system and data block consistency managing method thereof | |
Pelkonen et al. | Gorilla: A fast, scalable, in-memory time series database | |
JP6711884B2 (ja) | ソースデータベースの負荷を最小化したデータ整合性検証方法およびシステム | |
CN109542330B (zh) | 数据存储方法、数据查询方法及装置 | |
CN111831748B (zh) | 数据同步方法、装置及存储介质 | |
CN108334514B (zh) | 数据的索引方法以及装置 | |
CN110647531A (zh) | 数据同步方法、装置、设备及计算机可读存储介质 | |
CN114048217A (zh) | 增量数据的同步方法和装置、电子设备和存储介质 | |
CN112559475A (zh) | 数据实时捕获和传输方法及系统 | |
CN114092252A (zh) | 一种区块链交易执行方法、装置、设备及可读存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN112241437A (zh) | 数据库多主同步的回环控制方法、装置、设备及存储介质 | |
CN106844694B (zh) | 用于同步数据的方法及设备 | |
CN112732756A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN111522875B (zh) | 一种全量数据同步的分布式系统数据副本一致性监测方法 | |
CN109947730A (zh) | 元数据恢复方法、装置、分布式文件系统及可读存储介质 | |
CN111404737B (zh) | 一种容灾处理方法以及相关装置 | |
CN115033578A (zh) | 一种业务数据更新的方法、相关装置及存储介质 | |
CN111625396B (zh) | 备份数据的校验方法、服务器及存储介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN112202895B (zh) | 监控指标数据的收集方法、系统、电子设备及存储介质 | |
Goncalves et al. | DottedDB: Anti-entropy without merkle trees, deletes without tombstones | |
CN111209597B (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 |