发明内容
有鉴于此,本发明的目的在于提供基于滑动窗口的数据同步方法,该方法能够提高数据同步的实时性,减小带宽浪费。
为了达到上述目的,本发明提供的技术方案为:
一种主备数据同步方法,该方法包括:
主写点保存每一备份点的更新数据信息的版本标识;
设置一个滑动窗口,预设滑动窗口阈值;
根据所述预设滑动窗口阈值确定允许主写点同时同步到各备份点的最大更新数据信息组数;
当执行所述主写点同步更新数据信息到任一备份点时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点。
一种主写点,该主写点包括:存储单元、设置单元、同步单元;
所述存储单元,用于保存每一备份点的更新数据信息的版本标识;
所述设置单元,用于设置一个滑动窗口,预设滑动窗口阈值;
所述同步单元,用于根据所述预设滑动窗口阈值确定允许主写点同时同步到各备份点的最大更新数据信息组数;用于执行同步更新数据信息到任一备份点时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点。
一种主备数据同步系统,该系统包括:一个主写点和一个或多个备份点;
所述主写点,用于保存每一备份点的更新数据信息的版本标识;用于设置一个滑动窗口,预设滑动窗口阈值;根据所述预设滑动窗口阈值确定允许主写点同时同步到各备份点的最大更新数据信息组数;用于执行同步更新数据信息到任一备份点时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点;
所述备份点,用于接收主写点同步来的更新数据信息。
由上面的技术方案可知,本发明中,预先设定滑动窗口长度M;当主写点将更新的数据同步到备份点(除主写点外的任一数据拷贝)的过程中,主写点中最大允许同时存在M组更新数据信息没有相应的回应报文,而备份点则只需依次接收主写点的同步来的更新数据信息并进行数据处理。由于主写点可以连续同步多组更新数据信息到备份点,而不必每同步一个更新数据信息都等待回应,因此可以提高数据同步的实时性,另外,也可以避免因没有及时收到回应而导致主写点对同一份数据的重复发送,因而也能够减少无效数据和带宽浪费。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
本发明的主要思想是:允许主写点同时同步多组更新数据信息到其它数据拷贝,利用滑动窗口控制主写点执行同步更新数据信息到其它数据拷贝。
为了便于描述,本申请文件中,也将除主写点以外的每个数据拷贝称为备份点。
参见图2,图2是本发明实施例主备数据同步方法的流程示意图,主要包括以下步骤:
步骤201、主写点保存每一备份点的更新数据信息的版本标识。
可以将主写点中记录的每一备份点的从Local作为该备份点的更新数据信息的版本标识。
步骤202、设置一个滑动窗口,预设滑动窗口阈值。
本实施例中,预设滑动窗口阈值表示滑动窗口可以容纳的更新数据信息组数。
步骤203、根据所述预设滑动窗口阈值确定允许主写点同时同步到各备份点的最大更新数据信息组数。
允许主写点同时同步到各备份点的最大更新数据信息组数由预设滑动窗口阈值确定,等于预设滑动窗口阈值。
步骤204、当执行所述主写点同步更新数据信息到任一备份点时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点。
这里,主写点在同步更新数据信息到某一备份点的过程中,需要判断该备份点对应的正在同步的更新数据信息组数是否超过允许同时同步到该备份点的最大更新数据信息组数,如果未超过,则说明正在同步的更新数据信息组数还未达到最大,因此可以继续读取更新数据信息并同步到该备份点,否则,说明该备份点对应的正在同步的更新数据信息组数已达到最大,暂时不允许再读取和同步更新数据信息到该备份点,需要等待接收该备份点对正在同步的更新数据信息的同步成功确认或同步失败确认。
在初始时,备份点对应的正在同步的更新数据信息组数为0,假设N为预设的每组更新数据信息可以包含的最大更新数据信息数,则主写点可以根据该备份点对应的版本标识读取一组更新数据信息(包括N个更新数据信息,更新数据信息少于N个的情况除外)并同步到该备份点,然后将正在同步的更新数据组数增1;接着,再次判断正在同步的更新数据组数是否小于允许同时同步到该备份点的最大更新数据信息组数,如果判断结果为是,则可以继续根据该备份点对应的版本标识读取一组更新数据信息并同步到该备份点,并相应增加正在同步的更新数据信息组数,以此类推,直到正在同步的更新数据信息组数达到允许同时同步到该备份点的最大更新数据信息组数,或者,已经读取并同步所有更新数据信息到该备份点。由于总的更新数据信息数不确定,当读取并同步更新数据信息到备份点时,当最后剩余未被读取并同步到该备份点的更新数据信息数小于N时,可以将这些剩余的更新数据信息作为一组更新数据信息进行读取和同步。
可见,根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点的方法具体可以为:判断剩余未同步到所述任一备份点的更新数据信息是否超过N个,如果是,则从剩余未同步的更新数据信息中读取N个更新数据信息并同步到所述任一备份点,并将正在同步的更新数据信息组数增加1,否则,读取剩余未同步的所有更新数据信息并同步到所述任一备份点,并将正在同步的更新数据信息组数增加1。
图2所示本发明实施例中,主写点根据预设滑动窗口阈值同时同步多组更新数据信息到备份点,备份点需要按顺序逐个接收主写点同步过来的各组更新数据信息并进行异常检测和处理。
备份点接收到主写点同步过来的一组更新数据信息后,需要对该组更新数据信息进行异常检测,异常检测的方法为:检测组中各更新数据信息的序号,如果该组更新数据信息的序号连续且最小序号与该备份点中记录的最近更新序号相同,则可以确定该组更新数据信息正常,并根据该组更新数据信息包含的更新数据信息数更新记录的最近更新序号,否则,可以确定该组更新数据信息异常。这里,所述最近更新序号应与该备份点钟纪录的从LocalSeq保持一致,为将所述任一备份点最近更新到的更新数据信息的序号加1得到的和。
备份点接收到主写点同步过来的一组更新数据信息并判断确定该组更新数据信息正常时,需要返回同步成功确认报文给主写点。主节点接收到备份点返回的同步成功确认报文后,确定正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息同步成功,这时,可以将正在同步的更新数据信息组数减小1。
备份点接收到主写点同步过来的一组更新数据信息并判断确定该组更新数据信息异常时,则需要返回成功失败确认报文给主写点。主写点接收到备份点返回的同步失败确认报文时,确定正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息同步失败,这种情况下,需要将正在同步的更新数据信息组数设置为0,并从同步失败的更新数据信息开始重新同步更新数据信息到所述任一备份点。
主写点同步更新数据信息到备份点时,可以通过将更新数据信息携带在同步报文中的方式发送到备份点。备份点接收到同步报文时,除了检测报文中携带的一组更新数据信息的序号外,还可以对报文进行异常检测,如果异常,则也可以返回同步失败确认报文。而备份点在接收到主写点同步来的一组更新数据信息后,会根据对该组更新数据信息的检测结果返回的同步成功确认报文或同步失败确认报文,其中的同步成功确认报文和同步失败确认报文可以采用相同的报文格式,根据报文中携带的成功标志是成功对应的标志值或失败对应的标志值来进行区分。
下面以M=5、N=2,且主写点中有序号为从5到9共5个需要到备份点的更新数据信息为例,对采用图2所示本发明实施例进行主备数据同步的过程进行说明:
初始时,正在同步的更新数据信息组数为0,备份点中记录的最近更新序号为5;
(1)主写点首先读取序号为5和6的更新数据信息并同步到该备份点,正在同步的更新数据信息组数增为1;
(2)由于正在同步的更新数据信息组数未超过5,主写点接着再读取序号为7和8的更新数据信息并同步到该备份点,正在同步的更新数据信息组数增为2;
(3)由于正在同步的更新数据信息组数未超过5,而且剩余未同步到该备份点的更新数据信息只剩下一个,因此接着读取序号为9的更新数据信息作为一组更新数据信息同步到该备份点,正在同步的更新数据信息组数增为3。
在上述主写点同步更新数据信息到备份点的过程中,备份点也会顺序接收主写点同步来的更新数据信息:
(1)备份点首先接收到主写点同步来的序号分别为5和6的更新数据信息,检测确定该组更新数据信息连续且其中的最小序号与备份点中记录的最近更新序号相同,因此会返回同步成功确认报文给主写点,并更新记录的最近更新序号为7(5+2)。相应地,主写点接收到该同步成功确认报文后,会将正在同步的更新数据组数减1,正在同步的更新数据组数变为2;
(2)备份点接着接收到主写点同步来的序号分别为7和8的更新数据信息,检测确定该组更新数据信息连续且其中的最小序号与备份点中记录的最近更新序号相同,因此会返回同步成功确认报文给主写点,并更新记录的最近更新序号为9(7+2)。相应地,主写点接收到该同步成功确认报文后,会将正在同步的更新数据组数减1,正在同步的更新数据组数变为1;
(3)备份点接着接收到主写点同步来的序号分别为9的更新数据信息,检测确定该组更新数据信息只包含一条更新数据信息且该条数据信息的序号与备份点中记录的最近更新序号相同,因此会返回同步成功确认报文给主写点,并更新记录的最近更新序号为10(9+1)。相应地,主写点接收到该同步成功确认报文后,会将正在同步的更新数据组数减1,正在同步的更新数据组数变为0;
至此,主写点将所有更新数据信息成功同步到备份点。
假设备份点接收主写点同步来的更新数据信息时,由于异常原因造成备份点未接收到主写点同步来的序号分别为7和8的更新数据信息,而是先接收到主写点同步来的序号为9的更新数据信息,则备份点会检测序号9与记录的最近更新序号不同,因而会返回同步失败确认报文,主写点接收到同步失败确认报文后,确定序号分别为7和8的一组更新数据信息同步失败,因此重新从序号分别为7和8的一组更新数据信息开始同步更新数据信息到备份点。
以上对本发明实施例主备数据同步方法进行了详细说明,本发明还提供了一种主写点和一种主备数据同步系统,下面分别结合图3和图4进行说明。
图3是本发明实施例提供的主写点的结构示意图,如图3所示,该主写点包括:存储单元301、设置单元302、同步单元303;其中,
存储单元301,用于保存每一备份点的更新数据信息的版本标识;
设置单元302,用于设置一个滑动窗口,预设滑动窗口阈值;
同步单元303,用于根据所述预设滑动窗口阈值确定允许主写点同时同步到各备份点的最大更新数据信息组数;用于执行同步更新数据信息到任一备份点时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点。
上述主写点进一步包括:判断单元304和统计单元305;
所述判断单元304,用于所述同步单元303在根据所述任一备份点的版本标识读取对应的更新数据信息并同步到所述任一备份点时,判断剩余未同步到所述任一备份点的更新数据信息是否超过N个,其中,N为预设的每组更新数据信息包含的最大更新数据信息数;
所述同步单元303,用于判断单元304判断剩余未同步到所述任一备份点的更新数据信息是否超过N个,如果是,则从剩余未同步的更新数据信息中读取N个更新数据信息并同步到所述任一备份点,并向统计单元305发送第一通知,否则,读取剩余未同步的所有更新数据信息并同步到所述任一备份点,并向统计单元305发送第二通知;
所述统计单元305,用于接收到同步单元303的第一通知时,将正在同步的更新数据信息组数增加1;用于接收到同步单元303的第二通知时,将正在同步的更新数据信息组数增加1。
上述主写点中,所述统计单元305,用于当正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息同步成功时,将正在同步的更新数据信息组数减小1;当正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息同步失败时,将正在同步的更新数据信息组数设置为0,并且,同步单元303会从同步失败的更新数据信息开始重新同步更新数据信息到所述任一备份点。
上述主写点进一步包括:接收单元306,用于接收所述任一备份点返回的同步成功确认报文;用于接收所述任一备份点返回的同步失败确认报文;
确定单元307,用于所述同步单元303在判断正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息是否同步成功时,且在接收单元306接收到所述任一备份点在接收到所述主写点同步的该组更新数据信息并检测确定该组更新数据信息正常后返回的同步成功确认报文时,确定该组更新数据信息同步成功;
所述确定单元307,还用于所述同步单元303在判断正在同步的更新数据信息中最早同步到所述任一备份点的一组更新数据信息是否同步失败时,且在接收单元接收到所述任一备份点在接收到所述主写点同步的该组更新数据信息并检测确定该组更新数据信息异常后返回的同步失败确认报文时,确定该组更新数据信息同步失败。
图4是本发明实施例主备数据同步系统的架构示意图,如图4所示,该系统包括:
一个主写点401和一个或多个备份点402,其中,
主写点401,用于保存每一备份点402的更新数据信息的版本标识;用于设置一个滑动窗口,预设滑动窗口阈值;根据所述预设滑动窗口阈值确定允许主写点401同时同步到每一备份点402的最大更新数据信息组数;用于执行同步更新数据信息到任一备份点402时,判断正在同步的更新数据信息组数是否小于所述最大更新数据信息组数,如果是,则根据所述任一备份点402的版本标识读取对应的更新数据信息并同步到所述任一备份点402;
备份点402,用于接收主写点401同步来的更新数据信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。