一种数据同步方法、设备及系统转让专利

申请号 : CN201610451188.0

文献号 : CN106209974B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张建伟

申请人 : 浪潮电子信息产业股份有限公司

摘要 :

本发明提供了一种数据同步方法、设备及系统,方法包括:针对不同类型的服务分别配置相应的采样周期;在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据;将所述所需传输的数据划分为至少一个数据块;确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块。根据本方案,可以减少传输过程中的数据量,进而可以降低网络带宽的占用量。

权利要求 :

1.一种数据同步方法,其特征在于,应用于物理机,针对不同类型的服务分别配置相应的采样周期;所述方法包括:在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据;

将所述所需传输的数据划分为至少一个数据块;

确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;

将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块;

在将所述所需传输的数据划分为至少一个数据块之前,进一步包括:利用第一公式计算划分长度;

所述第一公式包括:

其中,k(si)用于表征Si对应的划分长度;Si用于表征平台提供的第i个服务;period(si)用于表征对Si配置的采样周期;status(si)用于表征Si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;

将所述所需传输的数据划分为至少一个数据块,包括:利用所述划分长度,将所需传输的数据划分为所述至少一个数据块;

在将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心之后,进一步包括:将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储;

所述确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,包括:确定本地存储的各个数据块中每一个数据块对应的第一校验码;

计算所述至少一个数据块中每一个数据块对应的第二校验码;

根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。

2.根据权利要求1所述的方法,其特征在于,所述计算所述至少一个数据块中每一个数据块对应的第二校验码,包括:利用第二公式、第三公式和第四公式计算所述至少一个数据块中每一个数据块对应的第二校验码;

所述第二公式包括:

所述第三公式包括:

所述第四公式包括:

Adler32(1,k)=A(1,k)+216B(1,k);

其中,Adler32(1,k)用于表征第二校验码;A(1,k)用于表征第一中间参数,B(1,k)用于表征第二中间参数;data[j]用于表征当前数据块中的第j个字节对应的数据;M用于表征已知常数;k用于表征该当前数据块包括的字节数。

3.一种数据同步方法,其特征在于,应用于数据中心,包括:获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前物理机已经传输过的数据块;

根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块;

存储所述第一数据块和所述第二数据块。

4.根据权利要求3所述的方法,其特征在于,进一步包括:对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。

5.一种物理机,其特征在于,包括:

配置单元,用于针对不同类型的服务分别配置相应的采样周期;

采集单元,用于在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据;

划分单元,用于将所述所需传输的数据划分为至少一个数据块;

确定单元,用于确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;

发送单元,用于将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块;

进一步包括:计算单元,用于利用第一公式计算划分长度;

所述第一公式包括:

其中,k(si)用于表征Si对应的划分长度;Si用于表征平台提供的第i个服务;period(si)用于表征对Si配置的采样周期;status(si)用于表征Si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;

所述划分单元,具体用于利用所述划分长度,将所需传输的数据划分为所述至少一个数据块;

进一步包括:存储单元,用于将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储;

所述确定单元,包括:

确定模块,用于确定本地存储的各个数据块中每一个数据块对应的第一校验码;

计算模块,用于计算所述至少一个数据块中每一个数据块对应的第二校验码;

遍历模块,用于根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。

6.一种数据中心,其特征在于,包括:

获取单元,用于获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前物理机已经传输过的数据块;

确定单元,用于根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块;

存储单元,用于存储所述第一数据块和所述第二数据块。

7.根据权利要求6所述的数据中心,其特征在于,进一步包括:复制单元,用于对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。

8.一种数据同步系统,其特征在于,包括:上述权利要求6或7所述的数据中心、和至少一个上述权利要求5所述的物理机。

说明书 :

一种数据同步方法、设备及系统

技术领域

[0001] 本发明涉及云计算技术领域,特别涉及一种数据同步方法、设备及系统。

背景技术

[0002] 云计算技术利用了虚拟化技术将计算、存储、网络等资源进行池化,通过互联网将共享的软硬件以服务的方式提供给用户。其中,PAAS(Platform as a Service,平台即服务)平台作为云计算的一种服务类型,将软件部署、运维作为一种服务按需提供给软件开发用户,成为近年来非常热门的研究方向。
[0003] 在PAAS平台中,为了实现系统服务以及各类订制化服务,需要对各个物理机上产生的数据进行同步存储。在对各个物理机上产生的数据进行实时同步时,物理机通过采集到自身产生的数据,将该数据通过网络资源发送给数据中心,由数据中心将该数据存储到实时数据库中。
[0004] 网络资源对于PAAS平台来说异常珍贵,且现有技术中各个物理机上会产生大量的数据,导致网络带宽的占用量较大。

发明内容

[0005] 本发明实施例提供了一种数据同步方法、设备及系统,以降低网络带宽的占用量。
[0006] 第一方面,本发明实施例提供了一种数据同步方法,应用于物理机,针对不同类型的服务分别配置相应的采样周期;所述方法包括:
[0007] 在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传 输的数据;
[0008] 将所述所需传输的数据划分为至少一个数据块;
[0009] 确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;
[0010] 将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块。
[0011] 优选地,
[0012] 在将所述所需传输的数据划分为至少一个数据块之前,进一步包括:利用第一公式计算划分长度;
[0013] 所述第一公式包括:
[0014]
[0015] 其中,k(Si)用于表征Si对应的划分长度;Si用于表征平台提供的第i个服务;period(si)用于表征对Si配置的采样周期;status(si)用于表征si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;
[0016] 将所述所需传输的数据划分为至少一个数据块,包括:利用所述划分长度,将所需传输的数据划分为所述至少一个数据块;
[0017] 和/或,
[0018] 在将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心之后,进一步包括:将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储;
[0019] 和/或,
[0020] 所述确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过 的第二数据块,包括:
[0021] 确定本地存储的各个数据块中每一个数据块对应的第一校验码;
[0022] 计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0023] 根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。
[0024] 优选地,所述计算所述至少一个数据块中每一个数据块对应的第二校验码,包括:
[0025] 利用第二公式、第三公式和第四公式计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0026] 所述第二公式包括:
[0027]
[0028] 所述第三公式包括:
[0029]
[0030] 所述第四公式包括:
[0031] Adler32(1,k)=A(1,k)+216B(1,k);
[0032] 其中,Adler32(1,k)用于表征第二校验码;A(1,k)用于表征第一中间参数,B(1,k)用于表征第二中间参数;data[j]用于表征当前数据块中的第j个字节对应的数据;M用于表征已知常数;k用于表征该当前数据块包括的字节数。
[0033] 第二方面,本发明实施例还提供了一种数据同步方法,应用于数据中心,包括:
[0034] 获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前 物理机已经传输过的数据块;
[0035] 根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块;
[0036] 存储所述第一数据块和所述第二数据块。
[0037] 优选地,进一步包括:对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:
[0038]
[0039] 其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。
[0040] 第三方面,本发明实施例还提供了一种物理机,包括:
[0041] 配置单元,用于针对不同类型的服务分别配置相应的采样周期;
[0042] 采集单元,用于在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据;
[0043] 划分单元,用于将所述所需传输的数据划分为至少一个数据块;
[0044] 确定单元,用于确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;
[0045] 发送单元,用于将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块。
[0046] 优选地,
[0047] 进一步包括:计算单元,用于利用第一公式计算划分长度;
[0048] 所述第一公式包括:
[0049]
[0050] 其中,k(si)用于表征si对应的划分长度;si用于表征平台提供的第i个服务;period(si)用于表征对si配置的采样周期;status(si)用于表征si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;
[0051] 所述划分单元,具体用于利用所述划分长度,将所需传输的数据划分为所述至少一个数据块;
[0052] 和/或,
[0053] 进一步包括:存储单元,用于将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储;
[0054] 和/或,
[0055] 所述确定单元,包括:
[0056] 确定模块,用于确定本地存储的各个数据块中每一个数据块对应的第一校验码;
[0057] 计算模块,用于计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0058] 遍历模块,用于根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。
[0059] 第四方面,本发明实施例还提供了一种数据中心,包括:
[0060] 获取单元,用于获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前物理机已经传输过的数据块;
[0061] 确定单元,用于根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块;
[0062] 存储单元,用于存储所述第一数据块和所述第二数据块。
[0063] 优选地,进一步包括:复制单元,用于对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:
[0064]
[0065] 其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。
[0066] 第五方面,本发明实施例还提供了一种数据同步系统,包括:上述所述的数据中心、和至少一个上述所述的物理机。
[0067] 本发明实施例提供了一种数据同步方法、设备及系统,在对采集的所需传输的数据进行传输时,通过对所需传输的数据划分为至少一个数据块,将该至少一个数据块中未曾传输过的第一数据块及其第一数据索引、已经传输过的第二数据块对应的第二数据索引,传输给数据中心即可,无需传输第二数据块,从而可以减少传输过程中的数据量,进而可以降低网络带宽的占用量。

附图说明

[0068] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0069] 图1是本发明一个实施例提供的一种方法流程图;
[0070] 图2是本发明一个实施例提供的另一种方法流程图;
[0071] 图3是本发明一个实施例提供的又一种方法流程图;
[0072] 图4是本发明一个实施例提供的物理机结构示意图;
[0073] 图5是本发明一个实施例提供的数据中心结构示意图;
[0074] 图6是本发明一个实施例提供的数据同步系统结构示意图。

具体实施方式

[0075] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0076] 如图1所示,本发明实施例提供了一种数据同步方法,应用于物理机,针对不同类型的服务分别配置相应的采样周期;该方法可以包括以下步骤:
[0077] 步骤101:在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据。
[0078] 在每一个物理机上每隔一段时间可能会产生一些新数据,每当这些产生新数据之后,需要对这些数据进行存储。其中,有些数据对实时性有要求,有些数据对实时性没有要求,因此,需要对数据的实时性进行判断。
[0079] 在本实施例中,可以对不同类型的服务分别配置采样周期,以针对不同类型的服务进行数据采集和传输,从而实现对服务的分类存储。
[0080] 步骤102:将所述所需传输的数据划分为至少一个数据块。
[0081] 为了降低网络带宽的占用量,需要所需传输的数据划分为至少一个数据块。例如,所需传输的数据为1M,可以将该所需传输的数据划分为10个数据块。
[0082] 步骤103:确定所述至少一个数据块中未曾传输过的第一数据块、已经 传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引。
[0083] 在本实施例中,可以将已经传输给数据中心的数据块存储在物理机中。并通过物理机本地存储的已经传输过的各个数据块来确定,该至少一个数据块中哪些已经传输过,哪些未曾传输过。
[0084] 步骤104:将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块。
[0085] 为了降低网络带宽的占用量,可以只传输未曾传输过的第一数据块,而对于已经传输过的第二数据块可以不用传输,只需将第二数据块对应的第二数据索引传输给数据中心即可,从而可以保证网络占用量相对于现有技术减少了第二数据块的网络占用量。
[0086] 根据上述实施例方案,在对采集的所需传输的数据进行传输时,通过对所需传输的数据划分为至少一个数据块,将该至少一个数据块中未曾传输过的第一数据块及其第一数据索引、已经传输过的第二数据块对应的第二数据索引,传输给数据中心即可,无需传输第二数据块,从而可以减少传输过程中的数据量,进而可以降低网络带宽的占用量。
[0087] 在本发明一个实施例中,可以通过如下方式实现对所需传输的数据的划分:进一步包括:利用第一公式计算划分长度;
[0088] 所述第一公式包括:
[0089]
[0090] 其中,k(si)用于表征si对应的划分长度;si用于表征平台提供的第i个服务;period(si)用于表征对si配置的采样周期;status(si)用于表征si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;其中,在该服务的类型确定的情况下,status(si)为已知的参数。其中,该defatult_size的设置是为了保证最终确定的划分长度最小为该默认长度。
[0091] 其中,该划分长度可以字节数,例如,10个字节;也可以是具体的空间占用量,例如,100KB。
[0092] 将所述所需传输的数据划分为至少一个数据块,包括:利用所述划分长度,将所需传输的数据划分为所述至少一个数据块。
[0093] 例如,k(si)为10个字节,所需传输的数据为100个字节,那么可以将该所需传输的数据划分为10个数据块,每一个数据块10个字节。
[0094] 再如,k(si)为10个字节,所需传输的数据为99个字节,那么可以将该所需传输的数据划分为10个数据块,前9个数据块中每一个数据块10个字节,最后1个数据块为9个字节。
[0095] 在本发明一个实施例中,在该第一数据块、所述第一数据索引和所述第二数据索引发送给数据中心之后,为了保证下一次进行数据块传输时,可以减少传输的数据块数量,可以在将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心之后,进一步包括:将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储。
[0096] 在本发明一个实施例中,可以通过如下方式确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,包括:
[0097] 确定本地存储的各个数据块中每一个数据块对应的第一校验码;
[0098] 计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0099] 根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。
[0100] 其中,本地存储的各个数据块中每一个数据块对应的第一校验码的计算方式,与该至少一个数据块中每一个数据块对应的第二校验码的计算方式相同。
[0101] 例如,该至少一个数据块包括10个数据块,分别为:数据块1、数据块2、数据块3、……、数据块10,每一个数据块对应的第二校验码分别为: A1、A2、A3、……、A10。假设在本地存储的第一校验码中包括A1、A2和A3的校验码,那么可以确定数据块1、数据块2和数据块3为已经传输过的数据块,数据块4、数据块5、数据块6、……数据块10为未曾传输过的数据块。
[0102] 在本发明一个实施例中,可以通过如下方式计算该至少一个数据块中每一个数据块对应的第二校验码,该技术方式可以包括:
[0103] 利用第二公式、第三公式和第四公式计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0104] 所述第二公式包括:
[0105]
[0106] 所述第三公式包括:
[0107]
[0108] 所述第四公式包括:
[0109] Adler32(1,k)=A(1,k)+216B(1,k);
[0110] 其中,Adler32(1,k)用于表征第二校验码;A(1,k)用于表征第一中间参数,B(1,k)用于表征第二中间参数;data[j]用于表征当前数据块中的第j个字节对应的数据;M用于表征已知常数;k用于表征该当前数据块包括的字节数。
[0111] 在根据上述计算方式计算得到的第二校验码,若根据上述计算方式计算得到的第二校验码,与本地存储的第一校验码均不相同,则表明该不相同的第二校验码对应的第二数据块一定未曾传输过;若与本地存储的第一校验码相同,则表明该相同的第二校验码对应的第二数据块可能已经传输过,还需要利用唯一校验值,例如,MD5值,进行进一步校验,若利用MD5值进一步校验结果相同,则表明该第二校验码对应的第二数据块已经传输过,否则,未曾传输过。
[0112] 在本发明一个实施例中,也可以直接通过唯一校验值的方式计算第二校验码,以确定出第一数据块和第二数据块。
[0113] 请参考图2,本发明实施例还提供了一种数据同步方法,应用于数据中心,包括:
[0114] 步骤201:获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前物理机已经传输过的数据块。
[0115] 步骤202:根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块。
[0116] 数据中心本地存储有各个数据块的数据副本,其中,数据副本是一种提高数据访问效率、系统容错能力、负载均衡能力的通用技术。数据副本中不仅包括各个第三数据块,还包括每一个第三数据块对应的第三数据索引,通过在第三数据索引中查找与第二数据索引相同的数据索引,并利用该相同的数据索引确定相应的数据块,该确定出的数据块即为已经传输过的第二数据块。
[0117] 步骤203:存储所述第一数据块和所述第二数据块。
[0118] 在本实施例中,还可以设置服务Si对应的数据量的阈值,例如,该阈值为100,在该服务包括的数据块个数达到100个时,将该服务对应的数据块存储到云存储中。
[0119] 进一步地,数据中心通过判断数据对实时性的需求,将需要实时性的数据存储到实时数据库中,将不需要实时性的数据存储到普通的数据库中。
[0120] 在本发明一个实施例中,由于数据副本的个数的不合理,可能会造成平台的存储压力,浪费大量的存储空间,因此,可以通过如下方式确定数据副本的个数,进一步包括:对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:
[0121]
[0122] 其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。
[0123] 下面以提供服务的平台为PAAS平台为例,该PAAS平台包括至少一台物理机和数据中心,通过其中一台物理机和数据中心之间进行交互,以对实现的数据同步过程进行详细说明,请参考图3,该方法可以包括以下步骤:
[0124] 步骤301:物理机针对不同类型的服务分别配置相应的采样周期。
[0125] 在每一个物理机上每隔一段时间可能会产生一些新数据,每当这些产生新数据之后,需要对这些数据进行存储。
[0126] 假设包括4种服务类型,对这四种服务类型进行如下表1所示的配置:
[0127] 表1:
[0128]服务类型 采样周期/时间(s)
类型1 60
类型2 180
类型3 300
类型4 90
[0129] 在本实施例中,可以分别利用不同的采集单元,分别针对上述四个类型的服务进行数据采集,每一个采集单元,根据上述表1中配置的采样周期,每当到达相应的采样周期时,执行对该相应类型服务数据的采集。
[0130] 在本实施例中,用户还需要向数据中心的Agent注册监控信息,如监控指标、监控对象、监控方式等。
[0131] 为了提供较好的扩展性,物理机中的Agent提供了两种扩展的方式:第 一种是通过脚本调用的方式,由用户传送监控脚本到Agent,由Agent调用脚本运行监控模块,采集服务状态信息。第二种方式是通过调用Agent的API,对其进行扩展同样可以达到获取服务状态信息的目的。
[0132] 步骤302:在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据。
[0133] 在本实施例中,物理机中可以包括多台虚拟机,每一台虚拟机上可以配置有Agent代理,该Agent代理可以实现对数据的采集和处理。
[0134] 步骤303:根据服务类型计算划分长度。
[0135] 在本实施例中,可以通过如下公式(1)计算划分长度:
[0136]
[0137] 其中,k(si)用于表征si对应的划分长度;si用于表征平台提供的第i个服务;period(si)用于表征对si配置的采样周期;status(si)用于表征si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度。
[0138] 其中,在该服务的类型确定的情况下,status(si)为已知的参数。
[0139] 其中,该defatult_size的设置是为了保证最终确定的划分长度最小为该默认长度。例如,该最小默认长度为5个字节。
[0140] 步骤304:利用计算的划分长度,将所需传输的数据划分为m个数据块。
[0141] 假设将目标类型服务所需传输的数据划分出的m个数据块如下: 其中,
[0142] 步骤305:获取本地存储的各个数据块。
[0143] 在物理机的本地存储有已经发送给数据中心的各个数据块,以及每一个数据块对应的数据索引。
[0144] 步骤306:确定本地存储的各个数据块中每一个数据块对应的第一校验码。
[0145] 步骤307:利用第一校验码的计算方式,计算m个数据块中每一个数据块对应的第二校验码,并根据第一校验码和第二校验码确定m个数据块中未曾传输的第一数据块和已经传输的第二数据块。
[0146] 在本实施例中,为了保证校验码的一致性,需要利用第一校验码的计算方式来计算第二校验码。
[0147] 其中,该计算方式可以是直接计算每一个数据块的唯一校验值,该唯一校验值可以为MD5值。例如,m个数据块分别对应的第二校验码为:A1、A2、A3、……、Am。在本地存储的第一校验码中包括:A1、A2和A3,那么确定数据块1、数据块2和数据块3为已经传输过的数据块,将数据块1、数据块2和数据块3作为第二数据块,将数据块4、数据块5、数据块6、……、数据块m作为未曾传输过的第一数据块。
[0148] 由于唯一校验值的计算方式较为复杂,用时较长,因此,可以通过如下方式计算第二校验码:
[0149] 在本发明一个实施例中,可以通过如下方式计算该至少一个数据块中每一个数据块对应的第二校验码,该计算方式可以包括:
[0150] 利用公式(2)、公式(3)和公式(4)计算m个数据块中每一个数据块对应的第二校验码;
[0151]
[0152]
[0153] Adler32(1,k)=A(1,k)+216B(1,k)  (4)
[0154] 其中,Adler32(1,k)用于表征第二校验码;A(1,k)用于表征第一中间参数,B(1,k)用于表征第二中间参数;data[j]用于表征当前数据块中的第j个字节对应的数据;M用于表征已知常数;k用于表征该当前数据块包括的字节数。
[0155] 在根据上述计算方式计算得到的第二校验码,若根据上述计算方式计算 得到的第二校验码,与本地存储的第一校验码均不相同,则表明该不相同的第二校验码对应的第二数据块一定未曾传输过;假设m个数据块对应的第二校验码分别为:A1、A2、A3、……、Am。A1、A2、A3均位于本地存储的第一校验码中,那么,A4、A5、A6、……、Am未曾传输过,可以将数据块4、数据块5、数据块6、……、数据块m确定为第二数据块。
[0156] 若与本地存储的第一校验码相同,则表明该相同的第二校验码对应的第二数据块可能已经传输过,还需要利用唯一校验值,例如,MD5值,进行进一步校验。对数据块1、数据块2和数据块3需要进行进一步校验,计算数据块1、数据块2和数据块3分别对应的MD5值,以及计算本地存储的第一校验码为A1、A2和A3的三个数据块分别对应的MD5值,若相对应数据块的MD5值相同,则表明该数据块已经传输过;否则,该数据块未曾传输过。例如,A1、A2和A3均已经传输过,将数据块1、数据块2和数据块3确定为第一数据块。
[0157] 步骤308:确定第一数据块对应的第一数据索引,以及确定第二数据块对应的第二数据索引。
[0158] 其中,该第一数据索引需要根据第一数据块来生成。
[0159] 第二数据索引可以根据本地存储的索引进行确定。
[0160] 步骤309:将第一数据块、第一数据索引和第二数据索引,发送至数据中心,并将第一数据块和第一数据索引进行本地存储。
[0161] 为了降低网络带宽的占用量,可以只传输未曾传输过的第一数据块,而对于已经传输过的第二数据块可以不用传输,只需将第二数据块对应的第二数据索引传输给数据中心即可,从而可以保证网络占用量相对于现有技术减少了第二数据块的网络占用量。
[0162] 在本实施例中,在该第一数据块、第一数据索引和第二数据索引发送给数据中心之后,为了保证下一次进行数据块传输时,可以减少传输的数据块数量,可以进一步包括:将至少一个数据块,以及至少一个数据块中每一个数据块对应的数据索引进行本地存储。
其中,存储的数据还可以包括第一数 据块和第二数据块对应的时间戳。
[0163] 在本实施例中,还可以对第一数据块、第一数据索引和第二数据索引进行压缩,并将压缩后的数据包发送给数据中心。
[0164] 步骤310:数据中心利用存储的数据副本中包括的各个第三数据块、每一个第三数据块对应的第三数据索引,以及根据第二数据索引,确定出第二数据块。
[0165] 由于第二数据块已经给数据中心传输过,因此,在数据中心中存储有第二数据块和第二数据索引。
[0166] 其中,可以通过数据副本来获取第二数据块。
[0167] 数据中心本地存储有各个数据块的数据副本,其中,数据副本是一种提高数据访问效率、系统容错能力、负载均衡能力的通用技术。数据副本中不仅包括各个第三数据块,还包括每一个第三数据块对应的第三数据索引,通过在第三数据索引中查找与第二数据索引相同的数据索引,并利用该相同的数据索引确定相应的数据块,该确定出的数据块即为已经传输过的第二数据块。
[0168] 步骤311:根据设置的该目标类型的服务所对应的阈值,确定该第一数据块和第二数据块的个数是否大于该阈值,若大于,则将该第一数据块和第二数据块存储到云存储中,若不大于,则将该第一数据块和第二数据块存储到实时数据库中。
[0169] 进一步地,还可以设置服务Si对应的数据量的阈值,例如,该阈值为100,在该服务包括的数据块个数达到100个时,将该服务对应的数据块存储到云存储中。
[0170] 步骤312:对第一数据块和第二数据块进行数据副本复制。
[0171] 数据副本的个数的不合理,可能会造成平台的存储压力,浪费大量的存储空间,因此,可以通过如下方式确定数据副本的个数:
[0172] 该数据副本的数量可以通过如下公式(5)来确定:
[0173]
[0174] 其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。
[0175] 请参考图4,本发明实施例还提供了一种物理机,可以包括:
[0176] 配置单元401,用于针对不同类型的服务分别配置相应的采样周期;
[0177] 采集单元402,用于在到达目标类型服务对应的采样周期时,采集所述目标类型服务所需传输的数据;
[0178] 划分单元403,用于将所述所需传输的数据划分为至少一个数据块;
[0179] 确定单元404,用于确定所述至少一个数据块中未曾传输过的第一数据块、已经传输过的第二数据块,以及确定所述第一数据块的第一数据索引、所述第二数据块的第二数据索引;
[0180] 发送单元405,用于将所述第一数据块、所述第一数据索引和所述第二数据索引,发送至数据中心,以使所述数据中心存储所述至少一个数据块。
[0181] 在本发明一个实施例中,可以进一步包括:计算单元,用于利用第一公式计算划分长度;
[0182] 所述第一公式包括:
[0183]
[0184] 其中,k(si)用于表征si对应的划分长度;si用于表征平台提供的第i个服务;period(si)用于表征对si配置的采样周期;status(si)用于表征si的状态变化粒度评估;λ用于表示影响因子,为已知常数;defatult_size用于表征数据块的默认长度;
[0185] 所述划分单元,具体用于利用所述划分长度,将所需传输的数据划分为 所述至少一个数据块;
[0186] 在本发明一个实施例中,可以进一步包括:存储单元,用于将所述至少一个数据块,以及所述至少一个数据块中每一个数据块对应的数据索引进行本地存储;
[0187] 在本发明一个实施例中,所述确定单元,包括:
[0188] 确定模块,用于确定本地存储的各个数据块中每一个数据块对应的第一校验码;
[0189] 计算模块,用于计算所述至少一个数据块中每一个数据块对应的第二校验码;
[0190] 遍历模块,用于根据所述第二校验码,遍历所述第一校验码;将位于所述第一校验码中的所述第二校验码对应的数据块作为所述第二数据块,将未位于所述第一校验码中的所述第二校验码对应的数据块作为所述第一数据块。
[0191] 请参考图5,本发明实施例还提供了一种数据中心,可以包括:
[0192] 获取单元501,用于获取当前物理机发送的针对目标类型服务的第一数据块、所述第一数据块对应的第一数据索引、第二数据块对应的第二数据索引;其中,所述第一数据块为所述当前物理机未曾传输过的数据块,所述第二数据块为所述当前物理机已经传输过的数据块;
[0193] 确定单元502,用于根据本地存储的数据副本中包括的各个第三数据块、以及每一个所述第三数据块对应的第三数据索引,以及根据所述第二数据索引,确定出所述第二数据块;
[0194] 存储单元503,用于存储所述第一数据块和所述第二数据块。
[0195] 在本发明一个实施例中,可以进一步包括:复制单元,用于对存储的所述第一数据块和所述第二数据块,进行如下目标数量的数据副本复制:
[0196]
[0197] 其中,number用于表征对所述第一数据块和所述第二数据块进行数据副本复制的所述目标数量;request_dead_lock用于表征多用户请求对所述第一数据 块和所述第二数据块的数据竞争造成服务阻塞的数量;all_request用于表征所述目标类型服务对应的并发访问量;a用于表征比例因子,为已知常数;init_size用于表征数据副本的初始化数量。
[0198] 请参考图6,本发明实施例还提供了一种数据同步系统,可以包括:上述任一所述的数据中心50、和至少一个上述任一所述的物理机40。
[0199] 综上所述,本发明各个实施例至少可以实现如下有益效果:
[0200] 1、在本发明实施例中,在对采集的所需传输的数据进行传输时,通过对所需传输的数据划分为至少一个数据块,将该至少一个数据块中未曾传输过的第一数据块及其第一数据索引、已经传输过的第二数据块对应的第二数据索引,传输给数据中心即可,无需传输第二数据块,从而可以减少传输过程中的数据量,进而可以降低网络带宽的占用量。
[0201] 2、在本发明实施例中,物理机中的Agent代理可以提供灵活的扩展功能,用户可以通过接口扩展或是脚本语言调用的方式,对Agent代理的数据监控采集进行动态的扩展。用户不需要因为引入了订制化的服务而对整个平台系统进行改动。
[0202] 3、在本发明实施例中,面向服务的多副本数据存储策略,在保证数据实时存储访问的基础上,不仅减少了数据副本的冗余数量,而且提高了系统的并发访问度。
[0203] 上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0204] 需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明 确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0205] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
[0206] 最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。