CN104468651B - 分布式多副本数据存储方法及装置 - Google Patents

分布式多副本数据存储方法及装置 Download PDF

Info

Publication number
CN104468651B
CN104468651B CN201310423284.0A CN201310423284A CN104468651B CN 104468651 B CN104468651 B CN 104468651B CN 201310423284 A CN201310423284 A CN 201310423284A CN 104468651 B CN104468651 B CN 104468651B
Authority
CN
China
Prior art keywords
server node
server
data copy
data
client
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.)
Active
Application number
CN201310423284.0A
Other languages
English (en)
Other versions
CN104468651A (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.)
Nanjing ZTE New Software Co Ltd
Original Assignee
Nanjing ZTE New Software Co Ltd
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 Nanjing ZTE New Software Co Ltd filed Critical Nanjing ZTE New Software Co Ltd
Priority to CN201310423284.0A priority Critical patent/CN104468651B/zh
Priority to PCT/CN2014/077720 priority patent/WO2014177085A1/zh
Publication of CN104468651A publication Critical patent/CN104468651A/zh
Application granted granted Critical
Publication of CN104468651B publication Critical patent/CN104468651B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/084Configuration by using pre-existing information, e.g. using templates or copying from other elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式多副本数据存储方法及装置,在上述方法中,确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,O个服务器节点为客户端无法继续读取数据副本和/或对数据副本进行更新的临界值,N、R、W、O均为正整数且O<W、W+R>N;根据N和O的取值调整R和/或W的取值。根据本发明提供的技术方案,进而在满足一致性和可用性要求的前提下降低资源的使用量,提高了系统对故障的持续容忍性。

Description

分布式多副本数据存储方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种分布式多副本数据存储方法及装置。
背景技术
云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)以及负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物,其旨在通过网络将多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式缓存是云计算范畴中的一个领域,其作用在于提供海量数据的分布式存储服务以及高速读写访问的能力。
分布式缓存系统是由若干个服务器节点与客户端相互连接构成的。服务器节点负责数据的存储,客户端可以对服务器进行数据的写入、读取、更新、删除等操作。通常情况下,写入的数据不可能只保存在单个服务器节点上,而是在多台服务器节点上保存同一个数据的副本,以互为备份。最常见的存储模式为主备模式,即,其中一个节点作为主服务器节点(master)而其他服务器节点作为备服务器节点(slave),主服务器节点的身份可以通过选举或其他算法获取。为了简化流程,数据更新一般发生在主服务器节点上,备服务器节点从主服务器节点获取数据进行同步,而对数据进行访问则既可以从主服务器节点中获取数据也可以从备服务器节点中获取数据,具体由实际情况中访问的一致性策略所决定。
在分布式缓存系统中,根据一致性以及可用性的要求通常将该数据存储方式按照NRW进行分类,其中,N表示数据的副本数量,R表示一次数据访问请求中获取的数据副本数量,W表示参与一次数据更新请求的最少服务器节点数量(即多少个服务器节点上的数据更新已经完成)。
目前,在相关技术中,分布式的主备存储系统通常采用322和111的方式存储数据。比较而言,前者虽然一致性和可用性都很高但是数据需要额外的两倍存储空间且因为数据需要存储三份数据更新会造成访问开销也很高,不仅如此,当系统发生单点故障后系统的可用性达到临界,如果系统再次发生故障则系统将进入不可服务状态。而后者的数据只有一个副本虽然空间和存储的开销很小但是却无法容忍单点故障,系统的可用性比较差。此外,211和222的存储方式很少有系统使用,其原因在于:前者主备服务器节点间的数据同步发生在数据更新请求之后,即数据更新请求只保证单节点上数据更新成功,故在网络较为繁忙或主备资源不一致情况下主备服务器中存储的数据差异较大,并且当发生单点故障后会造成大量的有效数据丢失,从而使得整个系统的一致性降低;而采用222的方式存储数据在单点故障时整个系统将会变得不可用。
由此可见,在相关技术中的分布式缓存系统中,如何在保持一致性和可用性要求的前提下降低资源的使用、提高系统对故障的持续容忍性是亟待解决的难题。
发明内容
本发明提供了一种分布式多副本数据存储方法及装置,以至少解决在相关技术中的分布式缓存系统中,无法在保持一致性和可用性要求的前提下降低资源的使用、提高系统对故障的持续容忍性的问题。
根据本发明的一个方面,提供了一种分布式多副本数据存储方法。
根据本发明的分布式多副本数据存储方法包括:确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,O个服务器节点为客户端无法继续读取数据副本和/或对数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;
根据N和O的取值调整R和/或W的取值。
优选地,根据N和O的取值调整R和/或W的取值包括:当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
优选地,N个服务器节点包括:1个主服务器节点和N-1个备服务器节点;在根据N和O的取值调整R和/或W的取值之前,还包括:判断在发生故障的O个服务器节点中是否包括主服务器节点;如果是,则从正常工作的剩余的备服务器节点中选取新的主服务器节点。
优选地,在根据N和O的取值调整R和/或W的取值之后,还包括:确定O个服务器节点中的部分或者全部服务器节点恢复正常工作;按照新的主服务器节点上当前的数据副对部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;按照恢复正常工作的部分或者全部服务器节点的数量重新调整R和/或W的取值。
优选地,在确定存在O个服务器节点发生故障之前,还包括:采用N个服务器节点中的主服务器节点接收来自于客户端的更新请求,其中,更新请求用于对N个服务器节点上的数据副本进行更新;在W个服务器节点上的数据副本更新成功的情况下,采用主服务器节点向客户端发送更新成功响应。
优选地,在采用主服务器节点向客户端发送更新成功响应之后,还包括:接收来自于客户端的数据访问请求;分别从R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至客户端。
根据本发明的另一方面,提供了一种分布式多副本数据存储装置。
根据本发明的分布式多副本数据存储装置包括:第一确定模块,用于确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,O个服务器节点为客户端无法继续读取数据副本和/或对数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;第一调整模块,用于根据N和O的取值调整R和/或W的取值。
优选地,第一调整模块包括:第一调整单元,用于当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;第二调整单元,用于当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;第三调整单元,用于当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
优选地,上述装置还包括:判断模块,用于判断在发生故障的O个服务器节点中是否包括主服务器节点,其中,N个服务器节点包括:1个主服务器节点和N-1个备服务器节点;第一选取模块,用于在判断模块输出为是时,从正常工作的剩余的备服务器节点中选取新的主服务器节点。
优选地,上述装置还包括:第二确定模块,用于确定O个服务器节点中的部分或者全部服务器节点恢复正常工作;更新模块,用于按照新的主服务器节点上当前的数据副本对部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;第二调整模块,用于按照恢复正常工作的部分或者全部服务器节点的数量重新调整R和/或W的取值。
优选地,上述装置还包括:第一接收模块,用于采用N个服务器节点中的主服务器节点接收来自于客户端的更新请求,其中,更新请求用于对N个服务器节点上的数据副本进行更新;响应模块,用于在W个服务器节点上的数据副本更新成功的情况下,采用主服务器节点向客户端发送更新成功响应。
优选地,上述装置还包括:第二接收模块,用于接收来自于客户端的数据访问请求;第二选取模块,用于分别从R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至客户端。
通过本发明,采用确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,N、R、W、O均为正整数且O≤W、W+R>N;根据N和O的取值调整R和/或W的取值,即通过该自适应的存储方式可以使用较少的数据副本数达到同样的一致性以及更高的可用性,在发生故障时动态调整R和/或W可以使故障后不可用的系统重新恢复使用,由此解决了在相关技术中的分布式缓存系统中,无法在保持一致性和可用性要求的前提下降低资源的使用、提高系统对故障的持续容忍性的问题,与相关技术相比,其优势在于:对于同样的一致性和可用性要求可以减少资源的使用量,且由于同一个数据的副本数量减少了,因此其访问更新数据的效率也由此提高很多。自适应方式最大的好处在于提高了系统的可用性,在系统发生故障后,提供了各种NRW模式之间的平滑过渡。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的分布式多副本数据存储方法的流程图;
图2是根据本发明优选实施例的由3个服务器节点和2个客户端构成的分布式缓存系统的示意图;
图3是根据本发明优选实施例的在212模式下的主备存储系统自适应存储方式的流程图;
图4是根据本发明实施例的分布式多副本数据存储装置的结构框图;
图5是根据本发明优选实施例的分布式多副本数据存储装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1是根据本发明实施例的分布式多副本数据存储方法的流程图。如图1所示,该方法可以包括以下处理步骤:
步骤S102:确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,O个服务器节点为客户端无法继续读取数据副本和/或对数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;
步骤S104:根据N和O的取值调整R和/或W的取值。
在相关技术中的分布式缓存系统中,无法在保持一致性和可用性要求的前提下降低资源的使用、提高系统对故障的持续容忍性。采用如图1所示的方法,通过该自适应的存储方式可以使用较少的数据副本数达到同样的一致性以及更高的可用性,在发生故障时动态调整R和/或W可以使故障后不可用的系统重新恢复使用,由此解决了在相关技术中的分布式缓存系统中,无法在保持一致性和可用性要求的前提下降低资源的使用、提高系统对故障的持续容忍性的问题,与相关技术相比,其优势在于:对于同样的一致性和可用性要求可以减少一半的资源使用量,且由于同一个数据的副本数量减少了,因此其访问更新数据的效率也由此提高很多。自适应方式最大的好处在于提高了系统的可用性,在系统发生故障后,提供了各种NRW模式之间的平滑过渡。
需要说明的是,R和/或W仅为客户端访问更新请求的成功标准,并不表示数据更新只发生在W个节点,客户端数据访问请求也是正对N个节点的,仅当接收到R个及以上节点的回复后取其合并后的结果返回客户端。
优选地,在步骤S104中,根据N和O的取值调整R和/或W的取值可以包括以下操作:
(1)当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;
(2)当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;
(3)当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
在优选实施例中,客户端与分布式缓存系统中的多个服务器节点建立连接,多个服务器节点之间相互建立连接并且运行正常,其中,数据副本的数量为N,读取请求访问的副本数量为R,写入请求更新数据副本成功的最少数量为W,系统的单次最大故障容忍度为O(即表示容许O个节点发生故障,例如:单点故障则O=1,O≤W),一致性要求为W+R>N。当数据的主备服务器节点中有T(T≤O)个节点发生故障时,如果系统不可用,则在保证一致性的情况下降低R和W以使系统恢复可用。
例如:分布式缓存系统原先采用222模式容忍单点故障,当发生单点故障后即可通过自适应将222模式调整为111(即由2个服务器节点且发生单点故障可知,上述N=2、O=1且R>1、W>1,则R=N-O=1,W=N-O=1)模式,即222→111。
再例如:分布式缓存系统原先采用331模式容忍单点故障,当发生单点故障后系统的可用性达到临界,此时即可通过自适应将331模式调整为221(即由3个服务器节点且发生单点故障可知,上述N=3、O=1且R>1、W=1,则R=N-O=2,W保持不变)模式,其一致性并没有降低;而当系统再次发生故障(上一次发生的故障并未恢复)时,则在保证一致性不变的情况下降低R以使系统恢复可用,还可以由221模式调整为111(即由2个服务器节点且再次发生单点故障可知,上述N=2、O=1且R>1、W=1,则R=N-O=1,W保持不变)模式,即331→221→111。整个系统仍然可用且一致性依旧被保持下来。由此可见,自适应的存储方式增强了系统对故障的持续容忍性。
需要说明的是,如果降低R即可达到恢复可用性,则无需再改变W。但是,在无论采用何种方式调整R和/或W的取值均无法保证一致性的情况下,则无需改变R和W而维持系统现状等待故障恢复。
优选地,上述N个服务器节点可以包括:1个主服务器节点和N-1个备服务器节点;在步骤S104,根据N和O的取值调整R和/或W的取值之前,还可以包括以下步骤:
步骤S1:判断在发生故障的O个服务器节点中是否包括主服务器节点;
步骤S2:如果是,则从正常工作的剩余的备服务器节点中选取新的主服务器节点。
在优选实施例中,如果分布式存储系统中的master发生故障,则会触发选举操作,以通过选举产生新的master;而当系统中发生故障的节点是slave时,则系统无需重新进行master选举。
优选地,在步骤S104,根据N和O的取值调整R和/或W的取值之后,还可以包括以下操作:
步骤S3:确定O个服务器节点中的部分或者全部服务器节点恢复正常工作;
步骤S4:按照新的主服务器节点上当前的数据副本对部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;
步骤S5:按照恢复正常工作的部分或者全部服务器节点的数量重新调整R和/或W的取值。
当系统故障恢复时,可以使恢复服务器节点先完成数据同步,待数据同步完成之后在恢复其服务的同时恢复其存储模式,最低限度应该在满足NRW模式恢复前必须保证恢复的服务器节点在加入服务队列前同步完成最新数据。例如:在331模式下有两个服务器节点发生故障,在第一个故障节点恢复时,其存储模式由111调整为221,故需要在数据同步完成后再提供服务,否则,将会因为该服务器节点与当前正在提供服务的服务器节点的数据存在差异会造成系统一致性降低;而当第二个故障服务器节点恢复时,其存储模式已经恢复至322,故即使该故障服务器节点的数据较为陈旧也不会影响系统的一致性。
优选地,在步骤S102,确定存在O个服务器节点发生故障之前,还可以包括以下步骤:
步骤S6:采用N个服务器节点中的主服务器节点接收来自于客户端的更新请求,其中,更新请求用于对N个服务器节点上的数据副本进行更新;
步骤S7:在W个服务器节点上的数据副本更新成功的情况下,采用主服务器节点向客户端发送更新成功响应。
在系统正常运行的情况下,数据在系统中有N个副本,当客户端发起数据更新请求时,由master进行数据更新处理,而slave从master进行数据同步。当数据在W个服务器节点上更新成功完成后向客户端返回数据更新成功。
优选地,在步骤S6,采用主服务器节点向客户端发送更新成功响应之后,还可以包括以下操作:
步骤S8:接收来自于客户端的数据访问请求;
步骤S9:分别从R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至客户端。
当客户端发起数据访问请求时,由Master和/或Slave处理上述数据访问请求,从R个服务器节点获取访问的数据副本后从该R个数据副本中选取最新的副本返回至客户端。
作为本发明的一个优选实施例,图2是根据本发明优选实施例的由3个服务器节点和2个客户端构成的分布式缓存系统的示意图。如图2所示,对于特定类型的数据,由1个主服务器节点(master)负责处理客户端的更新及访问请求,由2个备服务器节点(slave)用于同步master的数据并接收客户端发送的数据访问请求,但是,slave并不处理客户端发送的数据更新请求。
下面结合图3所示的优选实施方式对上述优选实施过程作进一步的描述。
图3是根据本发明优选实施例的在212模式下的主备存储系统自适应存储方式的流程图。如图3所示,在212模式下的主备存储系统有2个服务器节点,该分布式存储系统采用主备方式存储数据,每个数据可以有两个副本,采用212的方式更新及访问数据。该自适应存储方式可以包括如下步骤:
步骤1、初始正常阶段,分布式存储系统接收来自于客户端的数据更新请求,master处理该数据更新请求并将更新后的数据同步到slave后通知客户端数据更新请求处理成功,master和/或slave在接收到来自于客户端的数据访问请求之后,master和/或slave会将其存储的更新后的数据回复至客户端。
步骤2、当分布式存储系统发生单点故障时,例如:当前系统中的master节点发生了故障无法提供服务,此时,由于系统中缺少master无法提供数据更新服务,但是,由于slave还在正常工作且R=1故而能够提供数据访问服务;由于W=2,系统中master和slave上存储的数据是一样的,故单节点故障并没有造成数据损失。
步骤3、由于分布式存储系统中的master发生故障故而触发选举操作,以通过选举产生新的master,并因为系统中当前数据只有一个副本可供服务,所以需要将数据更新模式从W=2调整为W=1,从而使得系统能够继续提供更新服务。
步骤4、因为系统中当前数据只有一个副本可供服务,故系统的一致性没有降低,系统经过自适应调整后从只能访问不可更新的系统转换为可以提供更新及访问服务的系统,系统的可用性由此得到保证,从而使得本系统达到了与322系统同样的一致性和可用性。
步骤5、在上述步骤2中,当系统中发生单点故障的节点是slave时,因为W=2,故系统仍需要通过自适应调整降低W的取值以实现系统的可更新服务,在该步骤中与上述步骤3中master节点发生故障的唯一区别在于:系统无需重新进行master选举。
步骤6、当系统中的服务器节点从故障中恢复时,首先通过当前master同步数据,使发生故障的服务器节点上的数据与当前master上存储的数据保持一致,然后在将W=1恢复至W=2后,使故障服务器节点恢复服务。
步骤7、通过上述各个步骤,分布式存储系统在发生故障以及故障恢复后的自适应调整使得系统能够达到在322模式下的一致性及可用性,而其使用的资源仅为322模式的2/3,并且由于同步的副本数量减少,其请求执行的效率也会提高很多。
图4是根据本发明实施例的分布式多副本数据存储装置的结构框图。如图4所示,该分布式多副本数据存储装置可以包括:第一确定模块100,用于确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,N个服务器节点中的R个服务器节点用于客户端读取数据副本,N个服务器节点中的W个服务器节点用于客户端对数据副本进行更新,O个服务器节点为客户端无法继续读取数据副本和/或对数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;第一调整模块102,用于根据N和O的取值调整R和/或W的取值。
采用自适应的分布式多副本存储模式与相关技术中所采用的主备存储采用固定的NRW不同,可以实现动态的调整NRW中的R和/或W的取值从而保证数据的一致性和可用性,使用较小的N达到与较大N同样的一致性和可用性,以减少系统资源的占用,进而使得系统资源能够得到更加充分地利用。
优选地,如图5所示,第一调整模块102可以包括:第一调整单元(图中未示出),用于当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;第二调整单元(图中未示出),用于当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;第三调整单元(图中未示出),用于当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
优选地,如图5所示,上述装置还可以包括:判断模块104,用于判断在发生故障的O个服务器节点中是否包括主服务器节点,其中,N个服务器节点包括:1个主服务器节点和N-1个备服务器节点;第一选取模块106,用于在判断模块输出为是时,从正常工作的剩余的备服务器节点中选取新的主服务器节点。
优选地,如图5所示,上述装置还可以包括:第二确定模块108,用于确定O个服务器节点中的部分或者全部服务器节点恢复正常工作;更新模块110,用于按照新的主服务器节点上当前的数据副本对部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;第二调整模块112,用于按照恢复正常工作的部分或者全部服务器节点的数量重新调整R和/或W的取值。
优选地,如图5所示,上述装置还可以包括:第一接收模块114,用于采用N个服务器节点中的主服务器节点接收来自于客户端的更新请求,其中,更新请求用于对N个服务器节点上的数据副本进行更新;响应模块116,用于在W个服务器节点上的数据副本更新成功的情况下,采用主服务器节点向客户端发送更新成功响应。
优选地,如图5所示,上述装置还包括:第二接收模块118,用于接收来自于客户端的数据访问请求;第二选取模块120,用于分别从R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至客户端。
从以上的描述中,可以看出,上述实施例实现了如下技术效果(需要说明的是这些效果是某些优选实施例可以达到的效果):本发明实施例在云计算领域分布式缓存系统中,提供了一种在分布式缓存系统中自适应的多副本存储方式的实现方法,在不改变一致性的前提下增强了系统的可用性,减少了系统的资源占用,使得应用可以使用较少的资源即可实现更高的一致性和可用性,从而优化了应用体验,满足了应用对分布式存储系统对一致性、可用性以及资源限制的要求。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式多副本数据存储方法,其特征在于,包括:
确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,所述N个服务器节点中的R个服务器节点用于客户端读取所述数据副本,所述N个服务器节点中的W个服务器节点用于所述客户端对所述数据副本进行更新,所述O个服务器节点为所述客户端无法继续读取所述数据副本和/或对所述数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;
根据N和O的取值调整R和/或W的取值;
所述根据N和O的取值调整R和/或W的取值包括:
当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;
当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;
当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
2.根据权利要求1所述的方法,其特征在于,所述N个服务器节点包括:1个主服务器节点和N-1个备服务器节点;在根据N和O的取值调整R和/或W的取值之前,还包括:
判断在发生故障的所述O个服务器节点中是否包括所述主服务器节点;
如果是,则从正常工作的剩余的备服务器节点中选取新的主服务器节点。
3.根据权利要求2所述的方法,其特征在于,在根据N和O的取值调整R和/或W的取值之后,还包括:
确定所述O个服务器节点中的部分或者全部服务器节点恢复正常工作;
按照所述新的主服务器节点上当前的数据副本对所述部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;
按照恢复正常工作的所述部分或者全部服务器节点的数量重新调整R和/或W的取值。
4.根据权利要求1至3中任一项所述的方法,其特征在于,在确定存在所述O个服务器节点发生故障之前,还包括:
采用所述N个服务器节点中的主服务器节点接收来自于所述客户端的更新请求,其中,所述更新请求用于对所述N个服务器节点上的所述数据副本进行更新;
在所述W个服务器节点上的所述数据副本更新成功的情况下,采用所述主服务器节点向所述客户端发送更新成功响应。
5.根据权利要求4所述的方法,其特征在于,在采用所述主服务器节点向所述客户端发送所述更新成功响应之后,还包括:
接收来自于所述客户端的数据访问请求;
分别从所述R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至所述客户端。
6.一种分布式多副本数据存储装置,其特征在于,包括:
第一确定模块,用于确定分布式缓存系统中的N个服务器节点中存在O个服务器节点发生故障,其中,每个服务器节点均存储同一个数据副本,所述N个服务器节点中的R个服务器节点用于客户端读取所述数据副本,所述N个服务器节点中的W个服务器节点用于所述客户端对所述数据副本进行更新,所述O个服务器节点为所述客户端无法继续读取所述数据副本和/或对所述数据副本进行更新的临界值,N、R、W、O均为正整数且O≤W、W+R>N;
第一调整模块,用于根据N和O的取值调整R和/或W的取值;
所述第一调整模块包括:
第一调整单元,用于当R>1且W=1时,如果N-O≥1,则R=N-O,W的取值保持不变;
第二调整单元,用于当R=1且W>1时,如果N-O≥1,则W=N-O,R的取值保持不变;
第三调整单元,用于当R>1且W>1时,如果N-O≥1且R>N-O,则R=N-O,如果N-O≥1且W>N-O,则W=N-O。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断在发生故障的所述O个服务器节点中是否包括主服务器节点,其中,所述N个服务器节点包括:1个所述主服务器节点和N-1个备服务器节点;
第一选取模块,用于在所述判断模块输出为是时,从正常工作的剩余的备服务器节点中选取新的主服务器节点。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定所述O个服务器节点中的部分或者全部服务器节点恢复正常工作;
更新模块,用于按照所述新的主服务器节点上当前的数据副本对所述部分或者全部服务器节点上在发生故障时存储的数据副本进行更新;
第二调整模块,用于按照恢复正常工作的所述部分或者全部服务器节点的数量重新调整R和/或W的取值。
9.根据权利要求6至8中任一项所述的装置,其特征在于,所述装置还包括:
第一接收模块,用于采用所述N个服务器节点中的主服务器节点接收来自于所述客户端的更新请求,其中,所述更新请求用于对所述N个服务器节点上的所述数据副本进行更新;
响应模块,用于在所述W个服务器节点上的所述数据副本更新成功的情况下,采用所述主服务器节点向所述客户端发送更新成功响应。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收来自于所述客户端的数据访问请求;
第二选取模块,用于分别从所述R个服务器节点中获取各自存储的数据副本,并从获取到的R个数据副本中选取最近更新的数据副本发送至所述客户端。
CN201310423284.0A 2013-09-17 2013-09-17 分布式多副本数据存储方法及装置 Active CN104468651B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310423284.0A CN104468651B (zh) 2013-09-17 2013-09-17 分布式多副本数据存储方法及装置
PCT/CN2014/077720 WO2014177085A1 (zh) 2013-09-17 2014-05-16 分布式多副本数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310423284.0A CN104468651B (zh) 2013-09-17 2013-09-17 分布式多副本数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN104468651A CN104468651A (zh) 2015-03-25
CN104468651B true CN104468651B (zh) 2019-09-10

Family

ID=51843163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310423284.0A Active CN104468651B (zh) 2013-09-17 2013-09-17 分布式多副本数据存储方法及装置

Country Status (2)

Country Link
CN (1) CN104468651B (zh)
WO (1) WO2014177085A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302702B (zh) 2016-08-10 2020-03-20 华为技术有限公司 数据的分片存储方法、装置及系统
CN106452836B (zh) * 2016-08-31 2019-12-13 北京小米移动软件有限公司 主节点设置方法及装置
CN109815049B (zh) * 2017-11-21 2021-03-26 北京金山云网络技术有限公司 节点宕机恢复方法、装置、电子设备及存储介质
CN110535898B (zh) * 2018-05-25 2022-10-04 许继集团有限公司 大数据存储中副本存放、补全、节点选择方法及管理系统
CN110807039A (zh) * 2019-10-29 2020-02-18 深圳供电局有限公司 一种云计算环境下数据一致性维护系统及方法
CN112685157B (zh) * 2020-12-29 2024-04-02 武汉安辰鑫信息科技有限公司 任务处理方法、装置、计算机设备及存储介质
CN112929438B (zh) * 2021-02-04 2022-09-13 中国工商银行股份有限公司 一种双站点分布式数据库的业务处理方法及装置
CN114448781B (zh) * 2021-12-22 2024-06-07 天翼云科技有限公司 一种数据处理系统
CN117909418B (zh) * 2024-03-20 2024-05-31 广东琴智科技研究院有限公司 深度学习模型存储一致性方法、计算子系统以及计算平台

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706802A (zh) * 2009-11-24 2010-05-12 成都市华为赛门铁克科技有限公司 一种数据写入、修改及恢复的方法、装置及服务器
CN102833295A (zh) * 2011-06-17 2012-12-19 南京中兴新软件有限责任公司 分布式缓存系统中的数据操作方法和装置
CN102984280A (zh) * 2012-12-18 2013-03-20 北京工业大学 针对社交类云存储网络应用的数据备份系统和方法
CN103067206A (zh) * 2012-12-28 2013-04-24 无锡博欧节能科技有限公司 物联网跨机房分布式全自动热备用服务器切换系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106771A1 (en) * 2005-11-10 2007-05-10 International Business Machines Corporation Reconciliation of independently updated distributed data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706802A (zh) * 2009-11-24 2010-05-12 成都市华为赛门铁克科技有限公司 一种数据写入、修改及恢复的方法、装置及服务器
CN102833295A (zh) * 2011-06-17 2012-12-19 南京中兴新软件有限责任公司 分布式缓存系统中的数据操作方法和装置
CN102984280A (zh) * 2012-12-18 2013-03-20 北京工业大学 针对社交类云存储网络应用的数据备份系统和方法
CN103067206A (zh) * 2012-12-28 2013-04-24 无锡博欧节能科技有限公司 物联网跨机房分布式全自动热备用服务器切换系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
在云间可重构的分布式存储;崔忠强等;《系统工程理论与实践》;20111031;第31卷(第增刊2期);第57~60页

Also Published As

Publication number Publication date
WO2014177085A1 (zh) 2014-11-06
CN104468651A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN104468651B (zh) 分布式多副本数据存储方法及装置
US11360854B2 (en) Storage cluster configuration change method, storage cluster, and computer system
CN102404390B (zh) 高速实时数据库的智能化动态负载均衡方法
CN112463366B (zh) 面向云原生的微服务自动扩缩容和自动熔断方法及系统
CN102523234B (zh) 一种应用服务器集群实现方法及系统
CN111131451A (zh) 业务处理系统及业务处理方法
CN113641511B (zh) 一种消息通信方法和装置
CN108964948A (zh) 主从服务系统、主节点故障恢复方法及装置
CN105530306A (zh) 支持数据应用服务的超融合存储系统
CN106790563B (zh) 分布式存储系统和方法
CN114301972B (zh) 一种基于云边协同的区块链节点分级部署方法和系统
CN108881512A (zh) Ctdb的虚拟ip均衡分配方法、装置、设备及介质
CN105069152A (zh) 数据处理方法及装置
CN110581782A (zh) 一种容灾数据的处理方法、装置及系统
CN104811476A (zh) 一种面向应用服务的高可用部署实现方法
CN108228393A (zh) 一种可扩展的大数据高可用的实现方法
CN111787055A (zh) 一种基于Redis且面向事务机制和多数据中心的数据分发方法和系统
CN113553179A (zh) 分布式键值存储负载均衡方法及系统
CN110348826A (zh) 异地多活容灾方法、系统、设备及可读存储介质
CN112492022A (zh) 提高数据库可用性的集群、方法、系统及存储介质
CN109739435A (zh) 文件存储和更新方法及装置
CN110099084A (zh) 一种保证存储服务可用性的方法、系统及计算机可读介质
CN103428288A (zh) 基于分区状态表和协调节点的副本同步方法
KR20200118798A (ko) 전자 디바이스들, 시스템들 및 방법들
CN110442573A (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
GR01 Patent grant
GR01 Patent grant