一种存储系统间同步数据的方法、装置及同步系统转让专利

申请号 : CN201510727860.X

文献号 : CN105262831B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李雄锋谭建南

申请人 : 北京奇艺世纪科技有限公司

摘要 :

一种存储系统间同步数据的方法、装置及同步系统,每个存储系统连接一个与其类型相对应的同步代理服务器,该方法包括:源存储系统根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中;每个同步代理服务器定时从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;每个目标存储系统根据同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。应用本发明实施例,能够实现大粒度数据实时可靠地同步到相同或不同类型的存储系统中。

权利要求 :

1.一种存储系统间同步数据的方法,其特征在于,每个存储系统连接一个与其类型相对应的同步代理服务器;所述方法包括步骤:源存储系统获得发生变化的数据的字段和内容;确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中,并对该待同步数据进行有效性和一致性校验;

所述预写入日志队列中存储有每个存储系统发送的待同步数据;所述每条待同步数据中包含该条待同步数据的同步代理服务器标识信息、数据标识信息及该条待同步数据发生变化的字段和内容;

每个同步代理服务器定时从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据;将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;

每个目标存储系统根据所述同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。

2.根据权利要求1所述的方法,其特征在于:所述待同步数据还包含分别与各个同步代理服务器对应的多个同步状态标识信息;

所述预写入日志队列收到每条待同步数据时,将该条待同步数据的所有同步状态标识信息设置为待同步;

在所述同步代理服务器连接的所述目标存储系统将所述待同步数据同步成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为同步成功;

在所述同步代理服务器连接的所述目标存储系统将所述待同步数据同步未成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为重试;

所述每个同步代理服务器定时从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,为所述每个同步代理服务器定时从所述预写入日志队列中获取与本同步代理服务器对应的同步状态标识信息为待同步和重试的所述待同步数据。

3.根据权利要求2所述的方法,其特征在于:所述待同步数据还包含分别与各个同步代理服务器对应的多个顺序状态信息;

所述每个同步代理服务器定时从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,为:所述每个同步代理服务器定时获取所述待同步数据的顺序状态信息,确定同步代理服务器的执行顺序;根据所述执行顺序,从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据。

4.根据权利要求2或3所述的方法,其特征在于,该方法还包括:

记录重试次数,若重试次数达到预设值,则与该同步代理服务器对应的同步状态标识信息设置为同步失败。

5.根据权利要求4所述的方法,其特征在于,该方法还包括:

预先设置的记录清理代理服务器定时读取所述预写入队列中保存的待同步数据,将同步状态标识信息都为同步成功和/或同步失败的所有待同步数据删除。

6.一种存储系统间同步数据的装置,其特征在于,每个存储系统连接一个与其类型相对应的同步代理服务器;所述装置包括:待同步数据生成模块,设置于源存储系统中,用于获得发生变化的数据的字段和内容;

确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中,并对该待同步数据进行有效性和一致性校验;所述预写入日志队列中存储有每个存储系统发送的待同步数据;所述每条待同步数据中包含该条待同步数据的同步代理服务器标识信息、数据标识信息及该条待同步数据发生变化的字段和内容;

待同步数据获得模块,设置于每个同步代理服务器中,用于定时从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据;将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;

数据同步模块,设置于每个目标存储系统中,用于根据所述同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。

7.根据权利要求6所述的装置,其特征在于,所述待同步数据生成模块包括:获得子模块、确定子模块和待同步数据生成子模块;

所述获得子模块,用于获得发生变化的数据的字段和内容;

所述确定子模块,用于确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;

所述待同步数据生成子模块,用于根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中;所述预设的预写入日志队列设置在预写入日志队列服务器中;

所述待同步数据还包含分别与各个同步代理服务器对应的多个同步状态标识信息;

所述预写入日志队列包括:第一设置子模块、第二设置子模块和第三设置子模块;

所述第一设置子模块,用于所述预写入日志队列收到每条待同步数据时,将该条待同步数据的所有同步状态标识信息设置为待同步;

所述第二设置子模块,用于在所述同步代理服务器连接的所述目标存储系统将所述待同步数据同步成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为同步成功;

所述第三设置子模块,用于在所述同步代理服务器连接的所述目标存储系统将所述待同步数据同步未成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为重试;

所述待同步数据获得模块,包括:待同步数据获得子模块和待同步数据发送子模块;

所述待同步数据获得子模块,用于所述每个同步代理服务器定时从所述预写入日志队列中获取与本同步代理服务器对应的同步状态标识信息为待同步和重试的所述待同步数据;

所述待同步数据发送子模块,用于将获得的待同步数据发送至本同步代理服务器连接的目标存储系统。

8.根据权利要求7所述的装置,其特征在于:所述待同步数据还包含分别与各个同步代理服务器对应的多个顺序状态信息;

所述待同步数据获得子模块,具体用于定时获取所述待同步数据的顺序状态信息,确定同步代理服务器执行顺序;根据所述执行顺序,从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据。

9.根据权利要求7或8所述的装置,其特征在于,所述预写入日志队列还包括:重试次数记录子模块,用于记录重试次数,若重试次数达到预设值,则与该同步代理服务器对应的同步状态标识信息设置为同步失败。

10.根据权利要求9所述的装置,其特征在于,该装置还包括:记录清理模块,设置于记录清理代理服务器中,用于定时读取所述预写入队列中保存的待同步数据,将同步状态标识信息都为同步成功和/或同步失败的所有待同步数据删除。

11.一种存储系统间同步数据的同步系统,其特征在于,所述同步系统包含预写入日志队列服务器以及多个同步代理服务器;

每个存储系统连接一个与其类型相对应的同步代理服务器;

源存储系统获得发生变化的数据的字段和内容;确定一个或多个进行数据同步的目标存储系统,获得每个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预写入日志队列服务器中,并对该待同步数据进行有效性和一致性校验;

所述预写入日志队列服务器中存储有每个存储系统发送的待同步数据;所述每条待同步数据中包含该条待同步数据的同步代理服务器标识信息、数据标识信息及该条待同步数据发生变化的字段和内容;

每个同步代理服务器定时从所述预写入日志队列中获取具有本同步代理服务器标识的待同步数据;将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;

每个目标存储系统根据所述同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。

12.根据权权利要求11所述的同步系统,其特征在于,该同步系统还包括:记录清理代理服务器,与所述预写入日志队列服务器相连;所述记录清理代理服务器,用于将预写入日志队列服务器中已经同步至所有目标存储系统的待同步数据删除。

说明书 :

一种存储系统间同步数据的方法、装置及同步系统

技术领域

[0001] 本发明涉及同步数据领域,特别涉及一种存储系统间同步数据的方法、装置及同步系统。

背景技术

[0002] 多存储系统的基本特征为由一个或多个数据写入端输入数据到存储系统中,必要时需要对数据进行预处理,然后数据被分发并保存到多个存储系统中。这些存储系统可以分布在多个地区,通过互联网或者内部专线来通讯。数据消费者可以选择合适的存储系统去读取数据。
[0003] 目前,存储系统间同步数据的方式存在两种情况:
[0004] 第一种,同类型存储系统间数据的同步。同类型存储系统间数据的同步可以通过存储系统提供的跨系统数据同步功能完成。然而,目前的数据同步多存在于异构系统间,同类型存储系统间数据的同步应用范围狭窄。
[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] 图1为本发明实施例提供的一种存储系统间同步数据的方法的流程示意图;
[0054] 图2为本发明实施例提供的一种存储系统间同步数据的装置的结构示意图;
[0055] 图3为本发明实施例提供的一种存储系统间同步数据的同步系统的结构示意图。

具体实施方式

[0056] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057] 一种存储系统间同步数据的方法、装置及同步系统,每个存储系统连接一个与其类型相对应的同步代理服务器,该方案中,源存储系统根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中;每个同步代理服务器定时从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;每个目标存储系统根据同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。
[0058] 下面通过具体实施例,对本发明进行详细说明。
[0059] 参考图1,图1为本发明实施例提供的一种存储系统间同步数据的方法的流程示意图,该方法可以包括如下步骤:
[0060] S101:源存储系统获得发生变化的数据的字段和内容;
[0061] 与现有技术不同,本发明实施例仅需要获得发生变化的数据的字段和内容。假设:一条数据信息为:“姓名:小明,年龄:12,生日:12月10,班级:1班”,若该条数据的年龄变为
13,则只需要获得“年龄”字段和该字段的内容“13”。
[0062] S102:源存储系统确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;
[0063] S103:源存储系统根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中;
[0064] 其中,预写入日志队列可以持久化保存在一个独立的存储系统服务器中。如果该服务器发生故障,可以在该服务器重新启动时,先加载己存储的待同步数据,并优先处理。
[0065] S104:每个同步代理服务器定时从所述预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据;
[0066] 实际应用中,待同步数据还可以包含分别与各个同步代理服务器对应的多个同步状态标识信息。
[0067] 其中,预写入日志队列收到每条待同步数据时,将该条待同步数据的所有同步状态标识信息设置为待同步。
[0068] 在同步代理服务器连接的目标存储系统将待同步数据同步成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为同步成功。
[0069] 在同步代理服务器连接的目标存储系统将待同步数据同步未成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为重试。
[0070] 此时,每个同步代理服务器定时从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,可以为每个同步代理服务器定时从预写入日志队列中获取与本同步代理服务器对应的同步状态标识信息为待同步和重试的待同步数据。
[0071] 另外,在生成待同步数据发送至预设的预写入日志队列中时,可以对待同步数据进行有效性和一致性校验,删除无效和一致性差的数据,避免无效和有问题的数据进入预写入日志队列中。其中,数据有效性和一致性校验可以采用现有技术常用的校验方式进行校验,这里不再赘述。
[0072] 实际应用中,一些待同步数据必须先同步到某些目标存储系统后,才能同步到其他目标存储系统,此时,待同步数据还可以包含分别与各个同步代理服务器对应的多个顺序状态信息。
[0073] 这种情况下,每个同步代理服务器定时从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据,可以为:
[0074] 每个同步代理服务器定时获取待同步数据的顺序状态信息,确定同步代理服务器的执行顺序;根据执行顺序,从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据。
[0075] 这样可以协调同步代理服务器的执行顺序,在存在必须先同步到某些目标存储系统后才能同步到其他目标存储系统的待同步数据时,可以施行串行同步,在没有执行顺序的要求时,可以将顺序状态信息设置为相同的状态,以施行并行同步,提升同步的速度。
[0076] 实际应用中,待同步数据还可以包含更新时间,每个同步代理服务器可以按照更新时间的先后确定待同步数据的同步顺序,根据待同步数据的同步顺序从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据。
[0077] S105:每个同步代理服务器将获得的待同步数据发送至本同步代理服务器连接的目标存储系统;
[0078] 现有技术中,在存储网络系统不稳定导致的存储系统宕机或维护需要需暂停存储网络系统的场景中,都会导致某存储系统从存储网络中断开和重新加入,这样会严重影响其他存储系统的数据同步。在本发明实施例中,每个同步代理服务器都可以独立运行,这样就可以使某个存储系统的变更影响不到其它存储系统的数据同步。
[0079] S106:每个目标存储系统根据所述同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。
[0080] 实际应用中,该方法还可以包括:
[0081] 记录重试次数,若重试次数达到预设值,则与该同步代理服务器对应的同步状态标识信息设置为同步失败。
[0082] 此时,预写入日志队列可以根据重试次数对待同步数据进行排序,重试次数越多的待同步数据的位置越靠后,这样同步代理服务器在将获得的待同步数据发送至本同步代理服务器连接的目标存储系统时,可以先同步重试次数的少的待同步数据,避免有问题的同步数据影响正常的数据处理。
[0083] 另外,在某些情况下,存储系统的工作压力过大,也会出现待同步数据同步失败的现象,此时,如果频繁重试,会使存储系统崩溃。为了避免这种状况的出现,令每次重试之间的时间间隔不断增多,例如,1秒后重试,如果失败,1*2秒后再次重试,如果还失败,则2*2秒后再次重试,以此类推,可以有效减少无意义的重试。
[0084] 这种情况下,该方法还可以包括:
[0085] 预先设置的记录清理代理服务器定时读取所述预写入队列中保存的待同步数据,将同步状态标识信息都为同步成功和/或同步失败的所有待同步数据删除。
[0086] 这样,如果一条待同步数据的所有同步状态标识信息都为同步成功和/或同步失败,则将这条待同步数据删除,以确保预写入队列服务器不会由于待同步数据记录积压导致存储空间被耗光。
[0087] 应用图1所示实施例,预写入日志队列服务器以及多个同步代理服务器,每个存储系统连接一个与其类型相对应的同步代理服务器,源存储系统将发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息发送给预写入日志队列中,同步代理服务器只需更新同步发生变化的字段的内容,而无需将发送变化的整条数据进行全量更新,这样能够实现大粒度数据实时可靠地同步到相同或不同类型的存储系统中的。
[0088] 参考图2,图2为本发明实施例提供的一种存储系统间同步数据的装置的结构示意图,每个存储系统连接一个与其类型相对应的同步代理服务器,该装置可以包括:待同步数据生成模块200、预写入日志队列210、待同步数据获得模块220和数据同步模块230。
[0089] 其中,待同步数据生成模块200,设置于源存储系统中,用于获得发生变化的数据的字段和内容;确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息;根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中。
[0090] 这里,预写入日志队列210中存储有每个存储系统发送的待同步数据,其中,每条待同步数据中包含该条待同步数据的同步代理服务器标识信息、数据标识信息及该条待同步数据发生变化的字段和内容。
[0091] 待同步数据获得模块220,设置于每个同步代理服务器中,用于定时从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据;将获得的待同步数据发送至本同步代理服务器连接的目标存储系统。
[0092] 数据同步模块230,设置于每个目标存储系统中,用于根据同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。
[0093] 实际应用中,待同步数据生成模块200可以包括:获得子模块201、确定子模块202和待同步数据生成子模块203。
[0094] 其中,获得子模块201,用于获得发生变化的数据的字段和内容。
[0095] 确定子模块202,用于确定一个或多个进行数据同步的目标存储系统,获得各个目标存储系统连接的各个同步代理服务器的同步代理服务器标识信息。
[0096] 待同步数据生成子模块203,用于根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预设的预写入日志队列中;预设的预写入日志队列设置在预写入日志队列服务器中。
[0097] 实际应用中,待同步数据还可以包含分别与各个同步代理服务器对应的多个同步状态标识信息。
[0098] 这种情况下,预写入日志队列210可以包括:第一设置子模块、第二设置子模块和第三设置子模块。(图2中未示出)
[0099] 其中,第一设置子模块,用于预写入日志队列收到每条待同步数据时,将该条待同步数据的所有同步状态标识信息设置为待同步。
[0100] 第二设置子模块,用于在同步代理服务器连接的目标存储系统将待同步数据同步成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为同步成功。
[0101] 第三设置子模块,用于在同步代理服务器连接的目标存储系统将待同步数据同步未成功时,将该条待同步数据的与该同步代理服务器对应的同步状态标识信息设置为重试。
[0102] 另外,待同步数据获得模块220,可以包括:待同步数据获得子模块221和待同步数据发送子模块222。
[0103] 其中,待同步数据获得子模块221,用于每个同步代理服务器定时从预写入日志队列中获取与本同步代理服务器对应的同步状态标识信息为待同步和重试的待同步数据。
[0104] 待同步数据发送子模块222,用于将获得的待同步数据发送至本同步代理服务器连接的目标存储系统。
[0105] 实际应用中,待同步数据还可以包含分别与各个同步代理服务器对应的多个顺序状态信息。
[0106] 这种情况下,待同步数据获得子模块221,具体用于定时每个同步代理服务器获取待同步数据的顺序状态信息,确定同步代理服务器的执行顺序;根据执行顺序,从预写入日志队列中获取具有本同步代理服务器标识信息的待同步数据。
[0107] 另外,预写入日志队列210还可以包括:重试次数记录子模块。(图2中未示出)[0108] 其中,重试次数记录子模块,用于记录重试次数,若重试次数达到预设值,则与该同步代理服务器对应的同步状态标识信息设置为同步失败。
[0109] 实际应用中,该装置还可以包括:记录清理模块。(图2中未示出)
[0110] 其中,记录清理模块,设置于记录清理代理服务器中,用于定时读取预写入队列中保存的待同步数据,将同步状态标识信息都为同步成功和/或同步失败的所有待同步数据删除。
[0111] 应用图2所示实施例,预写入日志队列服务器以及多个同步代理服务器,每个存储系统连接一个与其类型相对应的同步代理服务器,源存储系统将发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息发送给预写入日志队列中,同步代理服务器只需更新同步发生变化的字段的内容,而无需将发送变化的整条数据进行全量更新,这样能够实现大粒度数据实时可靠地同步到相同或不同类型的存储系统中的。
[0112] 参考图3,图3为本发明实施例提供的一种存储系统间同步数据的同步系统的结构示意图,该同步系统可以包含预写入日志队列服务器310以及多个同步代理服务器320。
[0113] 其中,每个存储系统330连接一个与其类型相对应的同步代理服务器320。
[0114] 源存储系统300获得发生变化的数据的字段和内容;确定一个或多个进行数据同步的目标存储系统,获得每个目标存储系统连接的各个同步代理服务器320的同步代理服务器标识信息;根据发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息,生成待同步数据发送至预写入日志队列服务器310中。
[0115] 预写入日志队列服务器310中存储有每个存储系统发送的待同步数据;每条待同步数据中包含该条待同步数据的同步代理服务器标识信息、数据标识信息及该条待同步数据发生变化的字段和内容。
[0116] 每个同步代理服务器320定时从预写入日志队列服务器310中获取具有本同步代理服务器320标识的待同步数据;将获得的待同步数据发送至本同步代理服务器320连接的目标存储系统330。
[0117] 每个目标存储系统330根据同步数据的数据标识信息及该待同步数据发生变化的字段和内容进行数据同步。
[0118] 实际应用中,该同步系统还可以包括:记录清理代理服务器。(图3中未示出)[0119] 其中,记录清理代理服务器,与预写入日志队列服务器310相连;用于将预写入日志队列服务器310中已经同步至所有目标存储系统的待同步数据删除。
[0120] 需要说明的是,图3中所述的源存储系统300和目标存储系统330,是为了清楚描述同步的过程而命名的,实际应用中,每个存储系统都可能是源存储系统300,也都可能是目标存储系统330。
[0121] 应用图3所示实施例,预写入日志队列服务器以及多个同步代理服务器,每个存储系统连接一个与其类型相对应的同步代理服务器,源存储系统将发生变化的数据的字段和内容、同步代理服务器标识信息和数据标识信息发送给预写入日志队列中,同步代理服务器只需更新同步发生变化的字段的内容,而无需将发送变化的整条数据进行全量更新,这样能够实现大粒度数据实时可靠地同步到相同或不同类型的存储系统中的。
[0122] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0123] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0124] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。