一种分布式存储系统中的数据更新方法及装置制造方法及图纸

技术编号:9143168 阅读:155 留言:0更新日期:2013-09-12 04:42
本发明专利技术公开了一种分布式存储系统中的数据更新方法及装置,该方法包括:当前服务器节点为待更新数据递增分配唯一的版本号,并从元数据信息存储库中获取所述待更新数据的多个副本所在的多个副本服务器节点标识;当前服务器节点将待更新数据及其分配的版本号发送给所述多个副本服务器节点标识对应的副本服务器节点,以便所述多个副本服务器节点依据所述待更新数据分别对各自保存的副本及对应的版本号进行更新;所述版本号表示所述副本的更新次数;当前服务器节点判断是否至少超过一半的所述多个副本服务器节点更新数据成功,如果是,则向客户端返回数据更新成功消息及更新后的版本号。采用本发明专利技术实施例的增加开销且能保证多个副本之间的数据一致性。

【技术实现步骤摘要】
一种分布式存储系统中的数据更新方法及装置
本专利技术涉及分布式系统领域,更具体的说,是涉及一种分布式存储系统中的数据更新方法及装置。
技术介绍
分布式存储系统,就是将数据分散存储在多台独立的设备上。更具体的可以包括分布式文件系统、分布式数据库、分布式半结构化存储系统、分布式块存储系统等等,这些系统面向不同的存储应用,各自有不同的访问模式,在很多场合并不能相互替换使用。同时这些系统也存在很多相同或相似的地方,例如:副本的分布信息定位,副本的更新维护,服务器节点的信息维护与管理等等。这里的副本指的是数据在不同服务器节点上的拷贝数据。现有技术中,常见的分布式系统对于多副本的数据进行更新一般可以采用强一致方式,即是等某个数据对应的所有副本都更新成功才算数据更新成功,当有副本更新失败,立即在其它服务器节点上新建副本并完成更新。或者也可以采用超过半数的多写多读方式,即对于数据写入,要求超过半数的副本都写入成功才能向客户端返回成功消息,相应的数据读取也需要同时对多个副本进行读取,然后将超过半数且一致的数据作为最终结果。然而,现有技术中的上述方法,在分布式存储系统异常的情况下,就也要求数据必须切分的足够细,即是每一个副本都比较小才能随时新建一个副本,这对于分布式存储系统来讲不具有通用性,而如果采用超过半数的多写多读方式,又会增加数据更新的开销,不能保证数据多个副本之间的一致性,会降低分布式存储系统的性能。
技术实现思路
有鉴于此,本专利技术提供了一种分布式存储系统中的数据更新方法及装置,以克服现有技术中在进行数据更新时会增加开销且不能保证多个副本之间的数据一致性的问题。为实现上述目的,本专利技术提供如下技术方案:一种分布式存储系统中的数据更新方法,其特征在于,包括:当前服务器节点接收客户端发送的待更新数据;当前服务器节点为所述待更新数据递增分配唯一的版本号,并从元数据信息存储库中获取所述待更新数据的多个副本所在的多个副本服务器节点标识;所述元数据信息存储库保存有所述分布式存储系统中的各个服务器节点标识,副本在服务器节点中的分布信息及副本的状态;当前服务器节点将待更新数据及其分配的版本号发送给所述多个副本服务器节点标识对应的副本服务器节点,以便所述多个副本服务器节点依据所述待更新数据分别对各自保存的副本及对应的版本号进行更新;所述版本号表示所述副本的更新次数;当前服务器节点判断是否至少超过一半的所述多个副本服务器节点更新数据成功,如果是,则向客户端返回数据更新成功消息及更新后的版本号。优选的,还包括:当前服务器节点缓存所述待更新数据,并在所述多个副本服务器节点全部更新完毕后,删除所述待更新数据。优选的,还包括:副本服务器节点接收所述客户端在读取数据时携带的版本号;副本服务器节点判断所述携带的版本号是否比自身存储的副本的版本号更新,如果是,则拒绝本次数据读取操作。优选的,还包括:当前服务器节点重启时,向所述多个副本服务器节点发送请求以获取所述副本服务器节点对应的最新的版本号。优选的,还包括:当前服务器节点将副本的初始版本号更新为所述最新的版本号,以便后续以最近更新的版本号为起始版本号分配待更新数据。优选的,还包括:比较所述多个副本服务器节点所保存的多个副本的多个版本号,如果存在版本号比其他副本服务器节点的版本号小的副本服务器节点,则触发版本号较小的副本服务器节点向版本号较大的副本服务器节点请求较大的版本号对应的副本。一种分布式存储系统中的数据更新装置,包括:元数据信息存储库,用于存储所述分布式存储系统中的各个服务器节点标识,副本在服务器节点中的分布信息及副本的状态;接收待更新数据模块,用于接收客户端发送的待更新数据;分配模块,用于为所述待更新数据递增分配唯一的版本号;获取模块,用于从所述元数据信息存储库中获取所述待更新数据的多个副本所在的多个副本服务器节点标识;发送模块,用于将待更新数据及其分配的版本号发送给所述多个副本服务器节点标识对应的副本服务器节点,以便所述多个副本服务器节点依据所述待更新数据分别对各自保存的副本及对应的版本号进行更新;所述版本号表示所述副本的更新次数;判断更新模块,用于判断是否至少超过一半的所述多个副本服务器节点更新数据成功,如果是,则触发返回模块;所述返回模块用于向客户端返回数据更新成功消息及更新后的版本号。优选的,还包括:缓存模块,用于缓存所述待更新数据;删除模块,用于在所述多个副本服务器节点全部更新完毕后,删除所述待更新数据。优选的,还包括:接收版本号模块,用于接收所述客户端在读取数据时携带的版本号;判断版本号模块,用于判断所述携带的版本号是否比自身存储的副本的版本号更新,如果是,则拒绝本次数据读取操作。优选的,还包括:发送请求模块,用于在当前服务器节点重启时,向所述多个副本服务器节点发送请求以获取所述多个副本服务器节点对应的最新的版本号。优选的,还包括:更新版本号模块,用于将副本的初始版本号更新为所述最新的版本号,以便后续以最近更新的版本号为起始版本号分配待更新数据。优选的,还包括:比较模块,用于比较所述多个副本服务器节点所保存的多个副本的多个版本号;触发模块,用于如果存在版本号比其他副本服务器节点的版本号小的副本服务器节点,则触发版本号较小的副本服务器节点向版本号较大的副本服务器节点请求较大的版本号对应的副本。经由上述的技术方案可知,与现有技术相比,本专利技术公开的分布式存储系统中的数据更新方法及装置,通过对数据进行更新时在至少超过一半副本服务器节点更新成功时就认为更新成功,这样就可以提高更新数据的效率。同时,还采用数据的版本号与更新次数对应的方案,这样后续在读取时带有已写成功的版本号向服务器节点请求数据时,如果服务器节点的版本号表示自身存的副本不是最新的,就可以拒绝本次读取操作,这样就能保证客户端可以向其它服务器节点重试,以保证客户端能读到最新的数据,即是实现读写一致性。因此,本实施例更为完善的解决多副本之间数据一致性的问题,并保证后续的读取性能,并且本专利技术实施例提供的解决方案可直接应用于多种存储系统中。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例公开的分布式存储系统中的数据更新方法实施例1的流程图;图2为本专利技术实施例公开的分布式存储系统中的数据更新方法实施例2的流程图;图3为本专利技术实施例公开的分布式存储系统中的数据更新装置实施例1的结构示意图;图4为本专利技术实施例公开的分布式存储系统中的数据更新装置实施例2的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例一参见图1所示,图1为本专利技术实施例公开的分布式存储系统中的数据更新方法实施例1的流程图,在本实施例中,所述方法可以包括:步骤101:当前服务器节点接收客户端发送的待更新数本文档来自技高网...

【技术保护点】
一种分布式存储系统中的数据更新方法,其特征在于,包括:当前服务器节点接收客户端发送的待更新数据;当前服务器节点为所述待更新数据递增分配唯一的版本号,并从元数据信息存储库中获取所述待更新数据的多个副本所在的多个副本服务器节点标识;所述元数据信息存储库保存有所述分布式存储系统中的各个服务器节点标识,副本在服务器节点中的分布信息及副本的状态;当前服务器节点将待更新数据及其分配的版本号发送给所述多个副本服务器节点标识对应的副本服务器节点,以便所述多个副本服务器节点依据所述待更新数据分别对各自保存的副本及对应的版本号进行更新;所述版本号表示所述副本的更新次数;当前服务器节点判断是否至少超过一半的所述多个副本服务器节点更新数据成功,如果是,则向客户端返回数据更新成功消息及更新后的版本号。

【技术特征摘要】
1.一种分布式存储系统中的数据更新方法,其特征在于,包括:当前服务器节点接收客户端发送的待更新数据;当前服务器节点为所述待更新数据递增分配唯一的版本号,并从元数据信息存储库中获取所述待更新数据的多个副本所在的多个副本服务器节点标识;所述元数据信息存储库保存有所述分布式存储系统中的各个服务器节点标识,副本在服务器节点中的分布信息及副本的状态;当前服务器节点将待更新数据及其分配的版本号发送给所述多个副本服务器节点标识对应的副本服务器节点,以便所述多个副本服务器节点依据所述待更新数据分别对各自保存的副本及对应的版本号进行更新;以及,在客户端需要对当前服务器节点进行数据读取操作,且客户端将本次需要读取的数据的版本号携带给副本服务器节点时,所述副本服务器判断所述携带的版本号是否比自身存储的副本的版本号更新,如果是,则拒绝本次数据读取操作;如果否,则接受本次数据读取操作;所述版本号表示所述副本的更新次数;当前服务器节点判断是否至少超过一半的所述多个副本服务器节点更新数据成功,如果是,则向客户端返回数据更新成功消息及更新后的版本号;当前服务器节点重启时,向所述多个副本服务器节点发送请求以获取所述副本服务器节点对应的最新的版本号;当前服务器节点将副本的初始版本号更新为所述最新的版本号,以便后续以最近更新的版本号为起始版本号分配待更新数据;比较所述多个副本服务器节点所保存的多个副本的多个版本号,如果存在版本号比其他副本服务器节点的版本号小的副本服务器节点,则触发版本号较小的副本服务器节点向版本号较大的副本服务器节点请求较大的版本号对应的副本。2.根据权利要求1所述的方法,其特征在于,还包括:当前服务器节点缓存所述待更新数据,并在所述多个副本服务器节点全部更新完毕后,删除所述待更新数据。3.一种分布式存储系统中的数据更新装置,其特征在于,包括:元数据...

【专利技术属性】
技术研发人员:李黄海王旭
申请(专利权)人:上海盛霄云计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1