CN103220336B - 一种文件同步中向量时钟的实现方法及系统 - Google Patents

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

Info

Publication number
CN103220336B
CN103220336B CN201310091759.0A CN201310091759A CN103220336B CN 103220336 B CN103220336 B CN 103220336B CN 201310091759 A CN201310091759 A CN 201310091759A CN 103220336 B CN103220336 B CN 103220336B
Authority
CN
China
Prior art keywords
clock
version
pulse component
terminal
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310091759.0A
Other languages
English (en)
Other versions
CN103220336A (zh
Inventor
李旭
刘立坤
王一帆
张立新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yinglian Information Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201310091759.0A priority Critical patent/CN103220336B/zh
Publication of CN103220336A publication Critical patent/CN103220336A/zh
Application granted granted Critical
Publication of CN103220336B publication Critical patent/CN103220336B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种文件同步系统中向量时钟的实现方法及系统,该方法包括:步骤1,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟。以此方式实现所有终端数据同步。

Description

一种文件同步中向量时钟的实现方法及系统
技术领域
本发明涉及计算机技术的通信领域以及面向云存储的文件系统领域,尤其是涉及一种文件同步中向量时钟的实现方法及系统。
背景技术
在云存储的客户端与客户端,客户端与服务器之间要数据版本一致,常需要数据同步来实现。向量时钟可用于数据同步领域,在n个并发进程构成的分布式系统中,每个事件的逻辑时钟均由一个n维向量Ci[1…n]构成,其中第i维(分量)对应于进程i的逻辑时钟。时钟向量更新规则:初始时,所有的时钟都为零;进程i在每个事件后都为时钟向量Ci[1…n]的分量i加一个步长;每个进程发送一个消息时,附带其整个向量时钟一起发送;每收到一个消息后,每个进程都应调整其相应的向量时钟Ci[1…n],并遵循如下规则:1≤k≤n,Ck[k]:=max(Ci[k],Cj[k]),其中Ci只能递增,Cj为第j个进程的逻辑时钟。通过比较两个消息或事件的向量时钟可以判断消息或事件发生的先后或者检测消息或者事件冲突(即同时发生)。
在多客户端数据同步中应用向量时钟需要解决两个问题:(1)如何标识客户端;和(2)如何具体的表示一个向量时钟。传统的向量时钟表示方式Ci[1…n]直接应用存在如下局限性:首先,需要预先知道时钟分量的个数n,对于数据同步的动态环境(同步设备数目会变化)是比较困难的;其次,基于索引的时钟分量需要某种机制给同步设备分配对应的索引号,索引的协商分配方式和维护开销也会给系统带来一定的复杂性。本发明将提供一种向量时钟的实现方法,解决上述两个问题。
发明内容
为了避免需要事先确定客户端数量并为之分配时钟分量,保证多客户端环境下更有效的标识客户端,克服客户端的标识协商和维护带来的系统复杂性,本发明提供了一种文件同步中向量时钟的实现方法及系统,其允许随着客户端的加入,动态调整时钟分量的个数,通过标准的UUID来完成客户端的标识,协助用户完成向量时钟的管理和操纵,有助于版本处理和冲突检测。
为实现上述目的,本发明提供了一种文件同步中向量时钟的实现方法,该方法包括:
步骤1,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;
步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;
步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;
步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟。
所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。
进一步的,所述步骤1包括:
步骤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和ISO/IEC11578:1996),典型的实现方式是在客户端首次安装时通过调用操作系统的接口生成。版本号V是一个整数,标示对应数据的版本,在数据被修改时,按照某些预定义的规则进行自增。在上述格式的基础上,本发明还提供了可用于上述向量时钟实现方式的三种操作:比较操作,用于确定两个向量时钟的顺序和冲突检测;分量版本自增操作,用于在客户端对文件操作时调整向量时钟;向量时钟合并操作,用于冲突解决时调整合并两个冲突的向量时钟。
本方法通过重用现有的操作系统的UUID生成功能,解决了客户端的唯一标识问题,有效的克服了客户端的标识协商和维护带来的系统复杂性;允许随着客户端的加入,动态调整时钟分量的个数,因而不必事先确定或预先分配向量长度。
向量时钟的格式:本发明中的所述向量时钟是由时钟分量组成的集合,每个时钟分量包含但不限于如下信息要素:UUID和版本V是。其中,UUID为客户端的唯一标识,遵循开放软件基金会(OSF)的标准。版本V是一个整数,标示对应数据的版本,在数据被修改时,按照某些预定义的规则进行自增。一种典型的实现方案:向量时钟格式为数组:[{UUID1,V1},...,{UUIDi,Vi},...,{UUIDn,Vn}],其中时钟分量i是一个二元组,UUIDi是客户端i的UUID,在客户端安装时调用操作系统的接口生成;Vi是文件被客户端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的并集。
合并后的向量时钟的任一分量的版本为原两个或多个向量时钟中对应分量的版本中的最大值。若某向量时钟不存在对应的分量,则相当于该时钟中对应分量的版本号为0。
图1是本发明的文件同步中向量时钟的实现方法流程图。如图1所示,该方法包括:
步骤1,当用户在多个终端上对文件进行操作时,终端进行分量版本自增操作,调整各自的向量时钟;
步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;
步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;
步骤4,所述两个终端执行同步操作后进行向量时钟合并操作,分别获得新的向量时钟;
所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会(OSF)标准(RFC4122和ISO/IEC11578:1996),该版本号简称版本,通用唯一识别码UUID简称通用唯一识别码。
进一步的,所述步骤1包括:
步骤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和ISO/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。初始状态下个文件在终端上的向量时钟如下(具体实现可以使数据库存储也可以是文件等):
303用户在终端A上对文件做修改操作。
具体地,假设用户在终端A上进行了如下操作:对文件fileB.txt与文件fileD.txt均做一次修改操作。
304用户在终端B上对文件做修改操作和添加新文件。
具体地,假设用户在终端B上进行了如下操作:对文件fileC.txt与文件fileD.txt均做一次修改操作,同时新增文件fileE.txt到同步目录中。
305终端A检测文件状态的变化,并修改所涉及文件的向量时钟VCa
具体地,终端A检测到文件fileB.txt与fileD.txt均做了修改操作,据关键点3分量版本自增操作知,需要调整的向量时钟为VCa中UUIDa对应的时钟分量,版本增量均为1,调整后的终端A文件向量时钟信息如下:
306终端B检测文件状态的变化,并修改所涉及文件的向量时钟VCb
具体地,终端B检测到文件fileC.txt与fileD.txt均做了修改操作,新增文件fileE.txt,据关键点3分量版本自增操作知,需要调整的向量时钟为VCb中UUIDb对应的时钟分量,版本增量均为1,调整后终端B文件向量时钟信息如下:
307终端A发送数据同步请求。
具体地,终端A向终端B发送数据同步请求。
308终端B响应同步请求,获取本地同步目录文件元数据信息(文件向量时钟)。
具体地,终端B收到终端A的数据同步请求。本例中获取同步目录下文件时钟向量信息如下:
309终端B发送同步目录下文件元数据(文件向量时钟)。
具体地,终端B向终端A发送上述同步目录文件元数据信息。
310终端A接收响应的元数据信息并与本地同步目录下文件元数据信息比较。
具体地,终端A接收终端B响应的元数据信息并与本地同步目录下文件元数据信息比较:据关键点2向量时钟比较操作知,对于文件fileA.txt的两个向量时钟VCa与VCb均为{(UUIDa,1)},比较结果为VCa等于VCb;对于文件fileB.txt的两个向量时钟VCa与VCb的UUID均为UUIDa,VCa的版本号为2大于VCb的版本号为1,比较结果为VCa大于VCb;对于文件fileC.txt的两个向量时钟VCa与VCb的UUID均为UUIDb,VCa的版本号为1小于VCb的版本号为2,比较结果为VCa小于VCb;对于文件fileD.txt的两个向量时钟VCa与VCb,第一个分量的UUID均为UUIDa,VCa的版本号为2大于VCb的版本号为1,同时,第二个分量的UUID均为UUIDb,VCa的版本号为1小于VCb的版本号为2,比较结果为VCa与VCb冲突;对于文件fileE.txt的向量时钟VCa与VCb,其中VCa为空,VCb为{(UUIDb,1)},比较结果为VCa小于VCb;具体文件信息及比较结果见下表:
311终端A根据向量时钟比较结果确定需要采取的同步操作。
具体地,终端A根据上述比较结果知,对于文件fileA.txt比较结果为VCa等于VCb,即文件无更新,不需要同步;对于文件fileB.txt比较结果为VCa大于VCb,说明在终端A上有最新修改,需要与终端B同步此文件并更新终端B上的此文件;对于文件fileC.txt比较结果为VCa小于VCb,说明在终端B上有最新修改,需要与终端B同步此文件并更新终端A上的此文件;对于文件fileD.txt比较结果为VCa与VCb冲突,说明在终端A与B上均对此文件修改,需要与终端B同步此文件,一种包含但不限于的方式是:在终端A上同时保留一个副本fileD(冲突).txt,此副本是终端B上修改后的文件,同时,在终端B上也保留一个副本fileD(冲突).txt,此副本是终端A上修改后的文件;对于文件fileE.txt比较结果VCa为空,VCb为{(UUIDb,1)},说明在终端B上有此文件最新修改,终端A上无此文件,需要与终端B同步此文件并在终端A上添加此文件。具体需要同步的文件为:
312终端A从终端B下载更新的文件。
具体地,终端A从终端B下载文件fileC.txt、fileD.txt及fileE.txt。
313终端A更新同步目录中的文件及向量时钟。
具体地,终端A依据310文件元数据比较结果及311确定同步的文件知:从终端B下载的文件fileC.txt覆盖本地文件fileC.txt;由于检测到文件fileD.txt为版本冲突,本文提供可能(一种包含但不限于)的冲突处理方式是:在终端A上,根据关键点4对此文件的时钟向量VCa与VCb做合并操作,产生向量时钟{(UUIDa,2),(UUIDb,2)},保留本地文件fileD.txt的同时,并且保留一个副本(此副本是从终端B上下载的文件fileD.txt)命名为fileD(冲突).txt;从客户端B上下载的文件fileE.txt创建在本地同步目录中。更新结果为:
314终端A向终端B发送文件并附带时钟向量信息。
具体地,终端A向终端B发送文件fileB.txt、fileD.txt及同步目录中文件的时钟向量信息VCa。具体为:
315终端B接收数据及时钟向量VCa并更新同步目录中的文件及向量时钟。
具体地,根据310文件元数据比较结果知,终端B上同步目录中文件向量时钟VCb与向量时钟VCa比较,对于文件fileB.txt比较结果为VCa大于VCb,说明在终端A上为最新修改,终端B接收最新修改文件覆盖本地文件,并且此文件向量时钟VCb修改为{(UUIDa,2)};对于文件fileD.txt比较结果为VCa与VCb冲突,说明在终端A与B上均对此文件修改,本文提供可能(一种包含但不限于)的冲突处理方式是:在终端B上,根据关键点4对此文件的时钟向量VCa与VCb做合并操作,产生向量时钟{(UUIDa,2),(UUIDb,2)},保留本地文件并命名为fileD(冲突).txt,同时,保留一个名为fileD.txt文件(此文件是从终端A上下载的文件fileD.txt);终端B上更新本地同步目录中对应文件及对应时钟向量后,更新结果为:
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1.一种文件同步中向量时钟的实现方法,其特征在于,包括:
步骤1,当用户在两个终端上对文件进行操作时,该两个终端进行分量版本自增操作,调整各自的向量时钟;
步骤2,两个终端中的一个终端向另一个终端发送数据同步请求,该另一终端响应所述同步请求,获取本地同步目录文件元数据信息后发送给该一个终端;
步骤3,所述一个终端收到另一终端的本地同步目录文件元数据信息后,根据所述另一终端的本地同步目录文件元数据信息和自身的本地同步目录文件元数据信息进行向量时钟比较操作,根据比较结果执行同步操作;
步骤4,若两个终端各自的向量时钟冲突,将两个终端各自的向量时钟进行合并,分别获得新的向量时钟,两个终端执行同步操作;
所述向量时钟是由时钟分量组成的集合,每个时钟分量包括通用唯一识别码UUID和版本号,其中UUID用于唯一的标识客户端,遵循开放软件基金会标准,该版本号简称版本。
2.如权利要求1所述的文件同步中向量时钟的实现方法,其特征在于,所述步骤1包括:
步骤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中的两个终端对的模块实现同步操作。
CN201310091759.0A 2013-03-21 2013-03-21 一种文件同步中向量时钟的实现方法及系统 Expired - Fee Related CN103220336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310091759.0A CN103220336B (zh) 2013-03-21 2013-03-21 一种文件同步中向量时钟的实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310091759.0A CN103220336B (zh) 2013-03-21 2013-03-21 一种文件同步中向量时钟的实现方法及系统

Publications (2)

Publication Number Publication Date
CN103220336A CN103220336A (zh) 2013-07-24
CN103220336B true CN103220336B (zh) 2016-01-27

Family

ID=48817787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310091759.0A Expired - Fee Related CN103220336B (zh) 2013-03-21 2013-03-21 一种文件同步中向量时钟的实现方法及系统

Country Status (1)

Country Link
CN (1) CN103220336B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10051020B2 (en) 2015-06-26 2018-08-14 Microsoft Technology Licensing, Llc Real-time distributed coauthoring via vector clock translations
CN106484321A (zh) * 2016-09-08 2017-03-08 华为数字技术(成都)有限公司 一种数据存储方法及数据中心
CN109739684B (zh) * 2018-11-20 2020-03-13 清华大学 基于向量时钟的分布式键值数据库的副本修复方法与装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101496000A (zh) * 2006-07-31 2009-07-29 微软公司 通过web聚合的双向多主同步
CN101520740A (zh) * 2009-04-03 2009-09-02 北京航空航天大学 一种基于时间映射的事件一致性实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101496000A (zh) * 2006-07-31 2009-07-29 微软公司 通过web聚合的双向多主同步
CN101520740A (zh) * 2009-04-03 2009-09-02 北京航空航天大学 一种基于时间映射的事件一致性实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
分布式合作缓存中的全局向量时钟模型;郑晓薇等;《小型微型计算机系统》;20000208;第21卷(第02期);178-180 *
抽象事件的完备逻辑时钟;董宏等;《软件学报》;19991105;第10卷(第11期);1169-1173 *

Also Published As

Publication number Publication date
CN103220336A (zh) 2013-07-24

Similar Documents

Publication Publication Date Title
JP6629697B2 (ja) 仮想マシンイメージファイルを抽出する方法および装置
US11036754B2 (en) Database table conversion
JP6345211B2 (ja) 仮想マシンシステムディスクのスナップショットの作成方法および装置
US9465877B2 (en) Globally unique identifiers in an online content management system
US9660858B2 (en) Maintaining consistent globally unique identifiers via an asynchronous interface
US20170161291A1 (en) Database table conversion
US11347933B1 (en) Distributed collaborative storage with operational transformation
US9613044B2 (en) Maintaining concurrency and consistency of globally unique identifiers
US10209976B2 (en) Automated application installation
EP2724264B1 (en) Client-based data replication
US20160261693A1 (en) Cloud-based data backup and operation method and system
US8930698B2 (en) Encrypting globally unique identifiers at communication boundaries
KR20150130039A (ko) Crm 기반 데이터 마이그레이션 시스템 및 방법
CN111782235A (zh) 一种数据升级、查询方法和装置
CN103220336B (zh) 一种文件同步中向量时钟的实现方法及系统
CN109165259B (zh) 基于网络附属存储的索引表更新方法、处理器及存储装置
CN113590543A (zh) 信息处理的方法、设备和计算机程序产品
CN113076343B (zh) 数据查询方法、装置、设备及存储介质
KR101298852B1 (ko) 파일 복원 방법 및 이를 위한 시스템
CN112579615A (zh) 一种实现分布式锁的方法和装置
CN113760841A (zh) 实现分布式锁的方法和装置
US10917468B2 (en) Systems and methods of re-associating content items
CN113760860B (zh) 一种数据读取方法和装置
CN117539832A (zh) 文件系统对象的重命名方法、装置及计算机程序产品
CN112632616A (zh) 数据处理方法、装置、电子设备以及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170109

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 100190 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CP01 Change in the name or title of a patent holder

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN INFORMATION TECHNOLOGY CO.,LTD.

Address before: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee before: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160127

CF01 Termination of patent right due to non-payment of annual fee