CN102483768B - 基于策略的储存结构分布 - Google Patents

基于策略的储存结构分布 Download PDF

Info

Publication number
CN102483768B
CN102483768B CN201080026694.6A CN201080026694A CN102483768B CN 102483768 B CN102483768 B CN 102483768B CN 201080026694 A CN201080026694 A CN 201080026694A CN 102483768 B CN102483768 B CN 102483768B
Authority
CN
China
Prior art keywords
node
leave
key value
strategy
data
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
CN201080026694.6A
Other languages
English (en)
Other versions
CN102483768A (zh
Inventor
J-N·莫因
S·萨布拉玛尼
T·M·金
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.)
Cloud Software Group Inc
Original Assignee
Tibco Software Inc
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 Tibco Software Inc filed Critical Tibco Software Inc
Priority to CN201510818774.XA priority Critical patent/CN105373613B/zh
Publication of CN102483768A publication Critical patent/CN102483768A/zh
Application granted granted Critical
Publication of CN102483768B publication Critical patent/CN102483768B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof

Abstract

结合分布算法的基于策略的储存和检索导致基于策略的储存结构跨一组节点的自动且均匀的分布,以及基于策略的储存结构的动态的自动归位或拥有权。大量基于策略的储存结构可以被分布而无需手动管理,允许储存结构的快速创建和消灭。总负载可以跨服务器池被分布和平衡。数据库类或表类结构中具有相同关键字值的多个输入允许基于策略的储存器的分布和通过关键字的检索,并且允许队列语义被用于大容量数据库类或表类结构中的微队列。

Description

基于策略的储存结构分布
背景
技术领域
所公开的实施方案一般地涉及分布储存结构,并且更具体地,涉及跨多个服务器分布基于策略的储存结构。
背景技术
数据库由多个数据行构成,其中每行被划分为列或字段。一般地,一个字段被指定为关键字字段(keyfield)。在数据库结构中,每个关键字应当是唯一的。当使用者插入新数据时,数据库可以自动产生关键字,但使用者也可以产生关键字并且使所述关键字与所插入的数据一起被包括。如果使用者试图针对已在使用中的关键字增加数据,则导致错误。例如,新数据会重写(overwrite)已经与该关键字相关联的数据。
利用传统方法,由手动或手工完成在一组服务器上的数据库中的数据分布。例如,在银行业背景下,数据库可以包括银行数据、待决(pending)交易以及其他银行业信息。银行的客户(customer)拥有银行账户,银行账户具有银行账户号码。在任何时候,可以对每个账户进行多种操作。每个数据片(pieceofdata)、每个要被执行的交易或者每个待决操作与账户号码(关键字)相关联。如果这些操作使用账户号码作为关键字来以普通数据库结构进行储存,在任何一次,仅有一条信息可以与该账户号码相关联。因为在数据库中,每个关键字仅允许一个输入(entry),所以当针对同一账户号码的多个交易都是待决的时候,则会出现问题和导致错误。
如果对一账户有多于一个操作正被执行,则将会保持针对该账户号码的一队列。在大量账户的情况下,单个服务器可能无法处理针对每个账户的所有数据和队列。结果,账户和账户队列应当被分布在一组服务器上。这样的任务是困难的,并且难于管理。增加或移去服务器只会增加管理的复杂度,因为队列和数据应当在所述服务器组上被重新平衡。这会达到成千上万个需要在一组消息服务器上被手动平衡或归位(home)的队列。
在包括每个关键字具有潜在的多个输入、交易或操作的大型数据库的任何背景(银行业或其他)下,可以针对每个具有多个输入的关键字创建队列。由于这样的系统难于手动地调度这样大量的队列,所以其难于管理。所述调度不是自动的并且是低效的。此外,当服务器进入或离开服务器群时,会引入更大的复杂性,因为管理者则必须在一组新的服务器上重新计算和重新分布数据和待决交易。
发明内容
本公开涉及这样的数据结构,所述数据结构允许每个关键字多个输入。在实施方案中,数据结构可以类似于小队列的表或微型队列的表,在所述微型队列中每个微型队列输入具有相同的关键字。
本公开还涉及通过将特定关键字值映射到特定节点或服务器群,在一组服务器上对队列进行自动分布。在实施方案中,一致性哈希(consistenthashing)被用来确定队列在所述服务器组上的分布。
本公开还涉及对一组服务器自动且高效地增加或移除节点。在实施方案中,一致性哈希可以被用来对一组服务器增加或移除节点。
本公开还涉及实施分布式容错储存架构。在实施方案中,一致性哈希可以被用来提供并行分布式容错。
附图说明
实施方案以示意性的方式在附图中被图示说明,附图中相似的参考编号表示类似的部分,并且其中:
图1为根据本公开图示说明一致性哈希算法的示意图;
图2A-图2E为根据本公开图示说明空间和数据结构的示意图;
图3为根据本公开图示说明队列的自动分布的示意图;
图4为根据本公开图示说明使用一致性哈希算法进行队列的自动分布的示意图;
图5A为根据本公开图示说明增加服务器或节点的示意图;
图5B为根据本公开图示说明移除服务器或节点的示意图;
图5C为根据本公开图示说明移除服务器或节点情形的表格;
图6A为根据本公开图示说明数据复制的示意图;
图6B为根据本公开图示说明分布式容错的示意图;
图7为根据本公开图示说明位于计算机系统上的数据储存器的示意图;以及
图8A-图8C为图示说明用于映射节点和关键字值的模块的示意图。
具体实施方式
本公开结合分布算法提出基于策略的储存和检索(retrieval)。结果允许跨一组节点的基于策略的储存结构的自动且均匀的分布。本公开还允许基于策略的储存结构的动态的自动归位,或基于策略的储存结构的拥有权(ownership)。大量基于策略的储存结构可以被分布而无需手动管理,允许储存结构的快速创建和消灭。总负载可以跨服务器池(serverpool)被分布和平衡。本公开还允许在无需用于追踪拥有权的集中式列表和这样的集中式列表的容错备份的情况下进行分布。再有,储存结构的使用者可以计算哈希(computeahash)并直接访问适当的服务器,而消费者可以无需依赖于路由通过多个服务器。因此,实现了更快的访问和更低的网络开销。本公开允许具有均匀分布的基于策略的储存和检索分布,平衡计算,减少热点以及提供可扩展性(scalability)。
一致性哈希
一致性哈希是这样的方案,即提供高效的哈希表储存和检索,同时减少与传统哈希实施方式相关联的增加和移除哈希表槽(slot)的成本。一致性哈希最初被引入作为高效可扩展的方法,用于在不断变化的网络服务器总量之间分布请求。再有,其已被用作建立分布式哈希表(或DHT)的方法,其中关键字空间(和相关联的数据值)跨计算节点的集合被分布。
当使用一致性哈希时,网络服务器或计算节点的增加或移除可以在不必重新映射全部用户(client)或关键字空间的情况下来实现。一般地,k/n(其中k为关键字的数目,而n为节点的数目)个输入被重新映射。此外,一致性哈希实施方式中的每个节点可以使用关于其管理的关键字空间部分的局部信息,而不是放眼全局,降低复杂性和通信开销。这些益处在应当响应于系统故障和恢复的环境中提供高效性,并且快速改变需要向该池增加节点或从该池移除节点的容量需求。
可以通过假设一组关键字k被映射为一组节点n来示出用于一致性哈希的一种算法。函数f被用来将每个关键字和每个节点的标识符哈希计算(hash)到范围在0到M内的整数。经哈希计算的(hashed)值可以被描绘在围绕一圈的一线性刻度(alinearscale)上,其中值0和M在十二点钟的位置上重合并且每个关键字可以被映射到该圈上的最靠近节点。
图1为图示说明在围绕一圈100的一线性刻度上映射关键字和节点标识符的一致性哈希值的示意图。圈100包括具有范围从0到M的值的线性刻度(例如,0、M/4、M/2、3M/4以及M)。一致性哈希函数f用来哈希计算节点的值(例如,f(n1)、f(n2)、f(n3)以及f(n4))。函数f还用来哈希计算关键字的值(例如,f(ka)和f(kb))。节点(例如,n1、n2、n3以及n4)和关键字(例如,ka和kb)然后可以被描绘在圈100上。每个关键字(例如,ka和kb)可以被分配到最靠近的节点(例如,n1、n2、n3以及n4)。在实施方案中,ka将会被映射到n4,并且kb将会被映射到n1
图1示出节点(例如,n1、n2、n3以及n4)被哈希计算为基本上围绕圈100均匀分布。然而,在实施方案中,哈希函数可以导致不均匀的节点分布。为适应节点将被不均匀分布的可能性,该算法可以针对每个物理节点引入多个伪节点,并且可以将针对伪节点的关键字的任何分配映射到作为基础的物理节点。严格的数学分析(在此被省略)可以被用来确定针对任何给定数目的节点和伪节点的分布的预期平衡的估计。
一致性哈希最初被开发用作在一组服务器之间分布网络查询的方法。这曾允许服务器以最小重复计算量进入和离开服务器池。更近来地,一致性哈希已经被用在储存器阵列中来将数据分配至具体储存装置。本公开部分涉及使用一致性哈希针对储存结构进行基于策略的储存和从储存结构进行基于策略的取回,用于服务器和/或节点对服务器组的无缝加入和离开,并且用于服务器组系统中的分布式容错。尽管在本公开中使用一致性哈希,本领域技术人员会理解的是,可以使用任何能够自动将与关键字值相关联的数据行自动分布到服务器、服务器组、节点或节点群的分布算法(例如,其他哈希算法、循环(roundrobin)分布算法等)来替代一致性哈希。
哈希表(有时也叫“映射(map)”)是关联数组(associativearray)概念的实施方式。在关联数组中,数据可以以关键字和一个相关联的值或一组值的形式被储存。在哈希表的情况下,仅一个值(或一组值)与每个关键字相关联。所以,如果关键字k1与值v1(或一组值v1)相关联并且与值v2(或一组值v2)相关联的新关键字k1被插入该哈希表,则v2将复写该哈希表中的v1。本文提出的是,哈希表允许多于一个值(例如v1和v2)与关键字(例如,k1)相关联,并且此外,能够针对所有与特定关键字(例如k1)相关联的值允许“队列语义(queuesemantics)”(例如,FIFO或优先级)。当与一致性哈希算法一起使用以在一组节点上自动分布关键字(并且当该组节点改变时有效地重新分布它们)时,队列在一组节点上可以被容易地分布和重新分布。
储存结构和微队列
如上所论述的,数据库由多个数据行组成,其中每行被划分为列或字段,其中一个列或字段被指定为关键字。在数据库结构中,每个关键字都是唯一的。如果使用者试图针对已经在使用的关键字增加数据,一般会导致错误。
某些基于策略的储存结构不使用关键字。基于策略的储存结构的一个实例是队列。队列是先入先出的线性数据结构。在先入先出的数据结构中,增加到队列中的第一个元素被第一个移除。队列的一个或更多个消费者可以将数据弹入和弹出队列。在本公开的各部分中使用队列,但本领域技术人员将会理解的是,队列的使用仅仅是示意性的,而非限制性的。例如,在下面所公开的实施方案中可以使用数组、链表、堆栈、树、图或任何类型的基于策略的储存结构。
图7是位于一个或更多个计算装置704的系统702上的数据储存器700的示意图。数据输入710位于空间708中。每个数据输入包括字段712。每个数据输入中的字段之一为关键字字段720。一个或更多个计算装置704可以包括服务器计算机并且可以通过网络730被连网在一起。数据储存器可以包括为空间708提供指令的可执行代码,以接收和储存数据输入710。假设多个行(或数据输入)710在关键字字段中包括相同的值,空间708可以被认为是包括多个小队列的数据库类(database-like)或表类(table-like)结构。因此,如下面将被说明的,在实施方案中,空间708包括与基于策略的储存结构结合的数据库类或表样结构。
信息行(或数据输入)710可以被储存在空间708中并且可以通过指定关键字720来存取。空间720中可以允许每个关键字多于一个输入。允许每个关键字多于一个输入导致大量“微队列(microqueue)”被创建。
图2A为图示说明每个关键字具有多于一个输入的空间200的示意图。在实施方案中,空间200包括银行账户数据和交易信息(账户、姓名、通知、社保号码、贷记、借记等)。在银行业的背景下,任何时候可以针对任何一个账户进行多个动作或交易。通知(alert)可能需要被送至使用者,账户可能需要被借记或贷记等。因此,允许每个关键字多个输入是有益的在于,基本上同时的交易和信息可以按照关键字被储存在空间200中。
仍参照图2A,关键字值101在空间200中具有四个输入201。关键字值102在空间200中具有三个输入202。关键字值103在空间200中具有一个输入203。关键字值104在空间200中具有四个输入204。因此,在空间200中,每个关键字允许多个输入。在实施方案中,允许关键字值在数据储存器或其他数据库样结构中重复(repetition),使得能够以数据库样结构(微队列)对队列进行表征。因而,输入群201、202、203、204等可以被认为是微队列,并且允许每个关键字多于一个输入导致针对空间200的大量微队列201、202、203、204等被创建。
微队列201、202、203、204等可以在提供对数据的储存或存取的一组节点或参与者上被自动地且均匀地分布。在实施方案中,数据根据关键字值在一组节点上被分布并且信息行可以使用分布算法来分布。
图2B-图2E为图示说明微队列201、202、203以及204的示意图。图2B图示说明微队列201,微队列201包括来自空间200的具有关键字值101的输入。图2C图示说明微队列202,微队列202包括来自空间200的具有关键字值102的输入。图2D图示说明微队列203,微队列203包括来自空间200的具有关键字值103的输入。图2E图示说明微队列204,微队列204包括来自空间200的具有关键字值104的输入。
参照图2A-图2E,银行业应用仅仅是可以通过空间200被分布并且在微队列201-204中的数据和交易类型或功能信息的实施例。本领域技术人员会理解的是,空间200中的每个关键字值具有多个输入导致微队列201-204在多种背景下都将会是有益的。
在空间200中,允许每个关键字多于一个输入还允许消费者在这些输入上使用队列语义。继续参考银行业背景,表类结构或数据库类结构可以以相同的账户号码具有多个输入(例如,待决操作)。每个关键字具有多个输入允许消费者在这些输入上使用队列语义。队列语义可以包括在具有相同关键字值的输入上的排序、归类(例如,根据优先级或日期)、先入先出或者后入先出型语义。例如,在银行业背景下,这允许每个消费者根据其偏好对其操作和数据进行归类或排序。所有的输入、数据和操作都可以被增加到数据库类的结构,而不管消费者的偏好。但是,如果一个消费者偏好于基于优先级日期接收所呈现的数据,可以基于优先级日期将与该消费者有关的微队列进行归类。另一消费者可以想要根据另一队列语义选项来检索数据。
微队列可以在对数据提供储存和存取的一组节点或参与者上被自动地且均匀地分布。在实施方案中,在数据库类结构中允许关键字值的重复,使得能够以数据库样结构对队列进行表征。
微队列分布
信息行可以使用分布算法来分布。在实施方案中,与关键字值101相关联的行(微队列201)可以被分布到提供对数据的储存或存取的一节点,而与关键字值102相关联的行102(微队列202)可以被分配到提供对数据的储存或存取的另一节点。类似地,微队列203可以被分布到另一节点并且微队列204可以被分布到又另一节点。在另一实施方案中,微队列201和202被分布到相同的节点并且微队列203和204被分布到另一节点。本领域技术人员会理解的是,只要与关键字值相关联的数据行(即,微队列)被分布到相同的节点,微队列可以根据各种分布算法以各种方式被分布。因此,继续参照图2A,空间200中的输入根据关键字值被分布。
图3为图示说明将微队列分布或分配至节点的示意图300。如上面所论述的,与特定关键字K相关联的数据行构成微队列(例如,K201)。在图300中,微队列301、302、303、304...310被标注为Kn,表明微队列与图2A-图2E示出的银行业关键字值相关联。然而,本领域技术人员会理解,会是有益的是,图3图示说明的分布可以被用于非银行业应用中,包括但不限于,多个输入与空间中的单个关键字相关联的任何应用。
在图3中,微队列K201(301)和K202(302)被分布到节点N1(351)。微队列K203(303)被分布到节点N4(354)。微队列K204(304)被分布到节点N3(353)。并且微队列Kn(310)被分布到节点Nm(360)。如上面论述的,本领域技术人员会理解的是,只要与关键字值相关联的数据行(即,微队列)被分配到相同节点,微队列可以根据各种分布算法被分布。针对每个关键字的多个输入则可以利用分布算法在服务器池上被分布,消除对队列进行繁复的手工管理的需要。
例如,继续参考银行业背景,银行针对每个有效客户创建操作输入队列。这将多达成百上千的队列,所述队列不得不在一组消息服务器上被手动平衡(或归位)。在实施方案中,队列可以使用分布算法跨一组节点被自动地均匀分布,这平衡了计算、减少了热点并且提供了可扩展性。
在实施方案中,数据行使用哈希方案来分布。跨服务器池对队列归位进行哈希计算的任何方案提供多个有益之处,包括但不限于:基于策略的储存结构的动态的自动归位或拥有权;无需手动管理的情况下对大量基于策略的储存结构的分布,允许储存结构的快速创建和消灭;跨服务器池的总负载的分布和平衡;无需用于追踪拥有权的集中式列表且无需列表的容错备份的分布;哈希的计算和使用者的直接访问;以及更快速访问和更低网络开销的实现。
使用一致性哈希的微队列分布
在实施方案中,数据行使用一致性哈希来分布。一致性哈希允许行和/或微队列基本上均匀分布到组或空间中的一组服务器参与者。通过结合一致性哈希和微队列(在数据库类结构中允许每个关键字多个输入),一致性哈希可以被用于以基本上均匀的方式在服务器池之间分布基于策略的储存结构。一致性哈希是自引导的,不用调度器。当服务器进入和离开服务器池时,一致性哈希可以跨服务器自动地分布队列。结果,允许每个关键字多于一个值或输入提供队列在服务器池上的均匀且自动的分布。在实施方案中,基于策略的储存结构的自动且均匀的分布动态地、灵活地被实现而无需管理功能。
图4为图示说明在围绕一圈400的一线性刻度上映射微队列和节点标识符的一致性哈希值的示意图。圈400包括具有范围从0到M的值的一线性刻度(例如,0、M/4、M/2、3M/4以及M)。一致性哈希函数f可以被用来哈希计算节点的值(例如,f(n1)、f(n2)、f(n3)以及f(n4))。函数f还可以被用来哈希计算对应于微队列的关键字的值(例如,f(k201)、f(k202)、f(k203)以及f(k204))。然后,节点(例如,n1、n2、n3以及n4)和关键字(例如,k201、k202、k203以及k204)可以被描绘在圈400上。每个关键字(例如,k201、k202、k203以及k204)可以被分配到最靠近节点(例如,n1、n2、n3以及n4)。实际上,所有具有特定关键字值的输入都基于函数f被描绘在圈400上的特定位置处,并且然后被分配到最靠近节点n。具有相同关键字值的多个输入(微队列)则被分配到相同节点。在实施方案中,如所示出的,k201将会被映射到n4,k202和k203将会被映射到n1,而k204将会被映射到n3
图4示出节点(例如,n1、n2、n3以及n4)被哈希计算为基本上围圈400均匀分布。然而,在实施方案中,哈希函数可以导致不均匀的节点分布。为适应节点将被不均匀分布的可能性,该算法可以针对每个物理节点引入多个伪节点,并且可以将针对伪节点的关键字的任何分配映射到作为基础的物理节点。严格的数学分析(在此被省略)可以被用来确定针对任何给定数目的节点和伪节点的分布的预期平衡的估计。
相对照于如循环算法那样的更简单算法,使用一致性哈希来实现队列分布的好处在于,利用一致性哈希,一般地不使用集中记录,并且因此无需创建和保持分配表的容错备份。另一好处在于,无需存在指定的“调度器(scheduler)”负责分配关键字到节点的分布(消除了调度器会成为故障点或瓶颈的风险)。
分布算法(例如一致性哈希)还可以被用在服务器和/或节点加入或离开服务器组的环境以及服务器组中的分布式容错的环境中。
无缝对等加入和离开
如上面所论述的,在一致性哈希环境中的无缝对等加入(peer-joining)和离开可以被使用在这样的环境中,其中关键字空间或微队列(和它们的相关联的数据值)跨计算节点的集合被分布,或被分布在分布式基于策略的储存结构的环境中。本领域技术人员会理解的是,其他分布算法可以被用于节点的无缝对等加入和离开。使用导致“单调”行为的算法——其中之一是当新节点被增加时,数据仅在其他节点和该新节点之间被更换,而不是在群中的其他节点之间——将一般地导致优化的和有效的重新分布。通过使用下面论述的方法,服务器可以使用一致性哈希以对总服务的最小破坏来被增加到服务器池和从服务器池被移除。
在计算节点的集合中或在分布式基于策略的储存结构环境中,当机器加入或离开系统,储存在该机器上的数据应当被重新分布以平衡每个机器或节点上的负载。例如,如果系统包括四个机器并且一个机器离开该系统,则储存在该要离开的机器上的数据应当被重新分布到剩余的三个机器,以致剩余的三个机器相对于每个机器上的空间量具有基本上均匀的数据量。类似地,如果机器被增加到具有四个机器的系统,则储存在四个初始机器上的数据应当被重新分布,以致当前的五个机器相对于每个机器上的空间量具有基本上均匀的数据量。
重新分布数据可能引入无效率性,因为重新分布算法的标准实施方式使得重新分布期间该系统无法更新和查询。如上面指出的,使用一致性哈希的益处之一在于对哈希池增加和移除节点的成本被降低。尽管可以从现有节点移至新节点的关键字的数目被减少到k/n(其中,k为关键字的总数目,而n为主动节点(activenode)的数目),一致性哈希的标准实施方式仍使得重新分布期间该系统无法更新和查询。下面公开用于以最小服务中断来对机器的一致性哈希池有效地增加或移除节点的方法。
图5A为图示说明用于对计算节点的集合或分布式基于策略的储存结构环境增加新节点或机器的流程图500。该方法开始于框501,结束于框531,并且被划分为多个步骤,以致对服务和网络节点间协议的中断二者均被最小化。
在步骤510中,新节点加入作为“依附(leech)”节点。依附节点是能够与对等节点(peernode)相互作用的节点,但不是对等节点。在步骤510期间,依附节点获得系统中所有其他主动节点的关键字空间。
在步骤520中,依附节点从系统中其他主动节点接收与其将作为主动节点所拥有的关键字相关联的值的拷贝(copy)。在步骤520期间,实现依附节点及其对等节点之间的协调(reconciliation)。在依附节点和对等节点正进行协调时,依附节点还可以监控并记录任何新关键字和曾在步骤510间被处理或者被修改或更新的任何更新值。
并且在步骤530中,新节点触发同步化的重新加入以将其状态升级为主动对等点(activepeer)并且获得其自己的关键字空间的拥有权。新节点参与到同步化的协议中以加入作为主动对等点并且基本上立即准备好开始播种(seed)关键字和值。步骤530包括临时(短期的)暂停对空间进行的操作。主动对等点也可以被称为“播种者(seeder)”节点。
在实施方案中,现有播种者节点负责其关键字空间的单次读取,并且新节点或依附节点(其在步骤520中是离线的直到在步骤530中其加入作为对等节点或播种者节点)负担计算其拥有的关键字空间。允许新节点离线准备使其间对空间暂停操作的时间最小化。
在实施方案中,在步骤520期间,依附节点接收输入并且逐渐成为被同步的。就在步骤530之前,依附节点基本上完全被同步。因此,在步骤530,依附节点可以请求加入节点组。当新节点加入该组时,其基本上完全被同步,这导致快速且无缝的加入。
在实施方案中,步骤510之前,一致性哈希算法可以被使用(如上面在题为“使用一致性哈希的微队列分布”的部分中所论述的)来确定在群(不包括新节点,因为新节点在步骤510之前还尚未加入作为依附节点)中的节点上输入或关键字的分布。在步骤520期间,一致性哈希算法可以被使用来确定在包括新节点的群中的节点上输入或关键字的分布,因为新节点将很快加入该群。因此,新节点获知一旦其成为播种者节点其将“拥有”的输入和关键字。步骤520期间,一旦新节点确定其成为播种者节点其将“拥有”的输入时,该新节点从系统中的其他主动节点接收与其将作为主动节点而拥有的关键字相关联的值的拷贝。因而,使用一致性哈希以现有播种者节点上的最小负担来实现依附节点及其对等点之间的协调。
图5B是图示说明用于节点或机器的方法的流程图550,所述节点或机器正从计算节点的集合或者分布式基于策略的储存结构环境被移除。该方法开始于框551,结束于框570,并且被划分为多个步骤,以致对服务和网络节点间协议的中断均被最小化。
在步骤560,群中想要离开该群的节点发信号给其他播种者节点。在步骤561,要离开的机器或节点仍为播种者机器,而剩余的播种者机器或节点正读取数据和接收与在要离开的节点离开该群后其将“拥有”的关键字相关联的值的拷贝。步骤561期间,该群仍旧在运行。在步骤562,要离开的节点离开该群并且剩余的播种者节点获得从要离开的节点接收的输入和数据的拥有权。剩余的播种者机器或节点已经从要离开的节点预读取数据或输入,并且因此,当要离开的节点离开该组时,新节点已基本上完全被同步化,导致快速且无缝的离开。
图5B中图示说明的流程图涉及预定的离开并且用于离开群的方法因而类似于如加入问题的同步问题,只是下面参照图5C论述针对离开群的节点的某些附加考虑。图5C是图示说明不同类型的离开和不同类型的复制的表580。与其中数据没有被先前地复制582、被同步复制的584和被异步复制的586的情形相比,该表图示说明预定的(scheduled)离开592情形和非预定的离开594情形。
在系统中预定的离去592不具有复制(582)或具有异步复制(586)的情况下——即情形587和589——要离开的节点可以应答来自其对等节点(peernode)的同步查询来帮助同步化值(否则,剩余节点将占据空间全部)。在设定离去592的情况下如果已经使用复制584,剩余节点可以重新创建由要离开的节点遗留未履行的任何复制。
在一系统中未预定的离去594不具有复制582的情况下——即情形597——导致数据损失。因此,在实施方案中,同步数据复制是优选的。在一系统中未预定的离去594具有异步复制586的情况下——即情形599——可能导致数据损失并且系统可以异步地恢复复制。在一系统中未预定的离去594具有同步复制584的情况下——即情形598——系统可以异步地恢复复制。
同步化值基本上确保池中剩余节点具有针对先前由要离开的节点所拥有的关键字的值的有效拷贝。这包括短期暂停对空间进行的操作。异步地恢复复制允许池中的剩余节点实例化针对先前由要离开的(或已经离开的)节点上所复制的关键字的复制。
分布式容错
为避免如以上结合图5C所论述的数据损失情形597和599,数据可以在附加备份节点上被复制。当所有数据被复制至少一次时,数据损失的风险被大大降低。
在实施方案中,数据复制使用利用一致性哈希实现的分布式容错方法来实现。本领域技术人员会理解的是,其他分布算法可以用来跨储存结构环境分布关键字空间或微队列。以“单调”行为来使用分布——其中之一是当新节点被增加时,数据仅在其他节点和新节点之间被更换,而不是在群中的其他节点之间——将一般地导致优化的且有效的复制。
分布式容错可以被用在典型的一致性哈希环境中,其中关键字空间(和相关联的数据值)跨计算节点的集合被分布,或者被用在分布式基于策略的储存结构环境中。在其初始具体化中,分布式哈希是无状态的(stateless)分布算法多于“有状态的(stateful)”储存算法。如上所论述的,当重新用来实现分布式哈希表时,该算法使改变节点池的成本降低,并且减少对全局状态分享的要求。
在实施方案中,分布式哈希表的一致性哈希实现被扩展为提供并行分布式容错。这通过将关键字的附加拷贝映射到一致性哈希圈(例如参见图4中所示出的一致性哈希圈400)上的下一最靠近节点来实现。“下一最靠近”是由从计算中移除的最靠近节点(和其全部伪节点)来确定的。
图6A为图示说明使用一致性哈希的分布式容错的示意图。关键字602的初级拷贝被映射到通过一致性哈希算法被认为的最靠近节点608。该节点将成为针对关键字602的播种者节点。接着,种子机器从计算中被移除并且该算法被重新运行。然后,该算法将展现第二靠近机器或节点610。出于复制的目的,关键字604的复制拷贝(或次级的)被映射到第二靠近节点610。这可以针对关键字的附加拷贝来重复进行(例如,第二复制拷贝606可以被映射到第三靠近节点612),达到由池中节点数目限制的复制的期望程度。
本技术创建与初级分布成比例的分布式容错备份分布,并且在故障情形下,保持相同的性质和效率。针对池中任何特定节点的关键字的备份拷贝被完全地分布在池中的剩余节点上。
图6B图示说明在一群的非初级节点上的输入的分布式复制600。关注节点A602的主要作用,即来自节点A602的复制数据被分布到多个非初级节点。来自节点A602的复制数据例如可以被分布到节点B604、节点Q606以及节点S608。节点A602还可以具有来自其他节点的复制数据(次级数据或其他复制的等级)。每个节点将一组关键字作为初级值,而同时将一组复制的关键字作为次级值。
一旦节点故障,由故障的节点所“拥有”的输入已准备好被完全地分布在池中的剩余节点上。当初级节点失效(crash)时,针对该初级节点的数据的次级节点成为针对该数据的新初级节点并且将开始播种其已经复制的数据。因此,故障不会简单地将负载传输至单个备份节点。如在先前的部分中所描述的,从故障的恢复只是使最新修复的节点重新加入池的问题。
映射和分布模块
图8A-图8C为图示说明用于映射节点和关键字值的模块800、820和840的示意图。
图8A为映射和分布模块800。映射和分布模块800接收有关节点或在机器群(n1...nn)中可用的机器的数目的信息和关于与空间中基于策略的储存结构相关联的关键字值(k1...km)的信息。映射和分布模块800可以使用分布算法将关键字值映射到节点。在实施方案中,如上面结合图1-4所论述的,映射和分布模块800使用一致性哈希算法来将关键字值映射到节点。模块800可以为本领域已知的任何适合的逻辑器件,并且可用以硬件、软件或其组合的方式来实现。模块800还可以被储存在计算机可读介质上,作为用于机器的指令。
图8B为映射和重新分布模块820。映射和重新分布模块820接收有关节点或在机器群(n1...nn)中可用的机器的数目的不断变化的信息,所述节点包括正离开群的节点或者正加入群的节点,以及关于与空间中的基于策略的储存结构相关联的关键字值(k1...km)的信息。当节点正加入或正离开群时,映射和重新分布模块820能够使用重新分布算法将关键字值重新分布到节点。在实施方案中,当节点加入或者离开群时,如上面结合图5A-图5C所论述的,映射和重新分布模块820使用一致性哈希算法将关键字值重新分布到节点。模块820可以为本领域已知的任何适合的逻辑器件,并且可以以硬件、软件或其组合的方式来实现。模块820还可以被储存在计算机可读介质上,作为用于机器的指令。
图8C为映射和复制映射模块840。映射和复制映射模块840接收有关节点或在机器群(n1...nn)中可用的机器的数目的信息,以及有关与空间中基于策略的储存结构相关联的关键字值(k1...km)的信息。映射和复制映射模块840能够将关键字值映射到节点,并且能够出于复制的目的将关键字值的拷贝映射到其他节点。在实施方案中,如以上结合图6A和图6B所论述的,映射和复制映射模块840使用一致性哈希算法将关键字值和复制的关键字值映射到节点。映射和复制映射模块840可以为本领域已知的任何适合的逻辑器件,并且可以以硬件、软件或其组合的方式来实现。映射和复制映射模块840还可以被储存在计算机可读介质上,作为用于机器的指令。
尽管上面已经描述了根据本文所公开的原理的各种实施方案,应该理解,这些仅仅是以实施例而不是限制性的方式给出的。因此,一个或更多个本发明的宽度和范围不应该被任何上述示例性实施方案所限制,而应该仅仅根据从本公开所授权的任何权利要求及其等同范围来限定。另外,上面的优点和特征是在所描述的实施方案中提供的,但是不应该将这些授权的权利要求的应用限制到实现上述优点中的任何优点或所有优点的过程和结构。
此外,这里的章节标题是为了符合37CFR1.77下的建议或者以其他方式提供组织标记而提供的。这些标题不应该限制或表征在任何可以从该公开被授权的权利要求中给出的一个或更多个发明。具体地并且以实施例的方式,尽管所述标题提及“技术领域”,但是权利要求书不应该受到在该标题下选择来用于描述所谓的技术领域的语言的限制。此外,对“发明背景”中的技术的描述并非要被解读为承认该技术是本公开中一个或更多个发明的现有技术。“发明内容”也并非要被视为是这里的权利要求书中所阐述的一个或更多个发明的特征。此外,该公开中任何以单数形式提及“发明”不应该被用于争论在该公开中仅要求保护单个具有新颖性的要点。根据伴随该公开的多项权利要求的限制可以提出多个发明,并且因此这些权利要求限定了由此受到保护的一个或更多多个发明及其等同物。在所有情况下,应该根据说明书基于这样的权利要求书本身的价值来考虑权利要求书的范围,而不应该受本文的标题的约束。

Claims (12)

1.一种对分布式储存系统的计算节点集合增加节点的方法,所述方法包括:
将新节点加入所述计算节点集合作为依附节点;
在所述依附节点处接收来自所述计算节点集合中所有其他主动节点的信息;
基于所接收的信息同步化所述依附节点;以及
此后,将所述依附节点升级为所述计算节点集合中的主动节点;
其中所述加入所述新节点作为依附节点的步骤包括所述依附节点从所述计算节点集合中的所有所述其他主动节点获得关键字空间;
其中所述依附节点在升级为主动节点之前不是主动节点,并且
其中所述接收信息的步骤包括从所有其他主动节点接收关键字值的拷贝,所述关键字值是这样的关键字值,一旦所述依附节点成为主动节点,所述关键字值的拥有权将从所述其他主动节点被传递到所述依附节点。
2.如权利要求1所述的方法,其中所述加入所述新节点作为依附节点的步骤包括所述依附节点与所述计算节点集合中的所述其他主动节点相互作用。
3.如权利要求1所述的方法,其中所述接收信息的步骤还包括协调所述依附节点与所述计算节点集合中的所述其他主动节点之间的数据。
4.如权利要求1所述的方法,其中所述接收信息的步骤还包括所述依附节点监控更新的关键字值。
5.如权利要求1所述的方法,其中接收信息的步骤还包括使用一致性哈希算法计算关键字值在包括所述新节点的计算节点集合上的分布。
6.一种从分布式储存系统的计算节点集合移除要离开的节点的方法,所述方法包括:
所述要离开的节点发信号通知所述计算节点集合中的所有其他节点所述要离开的节点即将离开所述集合;
所有所述其他节点读取来自所述要离开的节点的信息;
在所述要离开的节点离开所述集合之前,所有所述其他节点同步化来自所述要离开的节点的所述信息;
所述要离开的节点离开所述计算节点集合,并且
一旦所述要离开的节点离开所述集合,所有所述其他节点获得与先前由所述要离开的节点拥有的关键字值相关联的数据的拥有权,
其中所有所述其他节点读取信息的步骤包括所有所述其他节点接收与由所述要离开的节点拥有的所述关键字值相关联的数据的拷贝,与所述关键字值相关联的所述数据是这样的数据,一旦所述要离开的节点离开所述集合,所述数据的拥有权将从所述要离开的节点被传递到所述其他节点。
7.如权利要求6所述的方法,还包括复制先前在所述要离开的节点上被复制的关键字值。
8.如权利要求6所述的方法,其中读取来自所述要离开的节点的信息的步骤还包括使用一致性哈希算法计算关键字值在不包括所述要离开的节点的计算节点集合上的分布。
9.一种用于在分布式储存系统的计算节点集合上复制数据的方法,所述方法包括:
计算初级节点,所述初级节点用于储存与关键字值相关联的基于策略的储存结构;
计算次级节点,所述次级节点用于储存与所述关键字值相关联的所述基于策略的储存结构的拷贝;以及
复制储存在所述初级节点上的所述基于策略的储存结构并且储存所述次级节点上的所述基于策略的储存结构的所述拷贝,
其中一旦所述初级节点离开所述集合,所述基于策略的储存结构的拥有权从所述初级节点被传递到所述次级节点。
10.如权利要求9所述的方法,其中所述计算所述初级节点和计算所述次级节点的步骤包括使用具有单调行为的分布算法。
11.如权利要求9所述的方法,其中所述计算所述初级节点和计算所述次级节点的步骤包括使用一致性哈希算法。
12.如权利要求11所述的方法,其中所述初级节点包括同与一致性哈希刻度上的基于策略的储存结构相关联的映射的关键字值最靠近的节点,并且其中所述次级节点包括同与所述一致性哈希刻度上的所述基于策略的储存结构相关联的映射的关键字值下一最靠近的节点。
CN201080026694.6A 2009-04-16 2010-04-16 基于策略的储存结构分布 Active CN102483768B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510818774.XA CN105373613B (zh) 2009-04-16 2010-04-16 基于策略的储存结构分布

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17007909P 2009-04-16 2009-04-16
US61/170,079 2009-04-16
PCT/US2010/031512 WO2010121218A2 (en) 2009-04-16 2010-04-16 Policy-based storage structure distribution

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510818774.XA Division CN105373613B (zh) 2009-04-16 2010-04-16 基于策略的储存结构分布

Publications (2)

Publication Number Publication Date
CN102483768A CN102483768A (zh) 2012-05-30
CN102483768B true CN102483768B (zh) 2015-12-16

Family

ID=42983180

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510818774.XA Active CN105373613B (zh) 2009-04-16 2010-04-16 基于策略的储存结构分布
CN201080026694.6A Active CN102483768B (zh) 2009-04-16 2010-04-16 基于策略的储存结构分布

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510818774.XA Active CN105373613B (zh) 2009-04-16 2010-04-16 基于策略的储存结构分布

Country Status (5)

Country Link
US (2) US9235623B2 (zh)
EP (1) EP2419845B1 (zh)
CN (2) CN105373613B (zh)
BR (1) BRPI1016200B1 (zh)
WO (1) WO2010121218A2 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990110B1 (en) 2006-08-14 2018-06-05 Akamai Technologies, Inc. Private device cloud for global testing of mobile applications
US10929401B2 (en) * 2009-04-16 2021-02-23 Tibco Software Inc. Policy-based storage structure distribution
US20110153737A1 (en) * 2009-12-17 2011-06-23 Chu Thomas P Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
US10084856B2 (en) * 2009-12-17 2018-09-25 Wsou Investments, Llc Method and apparatus for locating services within peer-to-peer networks
US9450834B2 (en) 2010-07-19 2016-09-20 Soasta, Inc. Animated globe showing real-time web user performance measurements
US9251035B1 (en) 2010-07-19 2016-02-02 Soasta, Inc. Load test charts with standard deviation and percentile statistics
US9201890B2 (en) * 2010-10-04 2015-12-01 Dell Products L.P. Storage optimization manager
US8776207B2 (en) * 2011-02-16 2014-07-08 Fortinet, Inc. Load balancing in a network with session information
US9112812B2 (en) * 2011-09-22 2015-08-18 Embrane, Inc. Distributed virtual appliance
KR101620762B1 (ko) 2012-01-23 2016-05-12 제이엑스 킨조쿠 가부시키가이샤 고순도 구리 망간 합금 스퍼터링 타깃
US20130263151A1 (en) * 2012-04-03 2013-10-03 Microsoft Corporation Consistent Hashing Table for Workload Distribution
US10601674B2 (en) 2014-02-04 2020-03-24 Akamai Technologies, Inc. Virtual user ramp controller for load test analytic dashboard
US9703788B1 (en) * 2014-03-31 2017-07-11 EMC IP Holding Company LLC Distributed metadata in a high performance computing environment
EP2947579A1 (en) * 2014-05-22 2015-11-25 Deutsche Telekom AG Method for generating a backup copy of a distributed data structure, system for generating a backup copy of a distributed data structure, program and computer program product
US10185730B2 (en) * 2014-12-31 2019-01-22 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
US10346431B1 (en) * 2015-04-16 2019-07-09 Akamai Technologies, Inc. System and method for automated run-tme scaling of cloud-based data store
JP6241449B2 (ja) * 2015-05-21 2017-12-06 横河電機株式会社 データ管理システム及びデータ管理方法
JP6697158B2 (ja) * 2016-06-10 2020-05-20 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
CN107908372B (zh) * 2017-12-14 2021-09-10 南京云创大数据科技股份有限公司 一种异地异构的多融合存储方法
US10540207B1 (en) 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
US11429452B2 (en) 2020-04-16 2022-08-30 Paypal, Inc. Method for distributing keys using two auxiliary hashing functions
US11310309B1 (en) 2020-12-11 2022-04-19 Amazon Technologies, Inc. Arc jump: per-key selection of an alternative server when implemented bounded loads
US11140220B1 (en) * 2020-12-11 2021-10-05 Amazon Technologies, Inc. Consistent hashing using the power of k choices in server placement

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101102250A (zh) * 2006-07-07 2008-01-09 阿尔卡特朗讯公司 用于自组织网络的分布式散列机制

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPR464601A0 (en) * 2001-04-30 2001-05-24 Commonwealth Of Australia, The Shapes vector
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US6993534B2 (en) * 2002-05-08 2006-01-31 International Business Machines Corporation Data store for knowledge-based data mining system
US6941310B2 (en) * 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
US8200775B2 (en) * 2005-02-01 2012-06-12 Newsilike Media Group, Inc Enhanced syndication
AU2003284305A1 (en) * 2003-10-21 2005-06-08 United Parcel Service Of America, Inc. Data structure and management system for a superset of relational databases
US7493313B2 (en) * 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20060236386A1 (en) * 2005-03-31 2006-10-19 Popkin Laird A Method and apparatus for cooperative file distribution in the presence of firewalls
US7584205B2 (en) * 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
DE602005020331D1 (de) * 2005-12-22 2010-05-12 Microsoft Corp Verbindungsverwaltung in peer-to-peer-Datenverteilungsnetzen
US7664107B2 (en) * 2006-04-05 2010-02-16 Microsoft Corporation Self-stabilizing and fast-convergent structured peer-to-peer overlays
US8374086B2 (en) * 2007-06-06 2013-02-12 Sony Computer Entertainment Inc. Adaptive DHT node relay policies

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101102250A (zh) * 2006-07-07 2008-01-09 阿尔卡特朗讯公司 用于自组织网络的分布式散列机制

Also Published As

Publication number Publication date
EP2419845B1 (en) 2018-03-28
CN105373613A (zh) 2016-03-02
BRPI1016200A2 (pt) 2016-04-19
CN102483768A (zh) 2012-05-30
EP2419845A2 (en) 2012-02-22
EP2419845A4 (en) 2014-03-12
US20160078117A1 (en) 2016-03-17
BRPI1016200B1 (pt) 2020-10-20
US9367600B2 (en) 2016-06-14
CN105373613B (zh) 2019-05-14
US20110066591A1 (en) 2011-03-17
WO2010121218A3 (en) 2011-02-24
US9235623B2 (en) 2016-01-12
WO2010121218A2 (en) 2010-10-21

Similar Documents

Publication Publication Date Title
CN102483768B (zh) 基于策略的储存结构分布
US9898522B2 (en) Distributed storage of aggregated data
US11609914B2 (en) Policy-based storage structure distribution
CN1692356B (zh) 用于对现存文件重新条带化的方法
US8732118B1 (en) Distributed performance of data aggregation operations
JP5765416B2 (ja) 分散ストレージシステムおよび方法
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
US20080126404A1 (en) Scalable distributed object management in a distributed fixed content storage system
US20170206140A1 (en) System and method for building a point-in-time snapshot of an eventually-consistent data store
US20070179981A1 (en) Efficient data management in a cluster file system
CN111212100B (zh) 消息队列发布与订阅的同步方法及其系统
US8572037B2 (en) Database server, replication server and method for replicating data of a database server by at least one replication server
US20130031229A1 (en) Traffic reduction method for distributed key-value store
US20120197840A1 (en) Push replication for use with a distributed data grid
JP2009259007A (ja) 分散格納方法、分散格納システム及び分散格納装置
WO2009122528A1 (ja) 統合構成管理装置、異種構成管理装置、バックアップデータ管理システム
CN104102557A (zh) 一种基于聚类的云计算平台数据备份方法
US11188258B2 (en) Distributed storage system
KR101718739B1 (ko) 이기종 하둡을 위한 동적 데이터 복제 시스템 및 방법
Cooper et al. PNUTS to sherpa: Lessons from yahoo!'s cloud database
CN104360915A (zh) 一种基于分布式存储的数据恢复方法及装置
CN115168366B (zh) 数据处理方法、装置、电子设备以及存储介质
JP2011180658A (ja) 分散ファイルシステムにおける冗長化方法
JP2015141451A (ja) 記憶装置、複製方法及び複製プログラム
JP2004157766A (ja) データストレージ装置

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