一种基于分布式文件系统的处理方法和服务器以及客户端的制作方法

文档序号:10515602阅读:303来源:国知局
一种基于分布式文件系统的处理方法和服务器以及客户端的制作方法
【专利摘要】本发明实施例公开了一种基于分布式文件系统的处理方法和服务器以及客户端,用于提供数据版本冲突检测识别机制,有效提高分布式文件系统的效率。本发明实施例方法包括:服务器向客户端发送源文件,源文件包括:服务器发送源文件时存储的版本信息;服务器接收客户端操作过的源文件,客户端操作过的源文件,包括:客户端更新前的版本信息和客户端更新后的版本信息;服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同;若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。
【专利说明】
一种基于分布式文件系统的处理方法和服务器以及客户端
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及一种基于分布式文件系统的处理方法和服务器以及客户端。
【背景技术】
[0002]在分布式文件共享以及协作的场景下,同一份数据在多个端点(End Point,EP)存在多个副本,这些EP可能同时对同一份数据进行修改,这会导致写冲突的产生,让协助者感知写冲突,根据冲突策略做决策,减小数据丢失的风险,最小化冲突代价,是该领域需要解决的问题。
[0003]由于多个EP可能对同个文件进行提交,如分布式文件共享场景,相互之间无法感知其它EP对文件的提交,在数据部分就存在用户写数据失效的问题,导致用户写信息的丢失。对于这个问题,现有技术中的实现方法是通过写权利租用的方式,对文件操作进行加锁,以进行排它控制,可以保证文件的有效性。写权利租用可以有效保证文件的有效性,但是由于所有写行为都需要进行租用,对于存在并发行为且并发频繁的文件共享领域,会导致系统开销比较大,可行性不强。另外,所有写操作需要加锁解锁流程,增加了写网络延时以及锁系统依赖,写权利租用机制中为解决写权利一直不被释放的问题,还需要有租用超时/续租机制,整个管理过程程序复杂。

【发明内容】

[0004]本发明实施例提供了一种基于分布式文件系统的处理方法和服务器以及客户端,用于提供数据版本冲突检测识别机制,有效提高分布式文件系统的效率。
[0005]为解决上述技术问题,本发明实施例提供以下技术方案:
[0006]第一方面,本发明实施例提供一种基于分布式文件系统的处理方法,包括:
[0007]服务器向客户端发送源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0008]所述服务器接收所述客户端操作过的源文件,所述客户端操作过的源文件,包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息;
[0009]所述服务器判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同;
[0010]若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息。
[0011]第二方面,本发明实施例还提供一种分布式文件系统的处理方法,包括:
[0012]客户端从服务器获取源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0013]所述客户端对所述源文件进行操作,并对所述源文件的版本信息进行更新;
[0014]所述客户端向所述服务器发送所述客户端操作过的源文件,所述客户端端操作过的源文件包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息。
[0015]第三方面,本发明实施例提供一种服务器,包括:
[0016]发送模块,用于向客户端发送源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0017]接收模块,用于接收所述客户端操作过的源文件,所述客户端操作过的源文件,包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息;
[0018]版本识别模块,用于判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同;
[0019]存储模块,用于若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息。
[0020]第四方面,本发明实施例提供一种客户端,包括:
[0021]接收模块,用于从服务器获取源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0022]操作模块,用于对所述源文件进行操作,并对所述源文件的版本信息进行更新;
[0023]发送模块,用于向所述服务器发送所述客户端操作过的源文件,所述客户端端操作过的源文件包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息。
[0024]从以上技术方案可以看出,本发明实施例具有以下优点:
[0025]在本发明实施例中,服务器向客户端发送源文件,源文件包括:服务器发送源文件时存储的版本信息,客户端对源文件进行操作后向服务器发送客户端操作过的源文件,客户端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息,服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。由于服务器向客户端发送的源文件提供有版本信息,客户端操作过源文件后提供更新前和更新后的版本信息,服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
【附图说明】
[0026]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
[0027]图1为本发明实施例提供的一种基于分布式文件系统的处理方法的流程方框示意图;
[0028]图2为本发明实施例提供的另一种基于分布式文件系统的处理方法的流程方框示意图;
[0029]图3-a为本发明实施例中数据库中存储的源文件的存储结构示意图;
[0030]图3-b为本发明实施例中两个客户端对源文件的并行操作示意图;
[0031]图3-c为两个客户端件进行源文件并发操作时与服务器的交互流程视图;
[0032]图4-a为本发明实施例提供的一种服务器的组成结构示意图;
[0033]图4-b为本发明实施例提供的一种服务器的组成结构示意图;
[0034]图5为本发明实施例提供的一种客户端的组成结构示意图;
[0035]图6为本发明实施例提供的基于分布式文件系统应用于服务器的组成结构示意图;
[0036]图7为本发明实施例提供的基于分布式文件系统应用于终端的组成结构示意图。
【具体实施方式】
[0037]本发明实施例提供了一种基于分布式文件系统的处理方法和服务器以及客户端,用于提供数据版本冲突检测识别机制,有效提高分布式文件系统的效率。
[0038]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0039]本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
[0040]以下分别进行详细说明。
[0041]本发明基于分布式文件系统的处理方法一个实施例,具体可以应用于服务器中,请参阅图1所示,本发明一个实施例提供的基于分布式文件系统的处理方法,可以包括如下步骤:
[0042]101、服务器向客户端发送源文件,其中,源文件包括:服务器发送源文件时存储的版本信息。
[0043]在分布式文件系统中,例如分布式文件共享以及协作的场景下,存在多个客户端同时对同一份源文件进行操作的并发场景,若服务器侧无法对并发操作存在冲突问题进行解决,将导致客户端对源文件写操作的实效,并且还可能丢失客户端侧发送的用户数据。
[0044]在本发明实施例中,服务器用于对源文件的管理,例如服务器管理一个数据库(Date Source, DS),在数据库中存储有多个源文件,服务器可实现与一个或多个客户端的交互,为源文件提供服务管理。为了避免同一份源文件的冲突,服务器在存储多个源文件时为每个源文件都设置版本信息,其中,版本信息用于标识源文件被操作的次数,例如,服务器为每个源文件分配一个版本号,服务器中保存为每个源文件设置的版本号。
[0045]当用户需要使用源文件时,可以通过客户端向服务器发起文件下载请求,服务器根据客户端的请求向客户端提供源文件,例如服务器根据客户端请求的文件标识号(Identity, ID)从数据库中查找对应的文件,然后服务器向客户端发送该客户端请求的源文件,并且服务器在发送的源文件中携带服务器中当前存储的版本信息,则客户端接收到源文件后就可以获取到在服务器中存储的源文件的版本信息。
[0046]需要说明的是,在本发明的一些实施例中,步骤101服务器向客户端发送源文件之前,本发明实施例提供的基于分布式文件系统的处理方法还可以包括如下步骤:
[0047]100、服务器将服务器中存储的源文件进行分片,并对源文件的每个分片设置版本
?目息O
[0048]也就是说,步骤101之前本发明实施例提供的基于分布式文件系统的处理方法还包括步骤100,服务器中存储的源文件是分片的,一份源文件由至少两个分片组成,服务器将一份源文件中的内容分为多个分片,每个分片记载了源文件中的部分内容,通过各个分片可以得到源文件的各个文件块。每个分片都设置有一个版本信息,各个分片之间的版本信息是独立的,只有某一个分片被操作过后该分片的版本信息才会更新,否则分片的版本信息是确定不变的。
[0049]在这种实现方式下,步骤101服务器向客户端发送源文件,具体为:
[0050]服务器向客户端发送包含多个分片的源文件,服务器发送的源文件包括:服务器发送源文件时存储的各个分片的版本信息。
[0051]其中,若客户端向服务器发起文件下载请求,服务器根据客户端的请求向客户端提供源文件,该源文件中包括有多个分片,每个分片都有一个版本信息,客户端接收到包含多个分片的源文件之后,客户端可按照写指令对源文件中的至少一个分片进行操作,例如客户端接收到的源文件包含3个分片(分别为分片1、分片2、分片3),客户端可按照写指令的要求对只对分片I和分片2进行操作,而分片3维持不变。
[0052]102、服务器接收客户端操作过的源文件,客户端操作过的源文件,包括:客户端更新前的版本信息和客户端更新后的版本信息。
[0053]在本发明实施例中,服务器根据客户端的请求向客户端发送源文件之后,客户端通过与服务器之间的通信连接接收该源文件,客户端接收到源文件之后,客户端可根据操作用户的指示对源文件进行操作,例如,客户端在源文件中新增加内容,或者修改源文件中的内容等。客户端对源文件进行操作时,还需要对源文件的版本信息进行更新,客户端接收到源文件时从源文件中获取到该源文件的原版本信息,即服务器向客户端发送源文件时在服务器中存储的版本信息,客户端将获取到的源文件的版本信息作为基础,对上述版本信息进行更新,在客户端操作过的源文件中携带更新前的版本信息和更新后的版本信息,客户端向服务器发送该客户端操作过的源文件,服务器可接收到客户端发送的操作过的源文件。例如,若服务器中当前存储的源文件的版本信息为N时,客户端对上述源文件进行操作,并更新版本信息N为Ν+1,客户端在操作过的源文件中携带更新前的版本信息N以及更新后的版本信息Ν+1。服务器从客户端操作过的源文件中可以获取到客户端操作了源文件中的哪些内容以及更新前与更新后的版本信息。
[0054]在本发明的一些实施例中,本发明实施例提供的基于分布式文件系统的处理方法中若执行步骤100的场景下,服务器接收到的客户端操作过的源文件,具体包括:客户端对至少一个分片操作过的源文件。
[0055]103、服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同。
[0056]在本发明实施例中,服务器接收到客户端操作过的源文件之后,服务器获取到该客户端更新前的版本信息,然后服务器判断客户端更新前的版本信息与服务器中当前存储的版本信息是否相同,则可能存在以下两种判断结果,若服务器向一个客户端发送一份源文件之后,同一份源文件没有被其它客户端请求过,则服务器中存储的该源文件的版本信息就不会产生变化,客户端更新前的版本信息与服务器中当前存储的版本信息必然相同,若服务器向一个客户端发送一份源文件之后,同一份源文件被其它客户端请求过,并且在上述客户端发送操作过的源文件之前同一份源文件已经被其它客户端操作过后存储到了服务器中,那么服务器中当前存储的该源文件的版本信息就会产生变化,该客户端更新前的版本信息与服务器中当前存储的版本信息就不相同。也就是说,每个客户端对源文件进行操作后都会更新一次源文件的版本信息,服务器中存储的源文件的版本信息并不是一成不变的,而是随着不同客户端对源文件的多次操作不断变化的,服务器通过源文件的版本信息更新情况,可以确定源文件被操作的先后顺序,从而可以正确存储多个客户端操作过的同一份源文件,避免同一份源文件被多个客户端操作过后产生的冲突问题。
[0057]在本发明的一些实施例中,本发明实施例提供的基于分布式文件系统的处理方法中若执行步骤100的场景下,步骤103服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,具体包括:
[0058]服务器判断客户端更新前的源文件中每个分片的版本信息是否与服务器中当前存储的对应分片的版本信息相同。
[0059]其中,客户端更新前的版本信息与服务器中当前存储的版本信息相同具体为:客户端更新前的源文件中每个分片的版本信息与服务器中当前存储的对应分片的版本信息都相同。
[0060]具体的,服务器中存储的源文件是分片的,一份源文件由至少两个分片组成,服务器将一份源文件中的内容分为多个分片,每个分片都设置有一个版本信息,各个分片之间的版本信息是独立的,客户端只对源文件中操作过的分片对应的版本信息进行更新,而对于上述源文件中未操作的分片对应的版本信息不进行更新,客户端操作过的源文件中携带更新前的版本信息和更新后的版本信息,服务器对源文件中每个分片的版本信息都进行判断,即服务器分别比较客户端操作过的源文件中每个分片的版本信息与服务器中当前存储的对应分片的版本信息,其中,服务器比较的是客户端操作过的源文件中的分片ID与服务器中分片ID相同的两个分片各自的版本信息是否相同,即分片ID相同的两个分片互为对应分片。
[0061]104、若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。
[0062]在本发明实施例中,服务器判断客户端更新前的版本信息与服务器中当前存储的版本信息相同的情况下,执行步骤104,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息,也就是说,服务器在客户端操作的基础版本信息与服务器中当前存储的版本信息一致的情况下,服务器允许客户端写入源文件,并将客户端更新后的版本信息替换掉服务器中当前存储的版本信息,客户端可成功完成对源文件的操作。服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
[0063]在本发明的一些实施例中,本发明实施例提供的基于分布式文件系统的处理方法中若执行步骤100的场景下,步骤104中服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,具体可以包括如下步骤:
[0064]服务器将客户端操作过的至少一个分片替换服务器中当前存储的对应分片。
[0065]也就是说,服务器通过步骤103判断出源文件中的哪个分片被操作过之后,服务器对客户端操作过的分片存储到服务器中,将该服务器中当前存储的对应分片替换掉,完成对客户端操作过的源文件的存储,对于客户端未操作的分片,服务器无需进行替换。服务器通过将源文件分为多个分片的方式,只对已经操作过的分片进行存储,可以减少源文件存储的数据量,提高存储效率。
[0066]在上述的实现方式下,步骤104中将客户端更新后的版本信息替换服务器中当前存储的版本信息,具体可以包括如下步骤:
[0067]将客户端操作过的至少一个分片的更新后的版本信息替换服务器中当前存储的对应分片的版本信息。
[0068]其中,服务器将客户端操作过的至少一个分片替换到服务器中,也需要将更新后的版本信息替换到服务器中,以保证服务器中当前存储的版本信息是源文件最近被操作过的版本。
[0069]在本发明的一些实施例中,步骤103服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同之后,本发明实施例提供的基于分布式文件系统的处理方法还可以包括如下步骤:
[0070]Al、若客户端更新前的版本信息与服务器中当前存储的版本信息不相同,服务器向客户端发送冲突信息,冲突信息包括:服务器中当前存储的版本信息对应的源文件;
[0071]A2、服务器接收客户端重新操作过的源文件,客户端端重新操作过的源文件包括:客户端重新更新前的版本信息和客户端重新更新后的版本信息;
[0072]A3、服务器判断客户端重新更新前的版本信息与服务器中当前存储的版本信息是否相同;
[0073]A4、若客户端重新更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端重新操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端重新更新后的版本信息替换服务器中当前存储的版本信息。
[0074]对于步骤Al,在本发明实施例的步骤103中服务器判断客户端更新前的版本信息与服务器中当前存储的版本信息是否相同,在服务器判断客户端更新前的版本信息与服务器中当前存储的版本信息不相同的情况下,执行步骤Al,客户端保存源文件到服务器中失败,客户端需要保存的源文件与服务器中存储的源文件有冲突,服务器生成冲突信息,冲突信息用于表示客户端无法将源文件保存到服务器中时存在冲突的文件内容,服务器将服务器中当前存储的版本信息对应的源文件发送给客户端。客户端将服务器中当前存储的版本信息对应的源文件与客户端操作过的源文件进行融合,得到客户端重新操作过的源文件,并将重新操作过的源文件的版本信息进行重新更新,客户端重新操作过的源文件的重新更新前的版本信息为从冲突信息中提取到的源文件的版本信息。其中,客户端可以根据业务特性,采用不同的冲突融合策略,在服务器发送的当前源文件基础上把该客户端需要操作的文件内容重新执行一遍,并对源文件的版本信息进行重新更新。
[0075]需要说明的是,在本发明实施例提供的基于分布式文件系统的处理方法中若执行步骤100的场景下,步骤Al中客户端更新前的版本信息与服务器中当前存储的版本信息不同,具体为:客户端更新前的源文件中至少有一个分片的版本信息与服务器中当前存储的对应分片的版本信息不同。冲突信息包括:服务器中与客户端更新前的版本信息不同的版本信息对应的源文件的分片。通过对源文件的分片,可以降低服务器发送源文件的数据量,只需要将存在冲突的分片通过冲突信息发送给客户端,客户端也只需要下载存在冲突的分片而无需下载整个源文件,可以降低服务器和客户端之间交互的数据流量。
[0076]也就是说,若服务器对源文件进行分片,若更新前至少有一个分片的版本信息与服务器中当前存储的对应分片的版本信息不相同,就可以判定客户端更新前的版本信息与服务器中当前存储的版本信息不同,服务器生成的冲突信息中需要包括存在冲突的版本信息对应的源文件中的分片。举例说明如下,若源文件中有三个分片(分别为分片1、分片2、分片3),客户端可按照写指令的要求对只对分片I和分片2进行操作,而分片3维持不变,客户端操作过的分片I的版本信息与服务器中当前存储的分片I的版本信息不同,则认为分片I产生冲突,服务器生成的冲突信息中只需要包括服务器中存储的分片I。
[0077]对于步骤A2,客户端向服务器发送该客户端重新操作过的源文件,服务器可接收到客户端重新操作过的源文件,客户端端重新操作过的源文件包括:客户端重新更新前的版本信息和客户端重新更新后的版本信息,接下来服务器继续执行步骤A3,判断客户端重新更新前的版本信息与服务器中当前存储的版本信息是否相同,其中判断版本信息是否相同的方式与前述步骤103相类似。若客户端重新更新前的版本信息与服务器中当前存储的版本信息不相同,重新执行步骤Al至A3,若客户端重新更新前的版本信息与服务器中当前存储的版本信息相同,执行步骤A4,服务器将客户端重新操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端重新更新后的版本信息替换服务器中当前存储的版本信息,其中,服务器替换源文件以及替换版本信息的方式与前述步骤104相类似。
[0078]针对如上记载的实施例,接下来进行举例说明,例如,对于服务器与多个客户端交互的场景,以服务器与两个客户端的并发操作为例,若一个客户端A向服务器请求了源文件a后,另一个客户端B也向服务器请求的源文件a,服务器将源文件a发送给客户端A时在服务器中存储的版本信息为N,服务器将源文件a发送给客户端B时在服务器中存储的版本信息为N,客户端A和客户端B在对源文件更新后都会源文件a的版本信息进行更新,例如客户端A将源文件a的版本信息更新为N+1,客户端B将源文件的版本信息更新为N+1,若客户端A先于客户端B向服务器发送该操作过的源文件a,对于客户端A发送的源文件a,客户端A更新前的版本信息为N、更新后的版本信息为N+1,服务器判断客户端A更新前的版本信息为N与服务器中当前存储的版本信息N —致,服务器允许客户端A将客户端A操作过的源文件a替换服务器中当前存储的源文件a,并且服务器中存储的源文件a的版本信息页更新为N+1,若此时客户端B也向服务器发送客户端B操作过的源文件a,客户端B更新前的版本信息为N、更新后的版本信息为N+1,服务器判断客户端B更新前的版本信息为N与服务器中当前存储的版本信息N+1不一致,服务器向客户端B发送冲突信息,冲突信息中包括:服务器中当前存储的版本信息为N+1的源文件a,客户端B将服务器中当前存储的版本信息为N+1的源文件a与客户端B操作过的源文件a进行融合,得到重新操作过的源文件a,并对重新操作过的源文件a的版本信息更新为N+2,其中,客户端B进行重新更新的基础是客户端B从冲突信息中提取到的版本信息N+1,客户端B再向服务器发送客户端B重新操作过的源文件a,服务器判断客户端B重新更新前的版本信息为N+1与服务器中当前存储的版本信息N+1 —致,服务器允许客户端B将客户端B操作过的源文件a替换服务器中当前存储的源文件a,并且服务器中存储的源文件a的版本信息页更新为N+2。
[0079]通过以上实施例对本发明的描述可知,服务器向客户端发送源文件,源文件包括:服务器发送源文件时存储的版本信息,客户端对源文件进行操作后向服务器发送客户端操作过的源文件,客户端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息,服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。由于服务器向客户端发送的源文件提供有版本信息,客户端操作过源文件后提供更新前和更新后的版本信息,服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
[0080]以上实施例从服务器侧介绍了本发明基于分布式文件系统的处理方法一个实施例,请参阅图2所示,本发明另一个实施例提供的基于分布式文件系统的处理方法,具体可以用于终端侧,可以包括如下步骤:
[0081]201、客户端从服务器获取源文件,源文件包括:服务器发送源文件时存储的版本
?目息O
[0082]在本发明实施例中,当用户需要使用源文件时,可以通过客户端向服务器发起文件下载请求,服务器根据客户端的请求向客户端提供源文件,例如客户端发送的文件下载请求携带需要请求的文件ID,由服务器从数据库中查找对应的文件,然后服务器向客户端发送该客户端请求的源文件,并且服务器在发送的源文件中携带服务器中当前存储的版本信息,则客户端接收到源文件后就可以获取到在服务器中存储的源文件的版本信息。
[0083]在发明的一些实施例中,服务器中存储的源文件是分片的,一份源文件由至少两个分片组成,服务器将一份源文件中的内容分为多个分片,每个分片记载了源文件中的部分内容,通过各个分片可以得到源文件的各个文件块。每个分片都设置有一个版本信息,各个分片之间的版本信息是独立的,只有某一个分片被操作过后该分片的版本信息才会更新,否则分片的版本信息是确定不变的。若服务器向客户端发送包含多个分片的源文件,则步骤201中客户端可以从服务器获取到包含多个分片的源文件,客户端可以获取到:服务器发送源文件时存储的各个分片的版本信息。
[0084]202、客户端对源文件进行操作,并对源文件的版本信息进行更新。
[0085]在本发明实施例中,服务器根据客户端的请求向客户端发送源文件之后,客户端通过与服务器之间的通信连接接收该源文件,客户端接收到源文件之后,客户端可根据操作用户的指示对源文件进行操作,例如,客户端在源文件中新增加内容,或者修改源文件中的内容等。客户端对源文件进行操作时,还需要对源文件的版本信息进行更新,客户端接收到源文件时从源文件中获取到该源文件的原版本信息,即服务器向客户端发送源文件时在服务器中存储的版本信息,客户端将获取到的源文件的版本信息作为基础,对上述版本信息进行更新,在客户端操作过的源文件中携带更新前的版本信息和更新后的版本信息,客户端向服务器发送该客户端操作过的源文件,服务器可接收到客户端发送的操作过的源文件。例如,若服务器中当前存储的源文件的版本信息为N时,客户端对上述源文件进行操作,并更新版本信息N为N+1,客户端在操作过的源文件中携带更新前的版本信息N以及更新后的版本信息N+1。
[0086]在本发明的一些实施例中,本发明实施例提供的基于分布式文件系统的处理方法中若客户端接收到的源文件包括有多个分片,步骤202中客户端对源文件进行操作,具体可以包括:客户端按照写指令对源文件中的至少一个分片进行操作。步骤202中对源文件的版本信息进行更新,包括:客户端对操作过的至少一个分片对应的版本信息进行更新。
[0087]也就是说,若客户端接收到的源文件中包括有多个分片,用户可以下发写指令指示客户端按照写指令对源文件中的至少一个分片进行操作。例如客户端接收到的源文件包含3个分片(分别为分片1、分片2、分片3),客户端可按照写指令的要求对只对分片I和分片2进行操作,而分片3维持不变。
[0088]具体的,步骤202客户端对源文件进行操作,具体可以包括如下步骤:
[0089]客户端对源文件进行修改;和/或,
[0090]客户端对源文件进行删除;和/或,
[0091 ] 客户端对源文件进行新内容的增加。
[0092]例如,客户端按照写指令将源文件中的某个内容进行修改,或者删除源文件中的某个内容,或者在源文件的某个内容中增加新的内容。其中客户端对源文件执行何种操作,以及对源文件中哪个内容进行操作取决于具体的应用场景,此处不做限定。
[0093]203、客户端向服务器发送客户端操作过的源文件,客户端端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息。
[0094]在本发明实施例中,客户端生成操作过的源文件之后,客户端向服务器发送客户端操作过的源文件,服务器从客户端操作过的源文件中可以获取到客户端操作了源文件中的哪些内容以及更新前与更新后的版本信息。
[0095]在本发明实施例的一些实施例中,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,客户端执行完步骤203之后就可以完成向服务器中写源文件,若客户端更新前的版本信息与服务器中当前存储的版本信息不相同,本发明实施例提供的基于分布式文件系统的处理方法还可以包括如下步骤:
[0096]B1、客户端接收服务器发送的冲突信息,冲突信息包括:服务器中当前存储的版本信息对应的源文件;
[0097]B2、客户端将服务器中当前存储的版本信息对应的源文件与客户端操作过的源文件进行融合,得到客户端重新操作过的源文件,并将重新操作过的源文件的版本信息进行重新更新,客户端重新操作过的源文件的重新更新前的版本信息为从冲突信息中提取到的源文件的版本信息;
[0098]B3、客户端向服务器发送客户端重新操作过的源文件,客户端端重新操作过的源文件包括:客户端重新更新前的版本信息和客户端重新更新后的版本信息。
[0099]对于步骤BI而言,在服务器判断客户端更新前的版本信息与服务器中当前存储的版本信息不相同的情况下,客户端保存源文件到服务器中失败,客户端需要保存的源文件与服务器中存储的源文件有冲突,服务器生成冲突信息,冲突信息用于表示客户端无法将源文件保存到服务器中时存在冲突的文件内容,服务器将服务器中当前存储的版本信息对应的源文件发送给客户端。然后客户端执行步骤B2,客户端将服务器中当前存储的版本信息对应的源文件与客户端操作过的源文件进行融合,得到客户端重新操作过的源文件,并将重新操作过的源文件的版本信息进行重新更新,客户端重新操作过的源文件的重新更新前的版本信息为从冲突信息中提取到的源文件的版本信息。其中,客户端可以根据业务特性,采用不同的冲突融合策略,在服务器发送的当前源文件基础上把该客户端需要操作的文件内容重新执行一遍,并对源文件的版本信息进行重新更新。
[0100]需要说明的是,在前述步骤BI中,冲突信息具体可以包括:服务器中与客户端重新更新前的版本信息不同的版本信息对应的源文件的分片。在这种实现场景下,步骤B2中客户端将服务器中当前存储的版本信息对应的源文件与客户端操作过的源文件进行融合,得到客户端重新操作过的源文件,具体可以包括如下步骤:客户端将从冲突信息中提取到的分片与客户端操作过的源文件中的对应分片进行内容合并,得到客户端重新操作过的源文件。通过对源文件的分片,可以降低服务器发送源文件的数据量,只需要将存在冲突的分片通过冲突信息发送给客户端,客户端也只需要下载存在冲突的分片而无需下载整个源文件,客户端在进行融合时,也只需将存在冲突的分片进行融合,故可以降低服务器和客户端之间交互的数据流量以及客户端融合的数据量。
[0101]通过以上实施例对本发明的描述可知,客户端从服务器获取源文件,源文件包括:服务器发送源文件时存储的版本信息,客户端对源文件进行操作后向服务器发送客户端操作过的源文件,客户端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息,服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。由于服务器向客户端发送的源文件提供有版本信息,客户端操作过源文件后提供更新前和更新后的版本信息,服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
[0102]为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
[0103]以分布共享文件系统中源文件的处理为例,存在对相同数据的并发写操作,如没有有效的机制保证,可能使得数据丢失的情况,无法保证数据的有效性,无法进行有效的多用户进行分布文件共享以及冲突融合,本发明提供的方法利用文件切片,切片版本条件更新等手段,有效降低发生冲突时需要下载的数据流量,本发明提供数据版本冲突检测识别机制,有效提高分布式协助/共享效率。
[0104]首先对本发明实施例中服务器在数据库中存储的源文件进行举例,请参阅如图3_a所示,为本发明实施例中数据库中存储的源文件的存储结构示意图。源文件存储的结构包含一下几个方面:
[0105]I)、文件头部(英文名称head):包含文件长度(用tlen表示),分片个数信息(用num表示),最大文件块id(用maxid表示),每个文件块为一个分片。其中最大文件id在客户端新生成文件块时需要使用的,该值每次生成后可不断变化。
[0106]2)、文件版本向量(vers1n vector, vv):维护了每个分片的版本号(vers),长度(Ien),分片 id。
[0107]3)、版本号是随着客户端每次修改而自增加的。
[0108]4)、文件分片数据:包含多个分片,图中所不的分片为s1、s2...、sn。
[0109]请参阅如图3-b所示,为本发明实施例中两个客户端对源文件的并行操作示意图。服务器管理的数据库中源文件共有η个分片,分别为sl、s2…、sn,客户端I请求到的文件副本为源文件1,客户端2请求到的文件副本为源文件2,两个客户端发起对源文件并行修改,客户端I获取源文件后,修改了 Si,删除了 s2,增加了 s4,并提交修改成功。客户端2在客户端I提交操作过的源文件之前,拉取了源文件,并修改s2,尝试提交,提交失败后,服务器为客户端2提供冲突信息,客户端2下载冲突的分片后,本地做冲突融合,再次提交后成功。
[0110]请参阅如图3-C所示,为两个客户端件进行源文件并发操作时与服务器的交互流程视图,包含一个完整的协作过程:
[0111]SO1、下载源文件,包括版本信息以及头部。
[0112]客户端I和客户端2分别从服务器下载到源文件,客户端I和客户端2根据从服务器获取到的源文件可以确定本次操作的基础版本信息是什么,操作时源文件文件的状态是怎么样的。
[0113]S02、对源文件的操作。
[0114]客户端I和客户端2对源文件的操作,可以分解为以下几种操作的组合,相当于产生操作列表:
[0115]I)、新增文件分片,根据文件元信息maxid,文件块id自增,插入版本列表。
[0116]2)、修改文件分片,文件块id不变,对应文件块id的版本号自增。
[0117]3)、删除文件分片,删除对应版本。
[0118]例如,客户端1,修改了 Si,删除了 s2,增加了 s4,那么在提交时操作列表:
[0119]修改列表:[id(sl), vers1n (sl), len(sl)];
[0120]新增列表:[id(s4), vers1n (s4), Ien (s4)];
[0121]删除列表:[id(s2),ver1n (s2), Ien (s2) ] 0
[0122]S03、源文件的版本判断以及更新。
[0123]客户端I对源文件操作之后,向服务器提交客户端I操作过的源文件,客户端I操作过的源文件:客户端修改/增加的文件分片,更新后的版本信息以及修改的基础版本信息。服务器根据基础版本信息,判断是否允许修改。如修改的基础版本信息一致,则修改成功。否则返回修改失败,以及冲突信息。
[0124]服务器生成的冲突信息由以下组成,通过条件版本信息与当前版本信息的冲突,输出以下列表:
[0125]I)、新增的文件分片id,位置以及版本号。
[0126]2)、修改的文件分片id,位置以及版本号。
[0127]3)、删除的文件分片id。
[0128]对于客户端2,客户端2在客户端I提交源文件之前也拉取了同一份源文件,客户端2对源文件操作之后,向服务器提交客户端2操作过的源文件,客户端2操作过的源文件:客户端修改/增加的文件分片,更新后的版本信息以及修改的基础版本信息。当客户端2提交的时候,由于客户端I先提交了,条件版本信息与数据服务器不一致,服务器中存储的源文件是客户端I操作过的源文件,即修改过Si,删除了 s2,新增了 s4,当客户端2提交时,服务器返回冲突列表,包括发生冲突的版本信息以及对应的文件分片。
[0129]S04、最小冲突信息下载。
[0130]客户端2在修改失败后,从服务器得到冲突信息,通过冲突信息,客户端2可以获取到发生冲突的分片id,版本号,客户端拉取缺失的文件数据,例如,客户端2获取到客户端I操作过的分片sl和s4。客户端2将从冲突信息中获取到的冲突分片与客户端2的操作进行融合,得到服务器的当前数据情况,以及对应版本号。从上面举例可知,如果文件分片小,冲突的概率变大,需要维护的冲突量大,计算复杂度上升,但冲突时下载流量下降。如文件分片太大,冲突概率小,计算复杂度下降,但下载冗余度上升,具体选择与业务场景有关。
[0131]需要说明的是,客户端2可以根据业务特性,采用不同的冲突融合策略,把修改内容重新执行一遍,按照修改方式重新生成版本信息和文件分片,重新提交,如继续冲突,重复步骤S02至步骤S04,客户端2下载最小冲突信息后,客户端2相当于在最新的数据上修改,需要从服务器获取到的冲突分片与客户端2操作过的冲突分片,根据业务策略进行融合,具体的,客户端2需要根据业务策略作出如下选择:l)sl的修改冲突选择,2) s2是否重新融合进去,3) s4是否保留。其中,具体冲突融合策略与业务相关,本发明不对具体的融合策略进行限定。例如,如在线文档,客户端2可根据冲突内容提供用差分内容,冲突时提供用户融合选择。
[0132]通过以上对本发明的举例说明可知,本发明可利用少量的冗余信息,版本向量描述,文件信息等元信息,进行冲突识别,冲突定位,在维护数据有效性的同时,降低了上传/下载流量,适合于分布式协助共享场景或者文件索引并发修改场景。有效降低数据上传/下载冲突,提供多副本的融合更新方法。
[0133]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0134]为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
[0135]请参阅图4-a所示,本发明实施例提供的一种服务器400,可以包括:发送模块
401、接收模块402、版本识别模块403、存储模块404,其中,
[0136]发送模块401,用于向客户端发送源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0137]接收模块402,用于接收所述客户端操作过的源文件,所述客户端操作过的源文件,包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息;
[0138]版本识别模块403,用于判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同;
[0139]存储模块404,用于若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息。
[0140]在本发明的一些实施例中,请参阅如图4-b所示,所述服务器400还包括:分片管理模块405,用于所述发送模块401向客户端发送源文件之前,将所述服务器中存储的源文件进行分片,并对源文件的每个分片设置版本信息;
[0141]所述发送模块401,具体用于向客户端发送包含多个分片的源文件,所述服务器发送的源文件包括:所述服务器发送所述源文件时存储的各个分片的版本信息。
[0142]在本发明的一些实施例中,所述版本识别模块403,具体用于判断所述客户端更新前的源文件中每个分片的版本信息是否与所述服务器中当前存储的对应分片的版本信息相同,其中,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同具体为:所述客户端更新前的源文件中每个分片的版本信息与所述服务器中当前存储的对应分片的版本信息都相同。
[0143]在本发明的一些实施例中,所述存储模块404,具体用于将所述客户端操作过的至少一个分片替换所述服务器中当前存储的对应分片。
[0144]在本发明的一些实施例中,所述存储模块404,具体用于将所述客户端操作过的至少一个分片的更新后的版本信息替换所述服务器中当前存储的对应分片的版本信息。
[0145]在本发明的一些实施例中,所述发送模块401,还用于所述版本识别模块判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同之后,若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不相同,向所述客户端发送冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件;
[0146]所述接收模块402,还用于接收所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息;
[0147]所述版本识别模块403,还用于判断所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息是否相同;
[0148]所述存储模块404,还用于若所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息相同,将所述客户端重新操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端重新更新后的版本信息替换所述服务器中当前存储的版本信息。
[0149]在本发明的一些实施例中,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不同具体为:所述客户端更新前的源文件中至少有一个分片的版本信息与所述服务器中当前存储的对应分片的版本信息不同;
[0150]所述冲突信息包括:所述服务器中与所述客户端更新前的版本信息不同的版本信息对应的源文件的分片。
[0151]通过以上实施例对本发明的描述可知,服务器向客户端发送源文件,源文件包括:服务器发送源文件时存储的版本信息,客户端对源文件进行操作后向服务器发送客户端操作过的源文件,客户端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息,服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。由于服务器向客户端发送的源文件提供有版本信息,客户端操作过源文件后提供更新前和更新后的版本信息,服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
[0152]请参阅图5所示,本发明实施例提供的一种客户端500,可以包括:接收模块501、操作模块502、发送模块503,其中,
[0153]接收模块501,用于从服务器获取源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息;
[0154]操作模块502,用于对所述源文件进行操作,并对所述源文件的版本信息进行更新;
[0155]发送模块503,用于向所述服务器发送所述客户端操作过的源文件,所述客户端端操作过的源文件包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息。
[0156]在本发明的一些实施例中,所述操作模块502,具体用于按照写指令对所述源文件中的至少一个分片进行操作;对操作过的至少一个分片对应的版本信息进行更新。
[0157]在本发明的一些实施例中,所述接收模块501,还用于所述发送模块503向所述服务器发送所述客户端操作过的源文件之后,接收所述服务器发送的冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件;
[0158]所述操作模块502,还用于将所述服务器中当前存储的版本信息对应的源文件与所述客户端操作过的源文件进行融合,得到所述客户端重新操作过的源文件,并将所述重新操作过的源文件的版本信息进行重新更新,所述客户端重新操作过的源文件的重新更新前的版本信息为从所述冲突信息中提取到的源文件的版本信息;
[0159]所述发送模块503,还用于向所述服务器发送所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息。
[0160]在本发明的一些实施例中,所述冲突信息包括:所述服务器中与所述客户端重新更新前的版本信息不同的版本信息对应的源文件的分片;
[0161]所述操作模块502,具体用于将从所述冲突信息中提取到的分片与所述客户端操作过的源文件中的对应分片进行内容合并,得到所述客户端重新操作过的源文件。
[0162]通过以上实施例对本发明的描述可知,客户端从服务器获取源文件,源文件包括:服务器发送源文件时存储的版本信息,客户端对源文件进行操作后向服务器发送客户端操作过的源文件,客户端操作过的源文件包括:客户端更新前的版本信息和客户端更新后的版本信息,服务器判断客户端更新前的版本信息是否与服务器中当前存储的版本信息相同,若客户端更新前的版本信息与服务器中当前存储的版本信息相同,服务器将客户端操作过的源文件替换服务器中当前存储的版本信息对应的源文件,并将客户端更新后的版本信息替换服务器中当前存储的版本信息。由于服务器向客户端发送的源文件提供有版本信息,客户端操作过源文件后提供更新前和更新后的版本信息,服务器根据客户端发送的源文件中携带的更新前的版本信息判断是否与服务器中当前存储的版本信息相同,即服务器需要确认客户端对源文件进行操作的基础版本信息,以避免服务器在存储本客户端发送的源文件之前已经有另一客户端操作过源文件,保证服务器中存储的源文件在并发操作时的文件可靠性,所以通过简单的文件版本信息更新与检测就可以完全应用于分布式文件系统,不需要再依靠写权利租用机制,有效提高分布式文件系统的效率。
[0163]图6是本发明实施例提供的基于分布式文件系统的处理方法应用于服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU) 622 (例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630 (例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。
[0164]服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口 650,一个或一个以上输入输出接口 658,和/或,一个或一个以上操作系统641,例如Windows ServerTM, Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM 等等。
[0165]上述实施例中由服务器所执行的步骤可以基于该图4-a和图4-b所示的服务器结构。
[0166]以下主要以本发明实施例的基于分布式文件系统的处理方法应用于终端中来举例说明,本发明实施例还提供了另一种终端,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、P0S (Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
[0167]图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(Rad1 Frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源770等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0168]下面结合图7对手机的各个构成部件进行具体的介绍:
[0169]RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier, LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communicat1n,GSM)、通用分组无线服务(General PacketRad1 Service,GPRS)、码分多址(Code Divis1n Multiple Access,CDMA)、宽带码分多址(Wideband Code Divis1n Multiple Access, WCDMA)、长期演进(Long Term Evolut1n,LTE)、电子邮件、短消息服务(Short Messaging Service, SMS)等。
[0170]存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0171]输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0172]显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,IXD)、有机发光二极管(Organic Light-Emitting D1de, 0LED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
[0173]手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0174]音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
[0175]WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0176]处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
[0177]手机还包括给各个部件供电的电源770 (比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0178]尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0179]在本发明实施例中,该终端所包括的处理器780还具有控制执行以上由客户端执行的方法流程。
[0180]另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0181]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0182]综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种基于分布式文件系统的处理方法,其特征在于,包括: 服务器向客户端发送源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息; 所述服务器接收所述客户端操作过的源文件,所述客户端操作过的源文件,包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息; 所述服务器判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同; 若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息。2.根据权利要求1所述的方法,其特征在于,所述服务器向客户端发送源文件之前,所述方法还包括: 所述服务器将所述服务器中存储的源文件进行分片,并对源文件的每个分片设置版本信息; 所述服务器向客户端发送源文件,具体为: 所述服务器向客户端发送包含多个分片的源文件,所述服务器发送的源文件包括:所述服务器发送所述源文件时存储的各个分片的版本信息。3.根据权利要求2所述的方法,其特征在于,所述服务器判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同,包括: 所述服务器判断所述客户端更新前的源文件中每个分片的版本信息是否与所述服务器中当前存储的对应分片的版本信息相同,其中,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同具体为:所述客户端更新前的源文件中每个分片的版本信息与所述服务器中当前存储的对应分片的版本信息都相同。4.根据权利要求2或3所述的方法,其特征在于,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,包括: 所述服务器将所述客户端操作过的至少一个分片替换所述服务器中当前存储的对应分片。5.根据权利要求2或3所述的方法,其特征在于,所述将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息,包括: 将所述客户端操作过的至少一个分片的更新后的版本信息替换所述服务器中当前存储的对应分片的版本信息。6.根据权利要求1至3中任一项所述的方法,其特征在于,所述服务器判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同之后,所述方法还包括: 若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不相同,所述服务器向所述客户端发送冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件; 所述服务器接收所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息; 所述服务器判断所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息是否相同; 若所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端重新操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端重新更新后的版本信息替换所述服务器中当前存储的版本信息。7.根据权利要求6所述的方法,其特征在于,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不同具体为:所述客户端更新前的源文件中至少有一个分片的版本信息与所述服务器中当前存储的对应分片的版本信息不同; 所述冲突信息包括:所述服务器中与所述客户端更新前的版本信息不同的版本信息对应的源文件的分片。8.一种基于分布式文件系统的处理方法,其特征在于,包括: 客户端从服务器获取源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息; 所述客户端对所述源文件进行操作,并对所述源文件的版本信息进行更新; 所述客户端向所述服务器发送所述客户端操作过的源文件,所述客户端端操作过的源文件包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息。9.根据权利要求8所述的方法,其特征在于,所述客户端对所述源文件进行操作,包括: 所述客户端按照写指令对所述源文件中的至少一个分片进行操作; 所述对所述源文件的版本信息进行更新,包括: 所述客户端对操作过的至少一个分片对应的版本信息进行更新。10.根据权利要求8或9所述的方法,其特征在于,所述客户端向所述服务器发送所述客户端操作过的源文件之后,所述方法还包括: 所述客户端接收所述服务器发送的冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件; 所述客户端将所述服务器中当前存储的版本信息对应的源文件与所述客户端操作过的源文件进行融合,得到所述客户端重新操作过的源文件,并将所述重新操作过的源文件的版本信息进行重新更新,所述客户端重新操作过的源文件的重新更新前的版本信息为从所述冲突信息中提取到的源文件的版本信息; 所述客户端向所述服务器发送所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息。11.根据权利要求10所述的方法,其特征在于,所述冲突信息包括:所述服务器中与所述客户端重新更新前的版本信息不同的版本信息对应的源文件的分片; 所述客户端将所述服务器中当前存储的版本信息对应的源文件与所述客户端操作过的源文件进行融合,得到所述客户端重新操作过的源文件,包括: 所述客户端将从所述冲突信息中提取到的分片与所述客户端操作过的源文件中的对应分片进行内容合并,得到所述客户端重新操作过的源文件。12.一种服务器,其特征在于,包括: 发送模块,用于向客户端发送源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息; 接收模块,用于接收所述客户端操作过的源文件,所述客户端操作过的源文件,包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息; 版本识别模块,用于判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同; 存储模块,用于若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同,所述服务器将所述客户端操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端更新后的版本信息替换所述服务器中当前存储的版本信息。13.根据权利要求12所述的服务器,其特征在于,所述服务器还包括:分片管理模块,用于所述发送模块向客户端发送源文件之前,将所述服务器中存储的源文件进行分片,并对源文件的每个分片设置版本信息; 所述发送模块,具体用于向客户端发送包含多个分片的源文件,所述服务器发送的源文件包括:所述服务器发送所述源文件时存储的各个分片的版本信息。14.根据权利要求13所述的服务器,其特征在于,所述版本识别模块,具体用于判断所述客户端更新前的源文件中每个分片的版本信息是否与所述服务器中当前存储的对应分片的版本信息相同,其中,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息相同具体为:所述客户端更新前的源文件中每个分片的版本信息与所述服务器中当前存储的对应分片的版本信息都相同。15.根据权利要求13或14所述的服务器,其特征在于,所述存储模块,具体用于将所述客户端操作过的至少一个分片替换所述服务器中当前存储的对应分片。16.根据权利要求13或14所述的服务器,其特征在于,所述存储模块,具体用于将所述客户端操作过的至少一个分片的更新后的版本信息替换所述服务器中当前存储的对应分片的版本信息。17.根据权利要求12至14中任一项所述的服务器,其特征在于, 所述发送模块,还用于所述版本识别模块判断所述客户端更新前的版本信息是否与所述服务器中当前存储的版本信息相同之后,若所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不相同,向所述客户端发送冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件; 所述接收模块,还用于接收所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息; 所述版本识别模块,还用于判断所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息是否相同; 所述存储模块,还用于若所述客户端重新更新前的版本信息与所述服务器中当前存储的版本信息相同,将所述客户端重新操作过的源文件替换所述服务器中当前存储的版本信息对应的源文件,并将所述客户端重新更新后的版本信息替换所述服务器中当前存储的版本信息。18.根据权利要求17所述的服务器,其特征在于,所述客户端更新前的版本信息与所述服务器中当前存储的版本信息不同具体为:所述客户端更新前的源文件中至少有一个分片的版本信息与所述服务器中当前存储的对应分片的版本信息不同; 所述冲突信息包括:所述服务器中与所述客户端更新前的版本信息不同的版本信息对应的源文件的分片。19.一种客户端,其特征在于,包括: 接收模块,用于从服务器获取源文件,所述源文件包括:所述服务器发送所述源文件时存储的版本信息; 操作模块,用于对所述源文件进行操作,并对所述源文件的版本信息进行更新; 发送模块,用于向所述服务器发送所述客户端操作过的源文件,所述客户端端操作过的源文件包括:所述客户端更新前的版本信息和所述客户端更新后的版本信息。20.根据权利要求19所述的客户端,其特征在于,所述操作模块,具体用于按照写指令对所述源文件中的至少一个分片进行操作;对操作过的至少一个分片对应的版本信息进行更新。21.根据权利要求19或20所述的客户端,其特征在于,所述接收模块,还用于所述发送模块向所述服务器发送所述客户端操作过的源文件之后,接收所述服务器发送的冲突信息,所述冲突信息包括:所述服务器中当前存储的版本信息对应的源文件; 所述操作模块,还用于将所述服务器中当前存储的版本信息对应的源文件与所述客户端操作过的源文件进行融合,得到所述客户端重新操作过的源文件,并将所述重新操作过的源文件的版本信息进行重新更新,所述客户端重新操作过的源文件的重新更新前的版本信息为从所述冲突信息中提取到的源文件的版本信息; 所述发送模块,还用于向所述服务器发送所述客户端重新操作过的源文件,所述客户端端重新操作过的源文件包括:所述客户端重新更新前的版本信息和所述客户端重新更新后的版本信息。22.根据权利要求21所述的客户端,其特征在于,所述冲突信息包括:所述服务器中与所述客户端重新更新前的版本信息不同的版本信息对应的源文件的分片; 所述操作模块,具体用于将从所述冲突信息中提取到的分片与所述客户端操作过的源文件中的对应分片进行内容合并,得到所述客户端重新操作过的源文件。
【文档编号】H04L29/08GK105871955SQ201510031539
【公开日】2016年8月17日
【申请日】2015年1月21日
【发明人】黄楚加
【申请人】深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1