多数据中心间的数据同步方法及相关设备技术

技术编号:14770059 阅读:112 留言:0更新日期:2017-03-08 14:02
本发明专利技术实施例提供一种多数据中心间的数据同步方法,包括:获取任意一个集群内任意一个节点的日志的状态,并在所述日志处于完成状态时,获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,进而确定每一条描述的最终状态及其在每一个集群内的当前状态;根据所述最终状态及当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,并触发对应的集群执行所述数据同步操作。另,本发明专利技术实施例还提供一种多数据中心间的数据同步装置及一种分布式存储系统。所述数据同步方法可以实现多个数据中心之间同时进行数据同步,有效缩短多个数据中心之间数据不同步的时间窗口。

【技术实现步骤摘要】

本专利技术涉及数据存储
,尤其涉及一种多数据中心间的数据同步方法及相关设备
技术介绍
为保证数据中心中数据的可靠性,在对火灾、地震等自然灾害发生时,保证数据不丢失,或尽可能减少损失,多个数据中心间可互为容灾与备份的关系。数据会在多个数据中心间进行复制,一般采用同步复制的方式,但在数据中心出现故障时,为保证上层业务的连续性,在一个数据中心故障时,仍然能正常提供服务,此时数据的复制由同步转为异步,而数据在多个数据中心间进行异步复制时,如何保证数据的一致性是关系到数据同步可靠性的首要问题。数据中心的数据在做复制时,以集群为单位建立复制关系,多个集群的数据的一致性策略采用的是最终一致性,即只要求多个数据中心间的数据在一定时间窗口后,保证一致即可。多数据中心的数据同步一般采用基于日志回放的方式,即对每项修改类的操作,在主数据中心与备数据中心分别记录日志,进而通过主备数据中心之间的日志同步来实现数据同步。例如,在以主为准(PrimaryBased)的数据同步方案中,要求数据中心有主备之分,且必须保证主数据中心的集群上的日志是所有集群中最全的。为保证该条件,在主数据中心出现故障时,通过“切主”来继续提供服务,或者在做数据同步时,先根据集群数据恢复主数据中心的数据,使主数据中心上的数据最完整,各个备数据中心再分别向主数据中心做数据同步。或者,通过NRW机制判断数据写入的成功或失败,如果主数据中心存在写入失败的操作,则在对所有数据中心进行数据同步之前,需要先读取所有备数据中心的日志来恢复主数据中心上的数据,保证主数据中心上的日志最全,进而由各备数据中心分别向主数据中心进行数据同步。然而,在上述同步方式中,主数据中心在数据恢复结束后,备数据中心先合并日志再向主数据中心做数据同步赶,即数据同步分为了三个过程,增大了数据中心之间数据不一致的时间窗口及实现的复杂度。同时,主数据中心做数据恢复时,需要和其它所有备交互,且该动作只能在主数据中心上完成,增大了主数据中心的负担。
技术实现思路
本专利技术实施例提供一种多数据中心间的数据同步方法及相关设备,实现各数据中心之间同时进行数据同步,在各数据中心之间分散数据同步的处理压力,并缩短多个数据中心之间数据不同步的时间窗口。本专利技术实施例第一方面提供一种多数据中心间的数据同步方法,包括:获取多数据中心的任意一个集群内任意一个节点的日志的状态,并判断所述日志是否处于完成状态;其中,所述日志包括多条描述,每一条描述包括一个序列标识,用于标记所述描述在所述日志中的位置;若所述日志处于完成状态,则触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求;获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识;根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态;根据所述每一条描述的最终状态及其在每一个集群内的当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,并将所述数据同步操作反馈给对应的集群,以触发对应的集群执行所述数据同步操作。由于任意一个节点在其日志处于完成状态时,均可发起所述日志读取请求,因此无需限制由备集群向主集群发起数据同步,从而可以适用于无主备区分的分布式存储系统中。同时,通过所述节点同时向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求,从而实现各数据中心之间同时进行数据同步,因而可以在各数据中心之间分散数据同步的处理压力。此外,通过获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识来确定每一条描述的最终状态及其在每一个集群内的当前状态,进而确定每一个集群针对所述描述需要进行的数据同步操作,无需读取日志的具体内容,因而可以极大地减少日志读取量,降低系统资源消耗,提升反馈速度,缩短多个数据中心之间数据不同步的时间窗口。结合第一方面,在第一方面第一种可能的实现方式中,所述触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求,包括:触发所述节点向Leader日志所在的集群发起日志读取请求,并标记所述Leader日志的操作状态;其中,所述Leader日志的操作状态用于防止所述Leader日志所在的集群同时响应多个节点的日志读取请求;触发所述节点向Follower日志所在的集群分别发起日志读取请求;其中,所述Leader日志为第一个接收到数据操作请求的节点的日志;所述Follower日志为所述Leader日志被复制到其他集群时,分散到其他集群的每个节点上的日志。通过在向Leader日志所在的集群发起日志读取请求时,标记所述Leader日志的操作状态,从而可以防止所述Leader日志所在的集群同时响应多个节点的日志读取请求,以防止多个节点同时对该日志发起同步操作,造成不必要的资源浪费。结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述触发所述节点向Leader日志所在的集群发起日志读取请求之后,所述方法还包括:触发所述Leader日志所在的集群内的任意一个节点接收所述日志读取请求,并读取所述节点上的Leader日志;提取所述Leader日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读取请求的节点。结合第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,所述触发所述节点向Follower日志所在的集群分别发起日志读取请求之后,所述方法还包括:触发所述Follower日志所在的集群内的任意一个节点接收所述日志读取请求,并读取所述集群内的所有节点上的Follower日志;提取所述Follower日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读取请求的节点。所述发起所述日志读取请求的节点在向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求之后,只需触发对应的集群读取自身集群上的日志,并提取出日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读取请求的节点即可,无需反馈日志的具体内容,因而可以极大地降低反馈回路上的数据量,节约系统资源。结合第一方面及第一方面第一种可能的实现方式至第一方面第三种可能的实现方式中的任意一种可能的实现方式,在第一方面第四种可能的实现方式中,所述根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态,包括:根据每一个所述集群的日志中处于写失败状态的描述的序列标识、每一个所述集群的最大序列标识及所有集群中最大的序列标识,确定每一条描述在所述集群内的当前状态;根据每一条描述在所有集群内的当前状态,结合NRW机制,确定每一条描述的最终状态。根据每一个所述集群的最大序列标识及所有集群中最大的序列标识,即可确定每一个所述集群内缺失的描述数量,进而根据所述处于写失败状态的描述的序列标识即可确定每一条描述在所述集群内的当前状态,进而根本文档来自技高网
...
多数据中心间的数据同步方法及相关设备

【技术保护点】
一种多数据中心间的数据同步方法,其特征在于,包括:获取多数据中心的任意一个集群内任意一个节点的日志的状态,并判断所述日志是否处于完成状态;其中,所述日志包括多条描述,每一条描述包括一个序列标识,用于标记所述描述在所述日志中的位置;若所述日志处于完成状态,则触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求;获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识;根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态;根据所述每一条描述的最终状态及其在每一个集群内的当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,并将所述数据同步操作反馈给对应的集群,以触发对应的集群执行所述数据同步操作。

【技术特征摘要】
1.一种多数据中心间的数据同步方法,其特征在于,包括:获取多数据中心的任意一个集群内任意一个节点的日志的状态,并判断所述日志是否处于完成状态;其中,所述日志包括多条描述,每一条描述包括一个序列标识,用于标记所述描述在所述日志中的位置;若所述日志处于完成状态,则触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求;获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识;根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态;根据所述每一条描述的最终状态及其在每一个集群内的当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,并将所述数据同步操作反馈给对应的集群,以触发对应的集群执行所述数据同步操作。2.如权利要求1所述的方法,其特征在于,所述触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求,包括:触发所述节点向Leader日志所在的集群发起日志读取请求,并标记所述Leader日志的操作状态;其中,所述Leader日志的操作状态用于防止所述Leader日志所在的集群同时响应多个节点的日志读取请求;触发所述节点向Follower日志所在的集群分别发起日志读取请求;其中,所述Leader日志为第一个接收到数据操作请求的节点的日志;所述Follower日志为所述Leader日志被复制到其他集群时,分散到其他集群的每个节点上的日志。3.如权利要求2所述的方法,其特征在于,所述触发所述节点向Leader日志所在的集群发起日志读取请求之后,所述方法还包括:触发所述Leader日志所在的集群内的任意一个节点接收所述日志读取请求,并读取所述节点上的Leader日志;提取所述Leader日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读取请求的节点。4.如权利要求2所述的方法,其特征在于,所述触发所述节点向Follower日志所在的集群分别发起日志读取请求之后,所述方法还包括:触发所述Follower日志所在的集群内的任意一个节点接收所述日志读取请求,并读取所述集群内的所有节点上的Follower日志;提取所述Follower日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读取请求的节点。5.如权利要求1-4任意一项所述的方法,其特征在于,所述根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态,包括:根据每一个所述集群的日志中处于写失败状态的描述的序列标识、每一个所述集群的最大序列标识及所有集群中最大的序列标识,确定每一条描述在所述集群内的当前状态;根据每一条描述在所有集群内的当前状态,结合NRW机制,确定每一条描述的最终状态。6.如权利要求5所述的方法,其特征在于,所述根据所述每一条描述的最终状态及其在每一个集群内的当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,包括:若所述描述的最终状态为操作成功,则确定所述描述的当前状态为操作失败的集群需要进行的数据同步操作为向当前状态为操作成功的集群读取数据;若所述描述的最终状态为操作失败,则确定所述描述的当前状态为操作成功的集群需要进行的数据同步操作为回滚数据。7.如权利要求5所述的方法,其特征在于,所述触发所述对应的集群对所述描述执行所述数据同步操作,包括:若所述描述的最终状态为操作成功,则触发所述对应的集群向当前状态为操作成功的集群读取所述描述的对象数据;若所述描述的最终状态为操作失败,则触发所述对应的集群将所述描述的对象数据回滚。8.一种多数据中心间的数据同步装置,其特征在于,包括:状态监测单元,用于获取多数据中心的任意一个集群内任意一个节点的日志的状态,并判断所述日志是否处于完成状态;其中,所述日志包括多条描述,每一条描述包括一个序列标识,用于标记所述描述在所述日志中的位置;请求发起单元,用于在所述日志处于完成状态时,触发所述节点向所述多数据中心内与所述节点所在的集群处于复制关系中的其他集群发起日志读取请求;标识获取单元,用于获取所述多数据中心内每一个集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识;状态确定单元,用于根据所述多数据中心内所有集群的日志中处于写失败状态的描述的序列标识及每一个集群的日志中最大的序列标识,确定每一条描述的最终状态及其在每一个集群内的当前状态;数据同步单元,用于根据所述每一条描述的最终状态及其在每一个集群内的当前状态,确定每一个集群针对所述描述需要进行的数据同步操作,并将所述数据同步操作反馈给对应的集群,以触发对应的集群执行所述数据同步操作。9.如权利要求8所述的装置,其特征在于,所述请求发起单元,具体用于:触发所述节点向Leader日志所在的集群发起日志读取请求,并标记所述Leader日志的操作状态;其中,所述Leader日志的操作状态用于防止所述Leader日志所在的集群同时响应多个节点的日志读取请求;触发所述节点向Follower日志所在的集群分别发起日志读取请求;其中,所述Leader日志为第一个接收到数据操作请求的节点的日志;所述Follower日志为所述Leader日志被复制到其他集群时,分散到其他集群的每个节点上的日志。10.如权利要求9所述的装置,其特征在于,所述装置还包括:日志读取单元,用于触发所述Leader日志所在的集群内的任意一个节点接收所述日志读取请求,并读取所述节点上的Leader日志;标识提取单元,用于提取所述Leader日志中处于写失败状态的描述的序列标识及最大的序列标识,并反馈给发起所述日志读...

【专利技术属性】
技术研发人员:罗治文
申请(专利权)人:华为数字技术成都有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1