分布式存储系统及其时间戳的实现方法

文档序号:7687978阅读:123来源:国知局
专利名称:分布式存储系统及其时间戳的实现方法
技术领域
本发明涉及云计算技术领域,尤其涉及一种分布式存储系统及其时间戳的实现方法。
背景技术
云计算(Cloud Computing)是网格计算(G rid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式存储系统是云计算范畴中的一个领域,其作用是提供海量数据的分布式存储服务以及高速读写访问的能力。在分布式存储系统中,时间戳的实现是比较难以解决的关键问题。分布式存储系统是由若干服务器节点和客户端互相连接构成的;服务器节点负责数据的存储,客户端可以对服务器做数据的写入、读取、更新、删除等操作。一般来说写入的数据不可能只保存在单个服务器节点上,而是在多台服务器节点上保存同一个数据的副本,互为备份。当网络偶然瞬间故障或者硬件、软件故障,或者用户对同一个数据频繁、交叉地进行不同的操作,例如,更新、删除等,则系统内不同服务器节点上的数据副本会有不同的值。当用户再次获取该数据时,会发生取得的数据不是其最后更新后的值,背离了用户的需求。为了保障在分布式存储系统中,用户取得的数据是其最后更新的数据,即保障分布式存储系统中数据的一致性,每个数据在实际存储时,还要加上一些属性信息。例如,时间戳。这样用户在获取数据的时候,可以根据时间戳的大小,返回一个最大时间戳的数据给用户。所谓分布式存储系统中的时间戳是指系统中每个服务器节点都维持的一个反应该分布式存储系统存活时间的数据。在任一时刻,系统中每个服务器节点的时间戳必须相同,而且随着实际时间的增加,逐步递增。在现有的分布式存储系统中,时间戳的实现有以下几种方法一在系统中选定一个服务器节点作为时间服务器,由该时间服务器周期性地向系统中的其它服务器节点广播其维护的时间戳,其它服务器节点收到携带有时间戳的数据包后,更新其本地时间戳。这种方法是一个中心化的解决方法,其可靠性依赖于系统中的时间服务器的可靠性,如果时间服务器宕机,则影响到整个系统的时间戳;而且,普通服务器节点中更新的时间戳,是没有计算数据包在网络中传输的时间的,也就是说,普通服务器节点的时间戳与时间服务器的时间戳之间存在微小的时差。另外,这种方法一旦时间服务器发送故障,则整个系统将无法正确更新时间戳。方法二 由系统中的每个服务器节点从Internet中的网络时间协议(NetworkTime Protocol, NTP)时间服务器获取权威的时间作为本节点的本地时间戳。这种方法依赖于外界的服务,一般很少采用。

发明内容
本发明的目的是,提供一种分布式存储系统及其时间戳的实现方法,以解决现有基于中心化的实现方法可靠性不高的问题。本发明提供了一种分布式存储系统时间戳的实现方法,包括以下步骤上述系统的每个服务器节点均维护一个本地时间戳;
上述每个服务器节点周期性向系统中的其他服务器节点发送携带有本地维护的当前时间戳的数据包;上述每个服务器节点根据收到的数据包,更新本地时间戳。优选地,上述每个服务器节点的本地维护的时间戳的初始值为0,从上述系统第一次运行起,每秒自增I。优选地,上述每个服务器节点根据收到的数据包,更新本地时间戳步骤具体包括解析收到的数据包,得到时间戳和校验位;判断上述校验位是否正确,若不正确,则不更新本地时间戳,并丢弃上述时间戳;若正确,则保存上述时间戳;判断上述时间戳的值与上一次保存的时间戳的值之差是否在预设的校验阈值范围内,若上述差值不在上述校验阈值范围内,则不更新本地时间戳;若上述差值在上述校验阈值范围内,则判断上述时间戳的值是否大于本地当前时间戳的值,若是,则用上述时间戳更新本地时间戳;否则,不更新本地时间戳。优选地,上述系统中的服务器节点每隔I秒,将本地时间戳持久化到本地存储的文件中。优选地,若上述系统异常终止后又恢复正常运行,则上述每个服务器节点的本地时间戳从其终止前持久化的时间戳处继续计时。优选地,上述方法中,上述服务器节点同一时间仅保存两个时间戳,当有新的时间戳保存进来时,先保存的时间戳自动溢出。优选地,上述校验阈值为上述服务器节点发送携带有时间戳的数据包的周期的I倍到I. 5倍。本发明进一步提供了一种分布式存储系统,包括相互连接的若干个服务器节点,上述服务器节点包括时间戳维护模块、时间戳更新模块,上述时间戳维护模块,用于为本地提供时间戳,并周期性向系统中的其他服务器节点发送携带本地当前时间戳的数据包;上述时间戳更新模块,用于根据收到的数据包,更新上述时间戳维护模块的时间戳。优选地,上述时间戳维护模块,还用于提供设置发送携带有本地当前时间戳的数据包周期的接口,为上述时间戳每秒步进1,且每隔I秒,将上述时间戳持久化到本地存储的文件中;并在系统异常终止后又恢复正常运行时,从终止前持久化的时间戳处继续计时;上述时间戳更新模块,还用于提供设置校验阈值的接口,解析收到的数据包,并判断解析得到的校验位是否正确,以及在上述校验位正确时,保存解析得到的时间戳,并判断上述解析得到的时间戳的值与上一次保存的时间戳的值之差是否在上述校验阈值范围内,并在上述差值在上述校验阈值范围内时,判断上述时间戳的值是否大于上述时间戳维护模块的当前时间戳的值,以及在上述时间戳的值大于上述时间戳维护模块的当前时间戳的值时,用上述时间戳更新上述时间戳维护模块的时间戳。优选地,上述服务器节点还包括时间戳存储模块,用于存储时间戳,并在有新的时间戳存入时,自动溢出先保存的时间戳。本发明通过在每个服务器节点上均维护一个时间戳,且周期性根据其他节点的时间戳更新本地时间戳的方法,保障了系统中每个服务器节点上的时间戳在任一时刻都相同,本发明各服务器节点的时间戳具有非常高的可靠性,是一个非中心化的解决方法,不会 因为系统中某个服务器节点的异常导致全系统时间戳的异常。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是本发明分布式存储系统时间戳的实现方法流程图;图2是本发明分布式存储系统的原理框图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图I所示,是本发明分布式存储系统时间戳的实现方法流程图,包括以下步骤步骤SOOl :分布式存储系统的每个服务器节点均维护一个本地时间戳;各服务器节点每隔I秒将本地时间戳持久化到本地存储的文件中。各服务器节点本地维护的时间戳的初始值均为0,从分布式存储系统第一次运行起,各服务器节点的本地时间戳每秒自增I ;若分布式存储系统异常终止后又恢复正常运行,则各服务器节点的本地时间戳从其终止前持久化的时间戳处继续计时,比如,若终止前,持久化的时间戳的值为120,则系统正常运行后,即从120开始继续计时。步骤S002 :各服务器节点周期性向系统中的其他服务器节点发送携带有本地维护的当前时间戳的数据包;各服务器节点通过系统初始化时建立的长链接向其他服务器节点发送携带有本地维护的当前时间戳的数据包。例如,可以预设各服务器节点每隔60秒发送一次携带有本地时间戳的数据包给系统中的其他服务器节点。
步骤S003 :各服务器节点解析收到的数据包,得到时间戳Tn和校验位;步骤S004 :判断上述解析得到的校验位是否正确,若是,则执行步骤S005 ;否则,执行步骤S009 ;本发明中,当判断出解析得到的校验位错误时,则解析得到的时间戳Tn被丢弃。步骤S005 :保存上述时间戳Tn ;本发明中,各服务器节点同一时间仅保存两个时间戳,当有新的时间戳保存进来时,先保存的时间戳自动溢出。比如,假设当前周期为第N个周期,且其前两个周期的校验位都正确,则在保存第N个周期收到的数据包携 带的时间戳Tn之前,保存的时间戳为第N-2个周期的时间戳TN_2和第N-I个周期的时间戳Tn+当保存第N个周期的时间戳Tn时,则第N-2个周期的时间戳TN_2自动溢出。步骤S006 :判断上述时间戳Tn的值与上一次保存的时间戳Tim的值之差是否在预设的校验阈值范围内,若是,则执行步骤S007 ;否则,执行步骤S009 ;上述校验阈值可设置为本服务器节点发送携带有时间戳的数据包的周期的I倍到I. 5倍,比如,若本服务器节点发送携带有时间戳的数据包的周期为60秒,则校验阈值为60 90。若Tn-Tim不在校验阈值范围内,则表示该数据包在传输过程中发生异常。步骤S007 :判断上述解析得到的时间戳Tn的值是否大于本地维护的当前时间戳的值,若是,则执行步骤S008 ;否则,执行步骤S009 ;步骤S005、S006以及S007有效地保障了各服务器节点上时间戳的一致,抑制了由于携带时间戳的数据包在传输过程中的异常而导致的其他服务器节点的时间戳异常的情况。步骤S008 :用上述时间戳Tn更新本地时间戳,本周期执行结束;步骤S009 :不更新本地时间戳,本周期执行结束。如图2所示,是本发明分布式存储系统的原理框图,本实施例假设分布式存储系统包括3个服务器节点,分别为10、20、30,每个服务器节点均包括时间戳维护模块01、时间戳更新模块02以及时间戳存储模块03,时间戳维护模块01,用于为本地提供时间戳,为上述时间戳每秒步进1,且每隔I秒,将上述时间戳持久化到本地存储的文件中;还用于提供设置发送携带有本地维护的当前时间戳的数据包的周期的接口,并周期性向系统中的其他服务器节点发送携带有本地当前时间戳的数据包,并在系统异常终止后又恢复正常运行时,从终止前持久化的时间戳处继续计时;时间戳更新模块02,提供设置校验阈值的接口,解析收到的数据包,并判断解析得到的校验位是否正确,在上述校验位正确时,将解析得到的时间戳Tn保存到时间戳存储模块03中,并判断上述时间戳Tn的值与上一次保存的时间戳Tim的值之差是否在上述校验阈值范围内,并在上述差值在上述校验阈值范围内时,判断上述时间戳Tn的值是否大于时间戳维护模块01的当前时间戳的值,以及在上述时间戳Tn的值大于时间戳维护模块01的当前时间戳的值时,用上述时间戳Tn更新时间戳维护模块01的时间戳。时间戳存储模块03,用于存储解析得到的时间戳TN,并在有新的时间戳存入时,自动溢出先保存的时间戳。上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行 改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种分布式存储系统时间戳的实现方法,其特征在于,包括以下步骤 所述系统的每个服务器节点均维护一个本地时间戳; 所述每个服务器节点周期性向系统中的其他服务器节点发送携带有本地维护的当前时间戳的数据包; 所述每个服务器节点根据收到的数据包,更新本地时间戳。
2.根据权利要求I所述的方法,其特征在于,所述每个服务器节点的本地维护的时间戳的初始值为O,从所述系统第一次运行起,每秒自增I。
3.根据权利要求I或2所述的方法,其特征在于,所述每个服务器节点根据收到的数据包,更新本地时间戳步骤具体包括 解析收到的数据包,得到时间戳和校验位; 判断所述校验位是否正确,若不正确,则不更新本地时间戳,并丢弃所述时间戳;若正确,则 保存所述时间戳; 判断所述时间戳的值与上一次保存的时间戳的值之差是否在预设的校验阈值范围内,若所述差值不在所述校验阈值范围内,则不更新本地时间戳;若所述差值在所述校验阈值范围内,则 判断所述时间戳的值是否大于本地当前时间戳的值,若是,则用所述时间戳更新本地时间戳;否则,不更新本地时间戳。
4.根据权利要求I所述的方法,其特征在于,所述系统中的服务器节点每隔I秒,将本地时间戳持久化到本地存储的文件中。
5.根据权利要求I或4所述的方法,其特征在于,若所述系统异常终止后又恢复正常运行,则所述每个服务器节点的本地时间戳从其终止前持久化的时间戳处继续计时。
6.根据权利要求3所述的方法,其特征在于,所述方法中,所述服务器节点同一时间仅保存两个时间戳,当有新的时间戳保存进来时,先保存的时间戳自动溢出。
7.根据权利要求3所述的方法,其特征在于,所述校验阈值为所述服务器节点发送携带有时间戳的数据包的周期的I倍到I. 5倍。
8.一种分布式存储系统,包括相互连接的若干个服务器节点,其特征在于,所述服务器节点包括时间戳维护模块、时间戳更新模块, 所述时间戳维护模块,用于为本地提供时间戳,并周期性向系统中的其他服务器节点发送携带本地当前时间戳的数据包; 所述时间戳更新模块,用于根据收到的数据包,更新所述时间戳维护模块的时间戳。
9.根据权利要求8所述的系统,其特征在于, 所述时间戳维护模块,还用于提供设置发送携带有本地当前时间戳的数据包的周期的接口,为所述时间戳每秒步进1,且每隔I秒,将所述时间戳持久化到本地存储的文件中;并在系统异常终止后又恢复正常运行时,从终止前持久化的时间戳处继续计时; 所述时间戳更新模块,还用于提供设置校验阈值的接口,解析收到的数据包,并判断解析得到的校验位是否正确,以及在所述校验位正确时,保存解析得到的时间戳,并判断所述解析得到的时间戳的值与上一次保存的时间戳的值之差是否在所述校验阈值范围内,并在所述差值在所述校验阈值范围内时,判断所述时间戳的值是否大于所述时间戳维护模块的当前时间戳的值,以及在所述时间戳的值大于所述时间戳维护模块的当前时间戳的值时,用所述时间戳更新所述时间戳维护模块的时间戳。
10.根据权利要求8或9所述的系统,其特征在于,所述服务器节点还包括时间戳存储模块,用于存储时间戳,并在有新的时间戳存入时,自动溢出先保存的时间戳。
全文摘要
本发明涉及一种分布式存储系统及其时间戳的实现方法,上述方法包括上述系统的每个服务器节点均维护一个本地时间戳,上述每个服务器节点周期性向系统中的其他服务器节点发送携带有本地维护的当前时间戳的数据包,上述每个服务器节点根据收到的数据包,更新本地时间戳;上述系统包括若干个服务器节点,上述服务器节点包括时间戳维护模块、时间戳更新模块以及时间戳存储模块。本发明具有非常高的可靠性。
文档编号H04L29/08GK102821114SQ20111015151
公开日2012年12月12日 申请日期2011年6月7日 优先权日2011年6月7日
发明者胡欢欢, 郭斌, 陈典强, 韩银俊 申请人:南京中兴新软件有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1