一种文件同步中向量时钟的实现方法及系统的制作方法

文档序号:7553835阅读:212来源:国知局
专利名称:一种文件同步中向量时钟的实现方法及系统的制作方法
技术领域
本发明涉及计算机技术的通信领域以及面向云存储的文件系统领域,尤其是涉及一种文件同步中向量时钟的实现方法及系统。
背景技术
在云存储的客户端与客户端,客户端与服务器之间要数据版本一致,常需要数据同步来实现。向量时钟可用于数据同步领域,在η个并发进程构成的分布式系统中,每个事件的逻辑时钟均由一个η维向量CUL...!!]构成,其中第i维(分量)对应于进程i的逻辑时钟。时钟向量更新规则:初始时,所有的时钟都为零;进程i在每个事件后都为时钟向量CUL...!!]的分量i加一个步长;每个进程发送一个消息时,附带其整个向量时钟一起发送;每收到一个消息后,每个进程都应调整其相应的向量时钟CUL...!!],并遵循如下规则:I彡k彡n,Ck[k]:=πι&Χ((;ω,CjM),其中Ci只能递增,Cj为第j个进程的逻辑时钟。通过比较两个消息或事件的向量时钟可以判断消息或事件发生的先后或者检测消息或者事件冲突(即同时发生)。在多客户端数据同步中应用向量时钟需要解决两个问题:(I)如何标识客户端;和(2)如何具体的表不一个向量时钟。传统的向量时钟表不方式Ci[I…η]直接应用存在如下局限性:首先,需要预先知道时钟分量的个数η,对于数据同步的动态环境(同步设备数目会变化)是比较困难的;其次,基于索引的时钟分量需要某种机制给同步设备分配对应的索引号,索引的协商分配方式和维护开销也会给系统带来一定的复杂性。本发明将提供一种向量时钟的实现方法,解决上述两个问题。

发明内容
为了避免需要事先确定客户端数量并为之分配时钟分量,保证多客户端环境下更有效的标识客户端,克服客户端的标识协商和维护带来的系统复杂性,本发明提供了一种文件同步中向量时钟的实现方法及系统,其允许随着客户端的加入,动态调整时钟分量的个数,通过标准的UUID来完成客户端的标识,协助用户完成向量时钟的管理和操纵,有助于版本处理和冲突检测。为实现上述目的,本发明提供了一种文件同步中向量时钟的实现方法,该方法包括:步骤1,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;
步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟。所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。进一步的,所述步骤I包括:步骤11,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量;

步骤12,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的时钟分量,分量的识别码为所述需要调整时钟分量的唯一识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。进一步的,所述步骤3包括:步骤31,若VCa中任意一时钟分量的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa 等于 VCb ;若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ;若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突;步骤32,若VCa小于VCb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件;若VCa等于VCb,说明在所述两个终端的文件上均无操作,不进行同步操作;若VCa大于VCb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件;若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件;其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。进一步的,所述步骤4包括:步骤41,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通 用唯一识别码;步骤42,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在的对应时钟分量的版本。进一步的,文件同步操作在多个终端上,该多个终端由上述两个终端对组成。为实现上述目的,本发明还提供了一种文件同步中向量时钟的实现系统,该系统包括:向量时钟自增模块,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;同步请求模块,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;向量时钟比较模块,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;向量时钟合并模块,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟;所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。进一步的所述向量时钟自增模块包括:输入模块,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量;调整模块,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的 向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的时钟分量,分量的识别码为所述需要调整时钟分量的唯一识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。进一步的所述向量时钟比较模块包括:比较模块,若VCa中任意一时钟分量的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa 等于 VCb ;若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ;若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突;同步模块,若VCa小于VCb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件;若VCa等于VCb,说明在所述两个终端的文件上均无操作,不进行同步操作;若VCa大于VCb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件;若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件;其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。进一步的所述向量时钟合并模块包括:识别码合并模块,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通用唯一识别码;版本合并模块,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在对应时钟分量的版本。进一步的,文件同步操作在多个终端上,该多个终端由上述两个终端对的模块实现同步操作。本发明的有益功效在于:首先,向量时钟分量数随着客户端的加入,动态调整分量的个数,即不需要事先确定所有客户端数量及预先分配此数量长度;其次,本方法通过标准的UUID来完成客户端的标识,通过调用操作系统或特定的开发库中已存在的功能,即可得到客户端的标识,有效的克服了客户端的标识协商和维护带来的系统复杂性;此外,本方法还提供了一套操纵向量时钟的主要接口,包括向量时钟比较操作,向量时钟分量版本自增操作,向量时钟合并操作,可协助用户完成向量时钟的管理和操纵,有助于版本处理和冲突检测。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1是本发明的文件同步中向量时钟的实现方法流程图;图2是本发明的文件同步中向量时钟的实现系统示意图;图3是本发明的一实施例的文件同步中向量时钟的实现方法流程图。
具体实施例方式本发明提供多客户端数据同步中向量时钟的一种实现方法,具体地:定义向量时钟是由向量时钟分量(以下简称“时钟分量”)组成的集合,每个时钟分量包含但不限于如下信息要素=UUID和版本号V。其中,UUID用于唯一的标识客户端,遵循开放软件基金会(OSF)标准(RFC4122和IS0/IEC11578:1996),典型的实现方式是在客户端首次安装时通过调用操作系统的接口生成。版本号V是一 个整数,标示对应数据的版本,在数据被修改时,按照某些预定义的规则进行自增。在上述格式的基础上,本发明还提供了可用于上述向量时钟实现方式的三种操作:比较操作,用于确定两个向量时钟的顺序和冲突检测;分量版本自增操作,用于在客户端对文件操作时调整向量时钟;向量时钟合并操作,用于冲突解决时调整合并两个冲突的向量时钟。本方法通过重用现有的操作系统的UUID生成功能,解决了客户端的唯一标识问题,有效的克服了客户端的标识协商和维护带来的系统复杂性;允许随着客户端的加入,动态调整时钟分量的个数,因而不必事先确定或预先分配向量长度。向量时钟的格式:本发明中的所述向量时钟是由时钟分量组成的集合,每个时钟分量包含但不限于如下信息要素:UUID和版本V是。其中,UUID为客户端的唯一标识,遵循开放软件基金会(OSF)的标准。版本V是一个整数,标示对应数据的版本,在数据被修改时,按照某些预定义的规则进行自增。一种典型的实现方案:向量时钟格式为数组JIUUID1,VJ,..., (UUIDi, VJ,..., {UUIDn,Vj ],其中时钟分量i是一个二元组,UUIDi是客户端i的UUID,在客户端安装时调用操作系统的接口生成%是文件被客户端i操作的次数,所述操作包括但不限于添加、删除、修改等。当有新的客户端加入时,可以通过简单的增加一个数组元素的方式动态调整时钟分量。向量时钟比较操作:该操作用于确定两个向量时钟的顺序和检测数据版本冲突。具体地,该操作输入为用于比较的两个向量时钟VCa和vcb,输出为下列比较结果之一:VCa小于VCb =VCa中任意一时钟分量的版本均小于等于VCb对应分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应分量的版本。VCa等于VCb =VCa中任意一时钟分量版本均等于VCb中对应分量的版本。VCa大于VCb =VCa中任意一时钟分量的版本均大于等于VCb中对应分量的版本,且VCa中存在至少一个时钟分量版本大于VCb中对应分量的版本。VCa和VCb冲突:VCa中存在至少一个时钟分量的版本小于VCb中对应分量的版本,且VCa存在至少一个时钟分量的版本大于VCb中对应分量的版本。分量版本自增操作:该操作用于在客户端对文件操作时调整向量时钟。具体地,该操作的输入为需要调整的向量时钟、需要调整的分量(或其UUID)和版本增量,输出为调整后的向量时钟。更新操作结果包含但不限于以下特征:若此向量时钟中存在与调整分量UUID相同的时钟分量,则调整该时钟分量的版本为当前版本与输入的版本增量之和。若此向量时钟不存在上述时钟分量,则在向量时钟中添加一个新时钟分量,对应的UUID设置为调整分量的UUID,版本为输入的版本增量。

向量时钟合并操作:该操作用于解决冲突后调整合并两个冲突的向量时钟。具体地,该操作的输入为需要合并的两个或多个向量时钟,输出为合并后的向量时钟。所述合并后的向量时钟包含但不限于如下特征:合并后的向量时钟的分量对应的UUID为原两个或多个向量时钟的分量对应的UUID的并集。合并后的向量时钟的任一分量的版本为原两个或多个向量时钟中对应分量的版本中的最大值。若某向量时钟不存在对应的分量,则相当于该时钟中对应分量的版本号为O0图1是本发明的文件同步中向量时钟的实现方法流程图。如图1所示,该方法包括:步骤1,当用户在多个终端上对文件进行操作时,终端进行分量版本自增操作,调整各自的向量时钟;步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟;所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会(OSF)标准(RFC4122和IS0/IEC11578:1996),该版本号简称版本,通用唯一识别码UUID简称通用唯一识别码。进一步的,所述步骤I包括:步骤11,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量;
步骤12,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的时钟分量,分量的识别码为所述需要调整时钟分量的唯一识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。进一步的,所述步骤3包括:步骤31,若VCa中任意一时钟分量的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa 等于 VCb ;若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ;若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突;步骤32,若VCa小于VCb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件;若VCa等于VCb,说明在所述两个终端的文件上均无操作,不进行同步操作;若VCa大于VCb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件;

若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件;其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。进一步的,所述步骤4包括:步骤41,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通用唯一识别码;步骤42,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在对应时钟分量的版本。进一步的,文件同步操作在多个终端上,该多个终端由上述两个终端对组成。图2是本发明的文件同步中向量时钟的实现系统示意图。如图2所示,该系统包括:为实现上述目的,本发明还提供了一种文件同步中向量时钟的实现系统,该系统包括:向量时钟自增模块100,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;同步请求模块200,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;向量时钟比较模块300,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;向量时钟合并模块400,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟;所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会(OSF)标准(RFC4122和IS0/IEC11578:1996),该版本号简称版本,通用唯一识别码UUID简称通用唯一识别码。进一步的所述向量时钟自增模块100包括:输入模块,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量;调整模块,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的时钟分量,分量的识别码为所述需要调整时钟分量的唯一识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。进一步的所述向量时钟比较模块300包括:比较模块,若VCa中任意一时钟分量 的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa 等于 VCb ;若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ;若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突;同步模块,若VCa小于VCb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件;若VCa等于VCb,说明在所述两个终端的文件上均无操作,不进行同步操作;若VCa大于VCb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件;若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件;其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。进一步的所述向量时钟合并模块400包括:识别码合并模块,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通用唯一识别码;版本合并模块,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在对应时钟分量的版本。进一步的,文件同步操作在多个终端上,该多个终端由上述两个终端对的模块实现同步操作。图3是本发明的一实施例的文件同步中向量时钟的实现方法流程图。如图3所示:初始状态:两个终端设备A与B (以下简称“终端A”、“终端B”)处于同步状态。同步目录下存在文件fileA.txt、fileB.txt、fileC.txt、fileD.txt。初始状态下个文件在终端上的向量时钟如下(具体实现可以使数据库存储也可以是文件等):
权利要求
1.一种文件同步中向量时钟的实现方法,其特征在于,包括: 步骤1,当用户在两在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟; 步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端; 步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作; 步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟; 所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。
2.如权利要求1所述的文件同步中向量时钟的实现方法,其特征在于,所述步骤I包括: 步骤11,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量; 步骤12,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的向量时钟的时钟分量,分量的识别码为所述需要调整的向量时钟分量的识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。
3.如权利要求1所述的文件同步中向量时钟的实现方法,其特征在于,所述步骤3包括: 步骤31,若VCa中任意一时钟分量的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb ;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa等于 VCb ; 若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ; 若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突; 步骤32,若VCa小于VCb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件; 若VCa等于vcb,说明在所述两个终端的文件上均无操作,不进行同步操作; 若VCa大于vcb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件; 若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件; 其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。
4.如权利要求1所述的文件同步中向量时钟的实现方法,其特征在于,所述步骤4包括:步骤41,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通用唯一识别码; 步骤42,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在的对应时钟分量的版本。
5.如权利要求1所述的文件同步中向量时钟的实现方法,其特征在于,文件同步操作在多个终端上,该多个终端由权利要求1至4中的两个终端对组成。
6.一种文件同步中向量时钟的实现系统,其特征在于,包括: 向量时钟自增模块,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟; 同步请求模块,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端; 向量时钟比较模块,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作; 向量时钟合并模块,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟; 所述向量时钟是由时 钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。
7.如权利要求6所述的文件同步中向量时钟的实现系统,其特征在于,所述向量时钟自增模块包括: 输入模块,每个终端各自输入需要调整的向量时钟的时钟分量和版本增量; 调整模块,若所述每个终端的向量时钟中存在与所述需要调整的向量时钟的相同的时钟分量,则调整该终端的向量时钟的版本为当前版本与输入的版本增量之和;否则,先添加所述需要调整的时钟分量,分量的识别码为所述需要调整时钟分量的唯一识别码,版本号为所述需要调整该终端的向量时钟的版本为输入的版本增量。
8.如权利要求6所述的文件同步中向量时钟的实现系统,其特征在于,所述向量时钟比较模块包括: 比较模块,若VCa中任意一时钟分量的版本均小于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,则比较结果为VCa小于VCb ;若VCa中任意一时钟分量的版本均等于VCb对应时钟分量的版本,则比较结果为VCa等于 VCb ; 若VCa中任意一时钟分量的版本均大于等于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa大于VCb ; 若VCa中存在至少一时钟分量的版本小于VCb对应时钟分量的版本,且VCa中存在至少一时钟分量的版本大于VCb对应时钟分量的版本,则比较结果为VCa与VCb冲突; 同步模块,若VCa小于vcb,说明在所述另一个终端的文件上有操作,同步操作为:更新所述一个终端的相应文件; 若VCa等于vcb,说明在所述两个终端的文件上均无操作,不进行同步操作;若VCa大于vcb,说明在所述一个终端的文件上有修改操作,同步操作为:更新所述另一个终端的相应文件; 若VCa与VCb冲突,说明在所述两个终端的文件上均有操作,更新所述两个终端的相应文件; 其中VCa为所述一个终端的向量时钟,VCb为所述另一终端的向量时钟。
9.如权利要求6所述的文件同步中向量时钟的实现系统,其特征在于,所述向量时钟合并模块包括: 识别码合并模块,将所述两个向量时钟的时钟分量对应的通用唯一识别码的并集作为所述新的向量时钟的时钟分量对应的通用唯一识别码; 版本合并模块,将所述新的向量时钟的任一时钟分量的版本设置为所述两个向量时钟中对应时钟分量的版本中的最大值,若某向量时钟不存在对应时钟分量,则设置新向量时钟中对应时钟分量的版本为另一存在的对应时钟分量的版本。
10.如权利要求6所述的文件同步中向量时钟的实现系统,其特征在于,文件同步操作在多个终端上,该多个终端由权利要求6至9中的两个终端对的模块实现同步操作。
全文摘要
本发明提供一种文件同步系统中向量时钟的实现方法及系统,该方法包括步骤1,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟。以此方式实现所有终端数据同步。
文档编号H04L29/08GK103220336SQ201310091759
公开日2013年7月24日 申请日期2013年3月21日 优先权日2013年3月21日
发明者李旭, 刘立坤, 王一帆, 张立新 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1