异步复制方法、装置与系统的制作方法

文档序号:7790768阅读:152来源:国知局
异步复制方法、装置与系统的制作方法
【专利摘要】本发明实施例提供一种异步复制方法、装置与系统。该方法包括:主数据中心接收用户设备发送的写请求,所述写请求中包含待写入数据;生成与待写入数据对应的对象元数据和对象数据,并存储对象数据和对象元数据,对象元数据包含对象标识,对象数据与所述待写入数据相同;向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的所述对象数据。该方法解决了用户在备数据中心中进行对象访问时间不可控的问题。
【专利说明】异步复制方法、装置与系统
【技术领域】
[0001]本发明实施例涉及存储技术,尤其涉及一种基于对象存储的多数据中心间的异步复制方法、装置与系统。
【背景技术】
[0002]对象存储服务,一般应用于大规模的数据存储服务,如互联网海量内容、备份等服务。对象是对象存储的基本单元,包括对象元数据和对象数据。多数据中心(Multiple DataCenter,简称:MDC)提供灵活的数据复制策略和数据冗余策略,保障业务运营的连续性。数据中心间数据的同步通常采用异步复制方式:数据在主数据中心(DCl)写成功即向用户返回成功,然后后台同步到备数据中心(DC2)。
[0003]现有技术中,对象数据在数据中心间异步复制同步时,DCl根据用户写请求的原始数据生成对象元数据和对象数据两部分存储在本地存储引擎中,对象数据为原始待写入数据,对象元数据包括对象数据的各种属性:对象名(Object Name)、对象标识(Object ID)、对象创建时间(Object Create Time)、对象修改时间Object Modify Time)、对象数据校验和MD5等信息,其中若对象数据校验和MD5发生变化,对象创建时间也跟着发生变化;根据用户写请求原始记录生成任务,该任务包括对象名、对象标识、任务创建时间(Task CreateTime)、任务修改时间(Task Modify Time)、权限信息等,并将任务逐一传到DC2,在DC2再按顺序执行一遍所有的用户写请求。DCl根据任务进行对象同步到DC2时,首先将对象数据同步到DC2,然后将对象元数据同步到DC2,当对象数据和元数据均成功传输到DC2之后,用户才能对DC2上的对象进行访问。同步周期内,若用户对同一对象进行了多次写请求,DCl也相应地将对象多次同步到DC2。
[0004]基于上述现有技术,数据中心间对象异步复制,当对象数据较大,如5万亿字节(Tera Byte,简称:TB)时,DCl向DC2进行对象数据传输时延时较大,使得用户在DC2看到对象的时间不可控。

【发明内容】

[0005]本发明实施例提供一种异步复制方法、装置与系统,以解决现有技术中主数据中心与备数据中心之间进行对象异步复制时同步时间不可控和无效同步的问题。
[0006]第一方面,本发明实施例提供一种异步复制方法,包括:
[0007]主数据中心接收用户设备发送的写请求,所述写请求中包含待写入数据;
[0008]所述主数据中心生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同;
[0009]所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;
[0010]所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;
[0011]所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0012]在第一方面的第一种可能的实现方式中,所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,还包括:
[0013]所述主数据中心生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间;
[0014]所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并;
[0015]所述主数据中心向备数据中心发送第一同步消息,包括:
[0016]所述主数据中心根据所述任务创建时间和同步周期确定是否开始执行同步任务;
[0017]若开始执行同步任务,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息。
[0018]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并,包括:
[0019]所述主数据中心获取包含相同对象标识的各同步任务;
[0020]所述主数据中心比较包含相同对象标识的各同步任务的任务修改时间;
[0021]所述主数据中心根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任务。
[0022]结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还包括:
[0023]所述主数据中心接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识;
[0024]若所述第一同步响应为成功响应,则所述主数据中心删除所述同步任务。
[0025]结合第一方面或第一方面的第一到第三任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述主数据中心向备数据中心发送第一同步消息之前,还包括:
[0026]确定所述对象元数据是否存在;
[0027]若存在,则执行所述主数据中心向备数据中心发送第一同步消息的步骤;
[0028]若不存在,则所述主数据中心向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在任务修改时间之前的对象。
[0029]结合第一方面或第一方面的第一到第四任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据之前,还包括:[0030]所述同步请求还包含对象修改时间;
[0031]所述主数据中心根据所述对象标识确定本地对象元数据是否存在;
[0032]若存在,所述主数据中心判断所述对象修改时间是否相同;
[0033]若相同,则根据所述本地对象元数据读取所述对象数据;
[0034]否则,所述主数据中心向所述备数据中心发送包含对象不存在的同步响应。
[0035]结合第一方面或第一方面的第一到第五任一种可能的实现方式,在第一方面的第六种可能的实现方式中,还包括:所述主数据中心接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间;
[0036]所述主数据中心根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。
[0037]结合第一方面或第一方面的第一到第六任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述对象元数据在第一通道上传输,所述待写入数据在第二通道上传输。
[0038]第二方面,本发明实施例提供一种异步复制方法,包括:
[0039]备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据;
[0040]所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识;
[0041]所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0042]在第二方面的第一种可能的实现方式中,备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括:
[0043]所述对象元数据包含所述对象标识、数据校验和、对象创建时间和对象修改时间;
[0044]所述备数据中心根据所述对象元数据包含的对象标识确定本地对象元数据是否存在;
[0045]若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0046]若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和;
[0047]若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传;
[0048]若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0049]所述备数据中心向所述主数据中心发送第一同步响应。[0050]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传,包括:
[0051]所述备数据中心确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0052]若是,所述备数据中心直接向所述主数据中心返回第一同步成功响应;
[0053]否则,所述备数据中心根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应;
[0054]所述若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传,包括:
[0055]所述备数据中心确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新;
[0056]若是,所述备数据中心根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应;
[0057]否则,所述备数据中心直接向所述主数据中心返回第一同步成功响应。
[0058]结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识,包括:
[0059]所述备数据中心根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。
[0060]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述备数据中心根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括:
[0061]所述备数据中心根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在;
[0062]若不存在,则取消并删除所述数据同步任务;
[0063]若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务包含的对象修改时间是否相同;
[0064]若不相同,则取消并删除所述数据同步任务;
[0065]若相同,确定所述本地对象元数据的状态是否为数据未传;
[0066]若不为数据未传,则取消并删除所述数据同步任务;
[0067]若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
[0068]结合第二方面或第二方面的第一到第四任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含所述对象数据,包括:[0069]所述备数据中心,接收所述主数据中心根据各同步请求发送的第二同步消息;
[0070]若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步;
[0071]若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求;
[0072]若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
[0073]结合第二方面或第二方面的第一到第五任一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述备数据中心向所述主数据中心发送同步请求之后,所述备数据中心接收所述主数据中心发送的第二同步消息之前,还包括:
[0074]所述备数据中心接收所述主数据中心的同步响应;
[0075]若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
[0076]结合第二方面或第二方面的第一到第六任一种可能的实现方式,在第二方面的第七种可能的实现方式中,还包括:
[0077]所述备数据中心接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务;
[0078]所述备数据中心根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在;
[0079]若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0080]若否,则删除所述本地对象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应;
[0081]否则取消任务,并向所述主数据中心发送删除成功响应。
[0082]结合第二方面或第二方面的第一到第七任一种可能的实现方式,在第二方面的第八种可能的实现方式中,还包括:
[0083]所述备数据中心接收用户设备的读请求,所述用户读请求包含对象标识;
[0084]所述备数据中心根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏;
[0085]若所述对象数据未传或损坏,所述备数据中心向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据;
[0086]所述备数据中心,将所述第二同步消息包含的对象数据返回给所述用户设备;
[0087]所述备数据中心,存储所述第二同步消息包含的对象数据并标记所述本地对象元数据的状态为数据已传。
[0088]结合第二方面或第二方面的第一到第八任一种可能的实现方式,在第二方面的第九种可能的实现方式中,还包括:
[0089]所述对象元数据在第一通道上传输,所述对象数据在第二通道上传输。
[0090]第三方面,本发明实施例提供一种主数据中心,包括:[0091]存储模块,用于接收用户设备发送的写请求,所述写请求中包含待写入数据;以及
[0092]生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同;
[0093]第一同步发送模块,用于向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;
[0094]第二同步发送模块,用于接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;以及
[0095]根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0096]在第三方面的第一种可能的实现方式中,所述第一同步发送模块,具体用于:
[0097]在向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间;
[0098]根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并;
[0099]根据所述任务创建时间和同步周期确定是否开始执行同步任务;
[0100]若开始执行同步任务,根据合并后的同步任务向所述备数据中心发送第一同步消
肩、O
[0101]结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述第一同步发送模块,具体用于:
[0102]获取包含相同对象标识的各同步任务;
[0103]比较包含相同对象标识的各同步任务的任务修改时间;
[0104]根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任务。
[0105]结合第三方面的第一种或第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述第一同步发送模块根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还用于:
[0106]接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识;
[0107]若所述第一同步响应为成功响应,则删除所述同步任务。
[0108]结合第三方面或第三方面的第一到第三任一种可能的实现方式,所述第一同步发送模块向备数据中心发送第一同步消息之前,还用于:
[0109]确定所述对象元数据是否存在;
[0110]若存在,则执行向备数据中心发送第一同步消息的步骤;
[0111]若不存在,则向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在和任务修改时间之前的对象。
[0112]结合第三方面或第三方面的第一到第四任一种可能的实现方式,在第三方面的第五种可能的实现方式中,所述第二同步发送模块接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,所述第二同步发送模块根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据之前,还用于:
[0113]所述同步请求还包含对象修改时间;
[0114]根据所述对象标识确定本地对象元数据是否存在;
[0115]若存在,判断所述对象修改时间是否相同;
[0116]若相同,则根据所述本地对象元数据读取所述对象数据;
[0117]否则,向所述备数据中心发送包含对象不存在的同步响应。
[0118]结合第三方面或第三方面的第一到第五任一种可能的实现方式,在第三方面的第六种可能的实现方式中,所述第二同步发送模块,还用于:
[0119]接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间;以及
[0120]根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。
[0121]结合第三方面或第三方面的第一到第六任一种可能的实现方式,在第三方面的第七种可能的实现方式中,
[0122]所述对象元数据在第一通道上传输,所述待写入数据在第二通道上传输。
[0123]第四方面,本发明实施例提供一种备数据中心,包括:
[0124]第一同步接收模块,用于接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据;
[0125]第二同步接收模块,用于向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识;以及
[0126]接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0127]在第四方面的第一种可能的实现方式中,所述第一同步接收模块接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,所述第二同步接收模块向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,所述第一同步接收模块,还用于:
[0128]所述对象元数据包含所述对象标识、数据校验和、对象创建时间和对象修改时间;
[0129]根据所述对象元数据包含的对象标识确定本地对象元数据是否存在;
[0130]若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0131 ] 若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和;
[0132]若所述数据校验和相同,则根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传;
[0133]若所述数据校验和不同,则根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0134]向所述主数据中心发送第一同步响应。
[0135]结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述第一同步接收模块,具体用于:
[0136]若所述数据校验和相同,确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0137]若是,直接向所述主数据中心返回第一同步成功响应;
[0138]否则,根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应;
[0139]若所述数据校验和不同,确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新;
[0140]若是,根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应;
[0141]否则,直接向所述主数据中心返回第一同步成功响应。
[0142]结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述第二同步接收模块,具体用于:
[0143]根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。
[0144]结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述第二同步接收模块,根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还用于:
[0145]根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在;
[0146]若不存在,则取消并删除所述数据同步任务;
[0147]若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务中包含的对象修改时间是否相同;
[0148]若不相同,则取消并删除所述数据同步任务;
[0149]若相同,确定所述本地对象元数据的状态是否为数据未传;
[0150]若不为数据未传,则取消并删除所述数据同步任务;
[0151]若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
[0152]结合第四方面或第四方面的第一到第四任一种可能的实现方式,所述第二同步接收模块,具体用于:
[0153]接收所述主数据中心根据各同步请求发送的第二同步消息;
[0154]若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步;
[0155]若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求;
[0156]若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
[0157]结合第四方面或第四方面的第一到第五任一种可能的实现方式,在第四方面的第六种可能的实现方式中,所述第二同步接收模块向所述主数据中心发送同步请求之后,接收所述主数据中心发送的第二同步消息之前,还用于:
[0158]接收所述主数据中心的同步响应;
[0159]若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
[0160]结合第四方面或第四方面的第一到第六任一种可能的实现方式,在第四方面的第七种可能的实现方式中,所述第一同步接收模块,还用于:
[0161]接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务;
[0162]根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在;
[0163]若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据的对象修改时间旧;
[0164]若否,则删除所述本地对象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应;
[0165]否则取消任务,并向所述主数据中心发送删除成功响应。
[0166]结合第四方面或第四方面的第一到第七任一种可能的实现方式,在第四方面的第八种可能的实现方式中,所述第二同步接收模块,还用于:
[0167]接收用户设备的读请求,所述用户读请求包含对象标识;
[0168]根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏;
[0169]若所述对象数据未传或损坏,向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据;
[0170]将所述第二同步消息包含的对象数据返回给所述用户设备;
[0171]存储所述第二同步消息包含的对象数据并标记所述本地对象元数据的状态为数据已传。
[0172]结合第四方面或第四方面的第一到第八任一种可能的实现方式,在第四方面的第九种可能的实现方式中,所述对象元数据在第一通道上传输,所述对象数据在第二通道上传输。
[0173]第五方面,本发明实施例提供一种主数据中心,包括第一处理器和与所述第一处理连接的第一存储器,其中所述第一存储器中存储一组程序代码,所述第一处理器调用所述程序代码,用于执行如第一方面或第一方面的第一到第六任一种可能的实现方式中所述的异步复制方法。
[0174]第六方面,本发明实施例提供一种备数据中心,包括第二处理器和与所述第二处理连接的第二存储器,其中所述第二存储器中存储一组程序代码,所述第二处理器调用所述程序代码,用于执行如第二方面或第二方面的第一到第八任一种可能的实现方式中所述的异步复制方法。[0175]第七方面,本发明实施例提供一种异步复制系统,包括:第五方面所述的主数据中心,和第六方面所述的备数据中心。
[0176]基于上述方案,本发明实施例提供的异步复制方法、装置与系统,通过主数据中心将对象元数据和对象数据分开进行同步到备数据中心,使得对象元数据能够快速地同步到备数据中心,解决了用户在备数据中心中进行对象访问时间不可控的问题,同时通过元数据同步任务合并,克服了同步周期内用户对相同对象多次操作而容易引起无效数据同步的问题。
【专利附图】

【附图说明】
[0177]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0178]图1为本发明提供的异步复制方法实施例一的流程图;
[0179]图2为本发明提供的异步复制方法实施例二的流程图;
[0180]图3为本发明提供的异步复制方法具体实施例一的信息交互图;
[0181]图4为本发明提供的异步复制方法具体实施例二的信息交互图;
[0182]图5为本发明提供的异步复制方法具体实施例三的信息交互图;
[0183]图6为本发明提供的异步复制方法具体实施例四的信息交互图;
[0184]图7为本发明提供的主数据中心实施例一的结构示意图;
[0185]图8为本发明提供的备数据中心实施例一的结构示意图;
[0186]图9为本发明提供的主数据中心实施例二的结构示意图;
[0187]图10为本发明提供的备数据中心实施例二的结构示意图;
[0188]图11为本发明提供的异步复制系统实施例的结构示意图。
【具体实施方式】
[0189]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0190]图1为本发明提供的异步复制方法实施例一的流程图,如图1所示,该方法实施例,包括:
[0191]S101、主数据中心接收用户设备发送的写请求,所述写请求中包含待写入数据;
[0192]S102、所述主数据中心生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同;
[0193]其中,所述待写入数据对应对象数据部分,所述对象元数据为对象数据的属性集合,包含对象名,对象标识,对象创建时间,对象修改时间,数据校验和等。同一对象首次创建时,对象修改时间与对象创建时间相同,其后,对于同一对象的操作,对象数据校验和不变时,对象创建时间不变,只是对象修改时间变化。此处不再赘述。用户的写请求可以为通过所述待写入数据对对象元数据和对象数据进行创建或者更新请求;也可以不包含所述待写入数据,即所述待写入数据为空,相应的主数据中心生成的对象数据也为空,此时,用户的写请求可以为更新对象元数据请求或者删除对象请求,从而生成相应的同步任务和删除对象任务。
[0194]S103、所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;
[0195]S104、所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;
[0196]S105、所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的所述待写入数据。
[0197]优选地,S103中,所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,还包括:
[0198]所述主数据中心生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间;
[0199]所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并;
[0200]所述主数据中心向备数据中心发送第一同步消息,包括:
[0201]所述主数据中心根据所述任务创建时间和同步周期确定是否开始执行同步任务;
[0202]若开始执行同步任务,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息。
[0203]其中,所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并,包括:
[0204]所述主数据中心获取包含相同对象标识的各同步任务;
[0205]所述主数据中心比较包含相同对象标识的各同步任务的任务修改时间;
[0206]所述主数据中心根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任务。
[0207]需说明的是,若与所述对象元数据对应的同步任务具有相同对象标识的同步任务不存在,则直接存储所述对象元数据对应的同步任务为合并后的同步任务;主数据中心根据对象元数据中对象修改时间的得到对应的同步任务中的任务修改时间,即任务修改时间随着对象修改时间变化而变化,与对象修改时间保持一致。
[0208]进一步地,S103中,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还包括:
[0209]所述主数据中心接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识;
[0210]若所述第一同步响应为成功响应,则所述主数据中心删除所述同步任务。
[0211]进一步地,所述主数据中心向备数据中心发送第一同步消息之前,还包括:
[0212]确定所述对象元数据是否存在;
[0213]若存在,则执行所述主数据中心向备数据中心发送第一同步消息的步骤;
[0214]若不存在,则所述主数据中心向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在任务修改时间之前的对象。其中,在任务修改时间之前的对象,指相同对象标识的对象元数据中包含的对象修改时间不比该任务修改时间新。
[0215]进一步地,S104中,所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,S105中,所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的所述对象数据之前,还包括:
[0216]所述同步请求还包含对象修改时间;
[0217]所述主数据中心根据所述对象标识确定本地对象元数据是否存在;
[0218]若存在,所述主数据中心判断所述对象修改时间是否相同;
[0219]若相同,则根据所述本地对象元数据读取所述对象数据;
[0220]否则,所述主数据中心向所述备数据中心发送包含对象不存在的同步响应。
[0221]优选地,所述主数据中心接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间;
[0222]所述主数据中心根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。其中主数据中心根据所述读修复请求向所述备数据中心发送第二同步消息的过程与S105中主数据中心根据所述同步请求向所述备数据中心发送第二同步消息的过程类似,不再赘述。
[0223]优选地,上述对象元数据可以在第一通道上传输,上述对象数据可以在第二通道上传输。其中,第一通道和第二通道可以但不限于为物理专用通道,可以在物理传输通道带宽上划分两条虚拟的专用通道,例如,可以在100兆字节(MegaByte,简称:M)的光线传输通道上,划分IM的虚拟专用通道作为第一通道传输对象元数据,划分5M或IOM的虚拟专用通道作为第二通道传输对象数据,使得对象元数据和对象数据的同步互相不干扰,对象元数据的同步周期可以更加稳定快速,使得用户可以在备数据中心中可以更快访问到对象。
[0224]具体来说,主数据中心,首先接收来自用户设备的写请求,该写请求可以包含待写入数据,该待写入数据容量可能比较大,比如说5TB,然后根据用户的写请求生成相应的对象元数据,该对象元数据通常比较小不到1M,并将该对象元数据和待写入数据也即对象数据存储在本地存储中心,同时生成与所述对象元数据对应的同步任务,之后将本地同对象标识的各同步任务根据任务修改时间进行合并得到合并后的同步任务,删除现有的同对象标识的各同步任务,仅存储合并后的同步任务;之后确定当前时间与任务创建时间的差是否大于同步周期,从而根据任务创建时间和同步周期确定是否开始执行同步任务,若大于同步周期则开始执行同步任务,根据合并后同步任务的对象标识获取需同步的对象元数据:若对象元数据不存在,说明该对象已被删除,则向备数据中心发送删除对象任务,包含对象标识和任务修改时间,使得备数据中心相应的对象及时被清除;若对象元数据存在,则向备数据中心发送包含该对象元数据的第一同步消息,使得备数据中心可以根据该对象元数据同步本地对象元数据,并根据同步后的本地对象元数据发送同步请求;最后接收备数据中心发送的包含对象标识和对象修改时间的同步请求,根据对象标识获取相应的对象数据,若相应的对象数据不存在,或者获取到的对象数据的对象修改时间与同步请求不同,则向备数据中心返回对象不存在的同步响应,否则向备数据中心发送包含对象数据的第二同步消息,从而将对象数据也即待写入数据同步到备数据中心上进行备份。因此从主数据中心同步到备数据中心需要的时间可控,使得用户可以从备数据中心尽快访问对象的,并且在主数据中心也可以接受备数据中心根据用户读请求发送的读修复请求,根据读修复请求向备数据中心返回相应的对象数据,使得备数据中心将接收到的对象数据返回给用户,使得用户可以在备数据中心尽快访问对象。
[0225]具体实现时,主数据中心可以包括:前端处理器(Foreground Processor),后台处理器(Background Processor),消息队列(Message Queue),存储引擎(Storage Engine),该结构适用于本申请主数据中心和备数据中心,在此不再赘述。其中,前端处理器,可以用来接收用户写请求,根据用户的写请求生成对象元数据,并存储对象元数据和待写入数据到本地存储引擎;生成对象元数据对应的同步任务,从消息队列获取同对象标识的同步任务进行任务合并得到合并后的同步任务,并发送该合并后的同步任务到消息队列;接收备数据中心的第一同步响应,若第一同步响应为成功响应,并且消息队列中相同对象标识的同步任务的修改时间与第一同步消息中的对象元数据的对象修改时间相同,则删除消息队列中相同对象标识的同步任务,否则,若第一同步响应为失败响应或者超时未接到第一同步响应,则不进行删除任务的操作;接收备数据中心的同步请求,并根据同步请求从存储引擎中读取对应的对象数据,若对象数据不存在或者不一致,则向备数据中心返回对象不存在的同步响应,否则向备数据中心发送包含对象数据的第二同步消息;以及接收备数据中心的读修复请求,根据读修复请求从存储引擎中读取相应的对象数据,并向备数据中心发送包含对象数据的第二同步消息。后台处理器,可以用来根据任务创建时间进行同步周期的监控,在当前时间与任务创建时间之差大于同步周期时,从消息队列中扫描各待同步的同步任务,获取各待同步的同步任务对应的对象元数据,之后向备数据中心发送包含对应的对象元数据的第一同步消息或者包含对象标识和对象修改时间的删除对象任务到备数据中心。优选地,所述前端处理器和所述后台处理器可以部署在同一处理器,可以更好的进行主数据中心面向用户业务和面向备数据中心的备份业务的管理,调整资源的占用,根据需要增加更多的数据同步策略,如进行元数据同步的第一同步消息可以尽快完成,而进行数据同步的第二同步消息,可以在主数据中心面向用户业务业务忙时减少,而在面向用户业务空闲时增加。
[0226]本实施例提供的复制方法,通过主数据中心将对象元数据和对象数据分开进行同步到备数据中心,使得对象元数据能够快速地同步到备数据中心,解决了用户在备数据中心中进行对象访问时间不可控的问题,同时通过元数据同步任务合并,克服了同步周期内用户对相同对象多次操作而容易引起无效数据同步的问题。
[0227]图2为本发明提供的异步复制方法实施例二的流程图,如图2所示,该方法实施例,包括:
[0228]S201、备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据;
[0229]S202、所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识;
[0230]S203、所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0231]进一步地,S201中备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,S202中所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括:
[0232]所述对象元数据包含所述对象标识、数据校验和、对象创建时间和对象修改时间;
[0233]所述备数据中心根据所述对象元数据包含的对象标识确定本地对象元数据是否存在;
[0234]若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0235]若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和;
[0236]若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传;
[0237]若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0238]所述备数据中心向所述主数据中心发送第一同步响应。
[0239]其中,所述若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传,包括:
[0240]所述备数据中心确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0241]若是,所述备数据中心直接向所述主数据中心返回第一同步成功响应;
[0242]否则,所述备数据中心根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应;
[0243]所述若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传,包括:
[0244]所述备数据中心确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新;
[0245]若是,所述备数据中心根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应;
[0246]否则,所述备数据中心直接向所述主数据中心返回第一同步成功响应。
[0247]进一步地,S202中,所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识,包括:
[0248]所述备数据中心根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。[0249]所述备数据中心根据所述包含对象标识、任务修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括:
[0250]所述备数据中心根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在;
[0251]若不存在,则取消并删除所述数据同步任务;
[0252]若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务包含的对象修改时间是否相同;
[0253]若不相同,则取消并删除所述数据同步任务;
[0254]若相同,确定所述本地对象元数据的状态是否为数据未传;
[0255]若不为数据未传,则取消并删除所述数据同步任务;
[0256]若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
[0257]进一步地,S203中,所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含所述对象数据,包括:
[0258]所述备数据中心,接收所述主数据中心根据各同步请求发送的第二同步消息;
[0259]若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步;
[0260]若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求;
[0261]若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
[0262]进一步地,S202中所述备数据中心向所述主数据中心发送同步请求之后,并且S203中所述备数据中心接收所述主数据中心发送的第二同步消息之前,还包括:
[0263]所述备数据中心接收所述主数据中心的同步响应;
[0264]若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
[0265]进一步地,该方法实施例,还包括:
[0266]所述备数据中心接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务;
[0267]所述备数据中心根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在;
[0268]若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0269]若否,则删除所述本地对象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应;
[0270]否则取消任务,并向所述主数据中心发送删除成功响应。
[0271]优选地,该方法实施例,还包括:
[0272]所述备数据中心接收用户设备的读请求,所述用户读请求包含对象标识;
[0273]所述备数据中心根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏;
[0274]若所述对象数据未传或损坏,所述备数据中心向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据;
[0275]所述备数据中心,将所述第二同步消息包含的对象数据返回给所述用户设备;
[0276]所述备数据中心,存储所述第二同步消息包含的对象数据并标记所述本地元数据的状态为数据已传。
[0277]优选地,上述对象元数据可以在第一通道上传输,上述对象元数据可以在第二通道上传输,具体过程与图1所示实施例类似,不再赘述。
[0278]需说明的是,备数据中心根据接收到的主数据中心的同步响应进行数据同步任务的删除:若接收到的同步响应为对象不存在,则删除相同对象标识的元数据,并且读取相同对象标识的数据同步任务,若该数据同步任务的任务修改时间没变,则删除,否则不删除;若接收到的同步响应为包含待写入数据的第二同步消息,读取相同对象标识的数据同步任务,若其任务修改时间没变,则删除,否则,读取相同对象标识的对象元数据,若对象元数据包含的数据校验和不同,则删除从主数据中心接收到的待写入数据,并且不删除该数据同步任务。此外,备数据中心自身取消任务时,读取相同对象标识的数据同步任务,若该数据同步任务的任务修改时间没变,则删除,否则不删除。
[0279]具体来说,备数据中心,接收主数据中心发送的第一同步消息,根据第一同步消息同步本地对象元数据,并根据对象元数据的数据校验和来确定是否需要进行数据同步,若需要则生成与同步后本地对象元数据对应的数据同步任务,并根据数据同步任务向主数据中心发送同步请求,从而从主数据获取需要同步的对象数据,完成主数据中心到备数据中心的数据同步。备数据中心,采用多段下载,并记录每一段的状态,使用断点续传的技术,完成数据从主数据中心到备数据中心的同步:备数据中心将所述数据同步任务划分为N段数据同步任务(如按IM为单位进行划分),N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步;接收所述主数据中心根据各同步请求发送的第二同步消息,若第二同步消息包含所述待写入数据,则标记对应段的数据同步任务为完成同步,并存储所述待写入数据,若第二同步消息不包含所述待写入数据,则重新根据对应段的数据同步任务发送同步请求。备数据中心在接收到主数据中心的删除对象任务时,首先获取相同对象标识的本地对象元数据,若任务修改时间比对象修改时间新或者相同则删除对象元数据和数据,否则不删除,直接返回删除成功响应。备数据中心,在接收到用户读请求时,若此时对象数据不存在,可能的场景为对象元数据已经完成同步但是对象数据未完成同步,或者对象数据损坏,则向主数据中心发送读修复请求,从主数据中心获取数据返回给用户,并写入本地存储引擎,让用户能够快速访问到对象,同时同步或修复本地数据。
[0280]具体实现时,备数据中心的前端处理器用于执行与主数据中心交互的动作:接收第一同步消息,同步本地对象元数据,存储同步后的对象元数据到本地存储引擎,根据同步后的对象元数据生成数据同步任务,发送到本地消息队列,使得备数据中心的后台处理器根据数据同步任务向主数据中心发送同步请求,之后接收主数据发送的第二同步消息,保存其中的对象数据到本地存储引擎,并删除消息队列中相同对象标识的数据同步任务;接收主数据中心发送的删除对象任务进行对象删除;接收用户设备的读请求,根据本地对象数据的存在与否或损坏与否向主数据中心发送读修复请求,并接收主数据中心返回的相应的对象数据,将该对象数据返回给用户并保存在本地存储引擎。
[0281]本实施例提供的方法,通过备数据中心采用多段下载和断点续传技术向主数据中心发起数据同步请求完成对象数据的同步,提高了对象数据的同步速度;并且通过备数据中心采用读修复技术,在对象元数据完成同步而对象数据还未完成同步的情况下,使得用户能够快速访问到对象。
[0282]下面结合具体实施例对本发明提供的异步复制方法进行说明。
[0283]图3为本发明提供的异步复制方法具体实施例一的信息交互图,该具体实施例一为图1所示方法实施例中主数据中心进行任务合并时与用户设备和备数据中心之间的具体信息交互过程,如图3所示,主数据中心包括前端处理器、存储引擎和消息队列,该具体实施例包括以下步骤:
[0284]步骤301、用户设备向主数据中心的前端处理器发送写请求;
[0285]步骤302、主数据中心的前端处理器生成对象元数据和同步任务;
[0286]步骤303、主数据中心的前端处理器存储待写入数据到本地存储引擎;
[0287]步骤304、本地存储引擎向主数据中心的前端处理器返回成功;
[0288]步骤305、主数据中心的前端处理器存储对象元数据到本地存储引擎;
[0289]步骤306、本地存储引擎向主数据中心的前端处理器返回成功;
[0290]步骤307、主数据中心的前端处理器从本地消息队列获取同对象标识同步任务;
[0291]步骤308、本地消息队列向主数据中心的前端处理器返回同对象标识同步任务;
[0292]步骤309、主数据中心的前端处理器根据任务修改时间对各同对象标识同步任务进行合并;
[0293]步骤310、主数据中心的前端处理器发送合并后同步任务到本地消息队列;
[0294]步骤311、本地消息队列向主数据中心的前端处理器返回成功;
[0295]步骤312、主数据中心的前端处理器向用户设备返回成功。
[0296]其中,步骤302中的对象元数据和同步任务,还可以包含对象名,使得步骤312的前端处理器根据对象名向用户设备返回成功,对于不同的用户的对象可能具有相同对象名,但是对象标识是唯一的。步骤308中,若本地消息队列未返回相同对象标识的同步任务,则前端处理器不执行步骤309,直接发送与根据用户写请求生成的对象元数据对应的同步任务到本地消息队列;若本地消息队列返回相同对象标识的同步任务,则执行步骤309进行数据合并,具体过程类似方法实施例一中合并同步任务的过程,不再赘述。
[0297]现有技术中,前端处理器接收用户的写请求然后一一顺序生成同步任务发送到本地消息队列,在同步周期到达后,再一一发送到备数据中心进行对象数据和元数据的同步,对于相同对象标识的对象在同步周期内,用户可能存在多次操作,此时只需要根据同步周期内的最后一次用户写请求同步对象到备数据中心上。
[0298]本具体实施例一提供的方法,通过合并同步任务,提高主数据中心向备数据中心的同步效率,并且避免了同步周期内对于相同对象的多次用户写请求导致的无效同步的问题。[0299]图4为本发明提供的异步复制方法具体实施例二的信息交互图,该具体实施例二为图1所示方法实施例中主数据中心通过第一同步消息向备数据中心进行对象元数据同步的具体信息交互过程,如图4所示,该具体实施例包括以下步骤:
[0300]步骤401、主数据中心后台处理器从主数据中心消息队列获取同步任务;
[0301]步骤402、主数据中心消息队列向主数据中心后台处理器返回同步任务;
[0302]步骤403、主数据中心后台处理器从主数据中心存储引擎获取相同对象标识的对象元数据;
[0303]步骤404、主数据中心存储引擎向主数据中心后台处理器返回对象元数据;
[0304]步骤405、主数据中心后台处理器比较同步任务和对象元数据的一致性;
[0305]步骤406、主数据中心后台处理器向备数据中心发送第一同步消息或删除对象任务;
[0306]步骤407、备数据中心获取相同对象标识的备对象元数据;
[0307]步骤408、备数据中心根据第一同步消息同步本地备对象元数据或根据删除对象任务删除对象;
[0308]步骤409、备数据中心向主数据中心后台处理器返回同步响应或者删除对象响应;
[0309]步骤410、主数据中心后台处理器删除主数据中心消息队列中的同步任务。
[0310]其中,步骤406和步骤410与图1所示方法实施例一中S103类似步骤408?409与图2所示方法实施例二中S201类似,不再赘述。步骤405中,检查同步任务和对象元数据的一致性,即图1所示方法实施例一 S103中,比较对象修改时间,确定对象元数据是否需要通过第一同步消息同步到备数据中心上,具体过程不再赘述。需说明的是,在步骤401中,一种可能的实施方式为,主数据中心的后台处理器,进行同步周期监控,比如说同步周期为6小时,在12点钟时扫描消息队列中待同步的同步任务,若消息队列中的待同步的同步任务的任务创建时间在6点之前则获取该同步任务进行后续同步处理;步骤404中,返回对象元数据若为空,即对象元数据不存在,则执行步骤406发送删除对象任务,并且带匹配条件提示备数据中心在进行对象删除时,只能删除任务创建时间为扫描时间之前某个时间段的对象。例如带匹配条件为扫描时间之前I小时,步骤408中,备数据中心在删除对象时,首先要检查对象的对象创建时间是否在11点之前,若对象创建时间在11点之后,则不删除对象,执行步骤409,直接向主数据中心后台处理器返回删除成功消息,若对象创建时间在11点之前,则删除同步任务对应的对象元数据和对象数据。步骤408中,备数据中心根据第一同步消息同步本地备对象元数据,可以为根据第一同步消息中的对象元数据生成,并替换新的对象元数据与数据中心相关的属性为备数据中心的属性得到同步后的对象元数据,根据数据校验和标记同步后的对象元数据的状态为数据已传或者数据未传,之后保存到本地存储弓I擎完成对象元数据的同步。
[0311]该方法具体实施例,通过主数据中心向备数据中心发送第一同步消息同步对象元数据,保证对象元数据尽快同步到备数据中心,使得用户在备数据中心访问对象的时间可控。
[0312]图5为本发明提供的异步复制方法具体实施例三的信息交互图,该具体实施例三为图2所示方法实施例中备数据中心向主数据中心发送同步请求以同步对象数据的具体信息交互过程,如图5所示,该方法具体实施例,包括以下步骤:
[0313]步骤501、备数据中心后台处理器从备数据中心消息队列获取数据同步任务;
[0314]步骤502、备数据中心消息队列向备数据中心后台处理器返回数据同步任务;
[0315]步骤503、备数据中心后台处理器从备数据中心存储引擎中获取相同对象标识的对象元数据;
[0316]步骤504、备数据中心存储引擎向备数据中心后台处理器返回对象元数据;
[0317]步骤505、备数据中心后台处理器检查数据同步任务和对象元数据的一致性;
[0318]步骤506、备数据中心后台处理器将数据同步任务分段,标记各段的状态,并生成N个同步请求;
[0319]步骤507、备数据中心后台处理器向主数据中心发送同步请求;
[0320]步骤508、主数据中心获取对象数据;
[0321 ] 步骤509、主数据中心向备数据中心后台处理器发送包含对象数据的第二同步消息;
[0322]步骤510、备数据中心后台处理器更新各段的状态,若失败则重新发送对应段的同步请求;
[0323]步骤511、若各段数据均成功获取,备数据中心后台处理器存储对象数据到备数据中心存储引擎;
[0324]步骤512、备数据中心后台处理器修改对象元数据状态为数据已传;
[0325]步骤513、备数据中心后台处理器删除数据同步任务。
[0326]具体来说,备数据中心的后台处理器为保证数据的完整性和一致性,从本地消息队列中,获取数据同步任务,并根据数据同步任务获取相同标识的对象元数据,若对象元数据存在则执行步骤504,否则取消数据同步任务并执行步骤513删除数据同步任务,若对象元数据存在,执行步骤进一步505通过任务修改时间检查数据同步任务和对象元数据的一致性,具体过程同图2所示方法实施例二 S202中通过比较对象修改时间确定是否向主数据中心发送同步请求,具体比较过程类似不再赘述,如果对象修改时间更新说明对象已经被更新,则取消任务执行步骤513。若数据同步任务与对象元数据一致,则执行步骤505?513,具体过程与图1所示方法实施例一中S105和图2所示方法实施例二中S202?S203类似,不再赘述。
[0327]该方法具体实施例,通过备数据中心向主数据中心发起数据同步请求,并利用多段下载和断点续传技术,提高了主数据中心向备数据中心同步对象数据的效率。
[0328]图6为本发明提供的异步复制方法具体实施例四的信息交互图,该具体实施例四为图2所示方法实施例中备数据中心接收用户读请求向主数据中心发送读修复请求以获得对象数据并返回给用户的具体信息交互过程,如图6所示,该方法具体实施例包括:
[0329]步骤601、用户设备向备数据中心前端处理器发送读请求;
[0330]步骤602、备数据中心前端处理器从备数据中心存储引擎获取对象元数据;
[0331]步骤603、备数据中心存储引擎向备数据中心前端处理器返回对象元数据成功;
[0332]步骤604、备数据中心前端处理器从备数据中心存储引擎获取对象数据;
[0333]步骤605、备数据中心存储引擎向备数据中心前端处理器返回对象数据失败;
[0334]步骤606、备数据中心前端处理器根据对象元数据,向主数据中心发送读修复请求;
[0335]步骤607、主数据中心获取对象数据;
[0336]步骤608、主数据中心向备数据中心前端处理器返回对象数据;
[0337]步骤609、备数据中心前端处理器向用户设备返回对象数据;
[0338]步骤610、备数据中心前端处理器存储对象数据并标记对象元数据状态为数据已传;
[0339]步骤611、备数据中心前端处理器删除备数据中心消息队列中的数据同步任务。
[0340]具体来说,用户设备向备数据中心发送读请求,若读请求对应的对象数据还未完成同步或者已同步的对象数据损坏,则备数据中心可以向主数据中心发送读修复请求,执行步骤606?610,具体过程与图2所示方法实施例二中S203中读修复部分类似,不再赘述。需说明的是,对于未完成同步的对象数据,在备数据中心消息队列中可能存在相应的还没来得及执行的数据同步任务,因此需要执行步骤611,从备数据中心消息队列中获取相同对象标识的数据同步任务,检查数据同步任务与对象元数据的一致性,若对象修改时间相同则删除该数据同步任务。
[0341 ] 该方法具体实施例,通过备数据中心向主数据中心发起读修复请求来获得用户设备需要访问的对象数据,使得用户设备在对象数据还未完成同步的情况下,可以快速访问对象数据,同时对于本地已损坏的对象数据通过读修复请求进行修复保证本地对象数据的完整性。
[0342]图7为本发明提供的主数据中心实施例一的结构示意图,如图7所示,该主数据中心700,包括存储模块701,第一同步发送模块702和第二同步发送模块703。其中,存储模块701,用于接收用户设备发送的写请求,所述写请求中包含待写入数据;以及
[0343]生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同;
[0344]第一同步发送模块702,用于向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;
[0345]第二同步发送模块703,用于接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;以及
[0346]根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0347]进一步地,所述第一同步发送模块702,具体用于:
[0348]在向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间;
[0349]根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并;
[0350]根据所述任务创建时间和同步周期确定是否开始执行同步任务;
[0351]若开始执行同步任务,根据合并后的同步任务向所述备数据中心发送第一同步消
肩、O
[0352]进一步地,所述第一同步发送模块702,具体用于:
[0353]获取包含相同对象标识的各同步任务;[0354]比较包含相同对象标识的各同步任务的任务修改时间;
[0355]根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任务。
[0356]进一步地,所述第一同步发送模块702根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还用于:
[0357]接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识;
[0358]若所述第一同步响应为成功响应,则删除所述同步任务。
[0359]进一步地,所述第一同步发送模块702向备数据中心发送第一同步消息之前,还用于:
[0360]确定所述对象元数据是否存在;
[0361]若存在,则执行向备数据中心发送第一同步消息的步骤;
[0362]若不存在,则向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在和任务修改时间之前的对象。
[0363]进一步地,所述第二同步发送模块703所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,所述第二同步发送模块根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据之前,还用于:
[0364]所述同步请求还包含对象修改时间;
[0365]根据所述对象标识确定本地对象元数据是否存在;
[0366]若存在,判断所述对象修改时间是否相同;
[0367]若相同,则根据所述本地对象元数据读取所述对象数据;
[0368]否则,向所述备数据中心发送包含对象不存在的同步响应。
[0369]优选地,所述第二同步发送模块703,还用于:
[0370]接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间;以及
[0371]根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。
[0372]优选地,所述对象元数据在第一通道上传输,所述待写入数据在第二通道上传输。
[0373]该主数据中心实施例,可用来执行图1所示方法实施例中的技术方案以及图3?图6所示具体实施例中相应的技术方案,其实现原理和技术效果类似,不再赘述。
[0374]图8为本发明提供的备数据中心实施例一的结构示意图,如图8所示,该备数据中心800,包括第一同步接收模块801和第二同步接收模块802。其中,第一同步接收模块801,用于接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据;
[0375]第二同步接收模块802,用于向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识;以及[0376]接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
[0377]进一步地,所述第一同步接收模块801接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,所述第二同步接收模块802向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,所述第一同步接收模块801,还用于:
[0378]所述对象元数据包含所述对象标识、数据校验和、对象创建时间和对象修改时间;
[0379]根据所述对象元数据包含的对象标识确定本地对象元数据是否存在;
[0380]若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0381]若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和;
[0382]若所述数据校验和相同,则根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传;
[0383]若所述数据校验和不同,则根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;
[0384]向所述主数据中心发送第一同步响应。
[0385]进一步地,所述第一同步接收模块801,具体用于:
[0386]若所述数据校验和相同,确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧;
[0387]若是,直接向所述主数据中心返回第一同步成功响应;
[0388]否则,根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应;
[0389]若所述数据校验和不同,确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新;
[0390]若是,根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应;
[0391]否则,直接向所述主数据中心返回第一同步成功响应。
[0392]进一步地,所述第二同步接收模块802,具体用于:
[0393]根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。
[0394]进一步地,所述第二同步接收模块802,根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还用于:
[0395]根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在;
[0396]若不存在,则取消并删除所述数据同步任务;
[0397]若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务中包含的对象修改时间是否相同;[0398]若不相同,则取消并删除所述数据同步任务;
[0399]若相同,确定所述本地对象元数据的状态是否为数据未传;
[0400]若不为数据未传,则取消并删除所述数据同步任务;
[0401]若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
[0402]进一步地,所述第二同步接收模块802,具体用于:
[0403]接收所述主数据中心根据各同步请求发送的第二同步消息;
[0404]若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步;
[0405]若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求;
[0406]若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
[0407]进一步地,所述第二同步接收模块802在向所述主数据中心发送同步请求之后,接收所述主数据中心发送的第二同步消息之前,还用于:
[0408]接收所述主数据中心的同步响应;
[0409]若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
[0410]进一步地,所述第一同步接收模块801,还用于:
[0411]接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务;
[0412]根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在;
[0413]若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据的对象修改时间旧;
[0414]若否,则删除所述本地对象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应;
[0415]否则取消任务,并向所述主数据中心发送删除成功响应。
[0416]优选地,所述第二同步接收模块802,还用于:接收用户设备的读请求,所述用户读请求包含对象标识;
[0417]根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏;
[0418]若所述对象数据未传或损坏,向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据;
[0419]将所述第二同步消息包含的对象数据返回给所述用户设备;
[0420]存储所述对象数据并标记所述本地对象元数据的状态为数据已传。
[0421]优选地,所述对象元数据在第一通道上传输,所述对象数据在第二通道上传输。
[0422]该备数据中心实施例,可用来执行图2所示方法实施例中的技术方案以及图3?图6所示具体实施例中相应的技术方案,其实现原理和技术效果类似,不再赘述。
[0423]图9为本发明提供的主数据中心实施例二的结构示意图,如图9所示,该主数据中心900,包括第一处理器901和与所述第一处理器901连接的第一存储器902,其中所述第一存储器902中存储一组程序代码,第一处理器901调用所述程序代码,可用于执行如图1所示方法实施例一中的技术方案以及图3?图6所示具体实施例中相应的技术方案,其实现原理和技术效果类似,不再赘述。
[0424]图10为本发明提供的备数据中心实施例二的结构示意图,如图10所示,该备数据中心1000,包括第二处理器1001和与所述第二处理器1001连接的第二存储器1002,其中所述第二存储器1002中存储一组程序代码,第二处理器1001调用所述程序代码,可用于执行如图2所示方法实施例中的技术方案以及图3?图6所示具体实施例中相应的技术方案,其实现原理和技术效果类似,不再赘述。
[0425]图11为本发明提供的异步复制系统实施例的结构示意图,如图11所示,该异步复制系统1100,包括如图9所示的主数据中心900和如图10所示的备数据中心1000,可用于执行图1?图6所示实施例中的技术方案,其实现原理和技术效果类似,不再赘述。
[0426]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0427]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种异步复制方法,其特征在于,包括: 主数据中心接收用户设备发送的写请求,所述写请求中包含待写入数据; 所述主数据中心生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同; 所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据; 所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识; 所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
2.根据权利要求1所述的方法,其特征在于,所述主数据中心向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,还包括: 所述主数据中心生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间; 所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并; 所述主数据中心向备数据中心发送第一同步消息,包括: 所述主数据中心根据所述任务创建时间和同步周期确定是否开始执行同步任务; 若开始执行同步任务,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息。
3.根据权利要求2所述的方法,其特征在于,所述主数据中心根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并,包括: 所述主数据中心获取包含相同对象标识的各同步任务; 所述主数据中心比较包含相同对象标识的各同步任务的任务修改时间; 所述主数据中心根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任务。
4.根据权利要求2或3所述的方法,其特征在于,所述主数据中心根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还包括: 所述主数据中心接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识; 若所述第一同步响应为成功响应,则所述主数据中心删除所述同步任务。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述主数据中心向备数据中心发送第一同步消息之前,还包括: 确定所述对象元数据是否存在; 若存在,则执行所述主数据中心向备数据中心发送第一同步消息的步骤; 若不存在,则所述主数据中心向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在任务修改时间之前的对象。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述主数据中心接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,所述主数据中心根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据之前,还包括: 所述同步请求还包含对象修改时间; 所述主数据中心根据所述对象标识确定本地对象元数据是否存在; 若存在,所述主数据中心判断所述对象修改时间是否相同; 若相同,则根据所述本地对象元数据读取所述对象数据; 否则,所述主数据中心向所述备数据中心发送包含对象不存在的同步响应。
7.根据权利要求1-6任一项所述的方法,其特征在于,还包括: 所述主数据中心接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间; 所述主数据中心根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述对象元数据在第一通道上传输,所述对象数据在第二通道上传输。
9.一种异步复制方法`,其特征在于,包括: 备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据; 所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识; 所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
10.根据权利要求9所述的方法,其特征在于,备数据中心接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括: 所述对象元数据包含所述对象标识、数据校验和、对象创建时间和对象修改时间; 所述备数据中心根据所述对象元数据包含的对象标识确定本地对象元数据是否存在; 若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传; 若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和; 若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传; 若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传;所述备数据中心向所述主数据中心发送第一同步响应。
11.根据权利要求10所述的方法,其特征在于,所述若所述数据校验和相同,则所述备数据中心根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传,包括: 所述备数据中心确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧; 若是,所述备数据中心直接向所述主数据中心返回第一同步成功响应; 否则,所述备数据中心根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应; 所述若所述数据校验和不同,则所述备数据中心根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传,包括: 所述备数据中心确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新; 若是,所述备数据中心根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应; 否则,所述备数据中心直接向所述主数据中心返回第一同步成功响应。
12.根据权利要求11所述的方法,其特征在于,所述备数据中心向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识,包括: 所述 备数据中心根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。
13.根据权利要求12所述的方法,其特征在于,所述备数据中心根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还包括: 所述备数据中心根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在; 若不存在,则取消并删除所述数据同步任务; 若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务包含的对象修改时间是否相同; 若不相同,则取消并删除所述数据同步任务; 若相同,确定所述本地对象元数据的状态是否为数据未传; 若不为数据未传,则取消并删除所述数据同步任务; 若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
14.根据权利要求9-13所述的方法,其特征在于,所述备数据中心接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含所述对象数据,包括: 所述备数据中心,接收所述主数据中心根据各同步请求发送的第二同步消息; 若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步; 若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求; 若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
15.根据权利要求9-14所述的方法,其特征在于,所述备数据中心向所述主数据中心发送同步请求之后,所述备数据中心接收所述主数据中心发送的第二同步消息之前,还包括: 所述备数据中心接收所述主数据中心的同步响应; 若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
16.根据权利要求9-15任一项所述的方法,其特征在于,还包括: 所述备数据中心接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务; 所述备数据中心根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在; 若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧; 若否,则删除所述本地对 象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应; 否则取消任务,并向所述主数据中心发送删除成功响应。
17.根据权利要求9-16任一项所述方法,其特征在于,还包括: 所述备数据中心接收用户设备的读请求,所述用户读请求包含对象标识; 所述备数据中心根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏; 若所述对象数据未传或损坏,所述备数据中心向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据; 所述备数据中心,将所述第二同步消息包含的对象数据返回给所述用户设备; 所述备数据中心,存储所述第二同步消息包含的对象数据并标记所述本地对象元数据的状态为数据已传。
18.根据权利要求9-17任一项所述的方法,其特征在于, 所述对象元数据在第一通道上传输,所述对象数据在第二通道上传输。
19.一种主数据中心,其特征在于,包括: 存储模块,用于接收用户设备发送的写请求,所述写请求中包含待写入数据;以及生成与所述待写入数据对应的对象元数据和对象数据,并存储所述对象数据和所述对象元数据,所述对象元数据包含对象标识,所述对象数据与所述待写入数据相同; 第一同步发送模块,用于向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据;第二同步发送模块,用于接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识;以及 根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
20.根据权利要求19所述的主数据中心,其特征在于,所述第一同步发送模块,具体用于: 在向备数据中心发送第一同步消息,所述第一同步消息中包含所述对象元数据之前,生成与所述对象元数据对应的同步任务,所述同步任务中包含所述对象标识、任务创建时间以及任务修改时间; 根据各同步任务的任务修改时间,将包含相同对象标识的同步任务进行合并; 根据所述任务创建时间和同步周期确定是否开始执行同步任务; 若开始执行同步任务,根据合并后的同步任务向所述备数据中心发送第一同步消息。
21.根据权利要求20所述主数据中心,其特征在于,所述第一同步发送模块,具体用于: 获取包含相同对象标识的各同步任务; 比较包含相同对象标识的各同步任务的任务修改时间; 根据各同步任务中任务修改时间最新的同步任务得到合并后的同步任务,并删除其他任务修改时间较旧的同步任`务。
22.根据权利要求20或21所述的主数据中心,其特征在于,所述第一同步发送模块根据合并后的同步任务向所述备数据中心发送第一同步消息之后,还用于: 接收所述备数据中心发送的第一同步响应,所述第一同步响应包含所述对象标识; 若所述第一同步响应为成功响应,则删除所述同步任务。
23.根据权利要求19-22任一项所述的主数据中心,其特征在于,所述第一同步发送模块向备数据中心发送第一同步消息之前,还用于: 确定所述对象元数据是否存在; 若存在,则执行向备数据中心发送第一同步消息的步骤; 若不存在,则向所述备数据中心发送包含所述对象标识和任务修改时间的删除对象任务,以使所述备数据中心删除与所述对象标识相同并且在和任务修改时间之前的对象。
24.根据权利要求19-23任一项所述的主数据中心,其特征在于,所述第二同步发送模块接收所述备数据中心发送的同步请求,所述同步请求中包含所述对象标识之后,所述第二同步发送模块根据所述同步请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据之前,还用于: 所述同步请求还包含对象修改时间; 根据所述对象标识确定本地对象元数据是否存在; 若存在,判断所述对象修改时间是否相同; 若相同,则根据所述本地对象元数据读取所述对象数据; 否则,向所述备数据中心发送包含对象不存在的同步响应。
25.根据权利要求19-24任一项所述的主数据中心,其特征在于,所述第二同步发送模块,还用于:接收备数据中心发送的读修复请求,所述读修复请求中包含对象标识和对象修改时间;以及 根据所述读修复请求向所述备数据中心发送第二同步消息,所述第二同步消息中包含与所述读修复请求包含的对象标识和对象修改时间对应的所述对象数据,以使所述备数据中心将所述第二同步消息包含的对象数据返回给用户,保存所述第二同步消息包含的对象数据到备数据中心,并标记所述本地对象元数据的状态为数据已传。
26.根据权利要求19-25任一项所述主数据中心,其特征在于, 所述对象元数据在第一通道上传输,所述待写入数据在第二通道上传输。
27.一种备数据中心,其特征在于,包括: 第一同步接收模块,用于接收主数据中心发送的第一同步消息,所述第一同步消息中包含对象元数据; 第二同步接收模块,用于向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识;以及 接收所述主数据中心发送的第二同步消息,所述第二同步消息中包含与所述同步请求包含的对象标识对应的对象数据。
28.根据权利要求27所述的备数据中心,其特征在于,所述第一同步接收模块接收主数据中心发送的第一同步消息,所述第一同步消息中包含所述对象元数据之后,所述第二同步接收模块向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,所述第一同步接收模块,还用于: 所述对象元数据包含所`述对象标识、数据校验和、对象创建时间和对象修改时间; 根据所述对象元数据包含的对象标识确定本地对象元数据是否存在; 若不存在,直接存储所述对象元数据为同步后的本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传; 若存在,所述备数据中心比较所述对象元数据包含的数据校验和和所述本地对象元数据包含的数据校验和; 若所述数据校验和相同,则根据所述对象元数据包含的对象修改时间同步所述本地对象元数据,并标识同步后的本地对象元数据的状态为数据已传; 若所述数据校验和不同,则根据所述对象元数据包含的对象创建时间同步所述本地对象元数据,并标识所述同步后的本地对象元数据的状态为数据未传; 向所述主数据中心发送第一同步响应。
29.根据权利要求28所述的备数据中心,其特征在于,所述第一同步接收模块,具体用于: 若所述数据校验和相同,确定所述对象元数据包含的对象修改时间是否比所述本地对象元数据包含的对象修改时间旧; 若是,直接向所述主数据中心返回第一同步成功响应; 否则,根据所述对象元数据更新所述本地对象元数据,生成包含对象标识、对象修改时间的数据同步任务,并向所述主数据中心返回第一同步响应; 若所述数据校验和不同,确定所述对象元数据包含的对象创建时间是否比所述本地对象元数据包含的对象创建时间新;若是,根据所述对象元数据更新所述本地对象元数据,并向所述主数据中心返回第一同步响应; 否则,直接向所述主数据中心返回第一同步成功响应。
30.根据权利要求29所述的备数据中心,其特征在于,所述第二同步接收模块,具体用于: 根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识。
31.根据权利要求30所述的备数据中心,其特征在于,所述第二同步接收模块,根据所述包含对象标识、对象修改时间的数据同步任务向所述主数据中心发送同步请求,所述同步请求中包含所述对象标识之前,还用于: 根据所述数据同步任务包含的对象标识确定本地对象元数据是否存在; 若不存在,则取消并删除所述数据同步任务; 若存在,确定所述本地对象元数据的对象修改时间与所述数据同步任务中包含的对象修改时间是否相同; 若不相同,则取消并删除所述数据同步任务; 若相同,确定所述本地对象元数据的状态是否为数据未传; 若不为数据未传,则取消并删除所述数据同步任务; 若为数据未传,所述备数据中心将所述数据同步任务划分为N段数据同步任务,N为正整数;所述 备数据中心分别根据N段数据同步任务生成N个同步请求,并标记各段数据同步任务为未完成同步。
32.根据权利要求27-31所述的备数据中心,其特征在于,所述第二同步接收模块,具体用于: 接收所述主数据中心根据各同步请求发送的第二同步消息; 若第二同步消息包含所述对象数据,则存储所述对象数据,并标记对应段的数据同步任务为完成同步; 若第二同步消息不包含所述对象数据,则重新根据对应段的数据同步任务发送同步请求; 若N段数据同步任务均标记为数据已传,则结束所述数据同步任务,修改所述本地元数据的状态为数据已传,并删除所述数据同步任务。
33.根据权利要求27-32所述的备数据中心,其特征在于,所述第二同步接收模块向所述主数据中心发送同步请求之后,接收所述主数据中心发送的第二同步消息之前,还用于: 接收所述主数据中心的同步响应; 若所述同步响应为对象不存在,则取消并删除所述数据同步任务。
34.根据权利要求27-33任一项所述的备数据中心,其特征在于,所述第一同步接收模块,还用于: 接收所述主数据中心发送的包含所述对象标识和对象修改时间的删除对象任务; 根据所述删除对象任务包含的对象标识确定本地对象元数据是否存在; 若存在,比较所述删除对象任务包含的对象修改时间是否比所述本地对象元数据的对象修改时间旧; 若否,则删除所述本地对象元数据和与所述本地对象元数据对应的对象数据,并向所述主数据中心发送删除响应; 否则取消任务,并向所述主数据中心发送删除成功响应。
35.根据权利要求27-34任一项所述的备数据中心,其特征在于,所述第二同步接收模块,还用于: 接收用户设备的读请求,所述用户读请求包含对象标识; 根据所述对象标识确定对应的本地对象元数据,并根据所述本地对象元数据的状态确定对象数据是否已传和/或是否损坏; 若所述对象数据未传或损坏,向所述主数据中心发送读修复请求,所述读修复请求包含对象标识和对象修改时间,以使所述主数据中心根据所述读修复请求发送第二同步消息,所述第二同步消息包含与所述读修复请求包含的对象标识和的对象修改时间对应的对象数据; 将所述第二同步消息包含的对象数据返回给所述用户设备; 存储所述第二同步消息包含的对象数据并标记所述本地对象元数据的状态为数据已传。
36.根据权利要求27-35任一项所述的备数据中心,其特征在于, 所述对象元数据在第一通道`上传输,所述对象数据在第二通道上传输。
37.一种主数据中心,其特征在于,包括第一处理器和与所述第一处理器连接的第一存储器,其中所述第一存储器中存储一组程序代码,所述第一处理器调用所述程序代码,用于执行如权利要求1-8任一项所述的异步复制方法。
38.一种备数据中心,其特征在于,包括第二处理器和与所述第二处理器连接的第二存储器,其中所述第二存储器中存储一组程序代码,所述第二处理器调用所述程序代码,用于执行如权利要求9-18任一项所述的异步复制方法。
39.一种异步复制系统,其特征在于,包括: 权利要求37所述的主数据中心,和权利要求38所述的备数据中心。
【文档编号】H04L7/00GK103875229SQ201380003469
【公开日】2014年6月18日 申请日期:2013年12月2日 优先权日:2013年12月2日
【发明者】项锐, 张伦 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1