分布式存储系统中基于定额的事务一致成员管理的制作方法

xiaoxiao2020-7-22  4

专利名称:分布式存储系统中基于定额的事务一致成员管理的制作方法
分布式存储系统中基于定额的事务一致成员管理背景计算机技术(例如,微处理器速度、存储器容量、数据传输带宽、软件功能等等)的进步已经广泛地有助于各种产业中增加的计算机应用程序。通常提供常常被配置成服务器阵列的日益强大的服务器系统来为起源于例如诸如万维网等的外部源的请求提供服务。随着可用的电子数据的量的增长,以促进用户友好的和快速的数据搜索和检索的可管理方式存储这样的数据变得更加重要。现今,普通的方法是将电子数据存储在一个或多个数据库中。典型的数据库可以被称为带有被结构化为例如使得计算机程序可以快速地搜索和选择所期望的数据片段的数据的经组织的信息集合。此外,在这样的环境中,联合是指已经相互建立信任且允许在它们本身中间共享用户身份信息的一组组织或服务提供商。随着诸如web服务等的分布式计算模型的出现,诸如服务提供商(SP)等的实体中的依存性增加了。因此,当前的趋势是聚焦于身份信息的组织间的管理和相互依存的管理, 而非供内部使用的身份管理解决方案。这可以被称为联合身份管理。一般地,联合身份是识别以日益频繁的速率在企业边界之间移动的个体的分布式计算构造。联合身份的实际应用由在相同的时刻管理若干异构系统所需的大型跨国公司来代表。在这样的分布式系统中,存在对节点的适当管理和配置/重配置的各种挑战。例如,个体节点可能随机地失效,这在合适的不可预见性没有安排妥当时可能引起数据丢失。 同样地,常常要求围绕系统移动所复制的数据,这进一步可以产生可靠性问题和一致性问题。此外,在与这样的节点的全面管理相关的数据经受例如由集中式高速缓存的失效引起的损失时,可靠性问题可以进一步变得复杂。概述事务性数据存储中的数据可以跨越充当分布式系统中的节点的许多计算机或其他设备而被复制,例如出于冗余或高的可用性目的。然而,尽管分布式系统可以提供高的可用性保证,但在其上复制事务性数据存储的底层计算机可能本身是不可靠的,因而使得难以跨越分布式系统中的节点维持事务性数据存储的事务性一致性。被配置为在一组节点中的每一节点上被复制的事务性数据存储可以被重配置为在不同的一组节点中的每一节点上被复制。可以部分地通过使用定额以事务一致的方式完成从当前配置到新配置的重配置。 当前配置和新配置中的每一个可以与至少一个定额相关联,该定额可以少于或等于该配置中的节点的数量。可以有选择地执行重配置操作以使得它们仅当在将要对其执行操作的配置中的一定额的节点指示同意该操作时才被执行。重配置过程可以涉及许多步骤,包括选择用于新配置的唯一版本标识符、将在新配置中的节点上复制的事务性数据存储更新到一致状态、去激活旧配置并激活当前配置。 通过要求从重配置过程的一个步骤进行到后续步骤涉及从该配置中的一定额的节点获得接受或提交,可能允许重配置过程抵御配置中的节点的失效,同时仍保证跨越配置的一致性水平。前述是本发明的非限制性概述,本发明由所附权利要求界定。为实现前述的和相关的目的,在此结合下列描述和附图描述所要求保护的本主题的某些说明性方面。这些方面指示可以实践本主题的各种方式,所有这些方式都预期是在所要求保护的本主题的范围内。当结合各图考虑时,可以从下列详细描述明显看出其他优点和新颖特征。附图简述不预期按比例绘制附图。各图中,各种图中阐释的每一相同的或接近相同的组件由相似的数字表示。为清晰起见,在每一图中并非标记每一组件。各图中

图1阐释根据本主题创新的特定方面的重构组件的框图;图2阐释根据本主题创新的特定方面的与多个节点相关联的示例性划分和重建;图3阐释带有可以根据本主题的一个方面创新重构的配置组件的系统的框图;图4A阐释根据本主题创新的一个方面设置新配置的方法;图4B是其中可以实践重配置过程的网络的框图;图4C是重配置过程的流程图;图5阐释用于实现本主题创新的各种方面的示例性环境;以及图6是根据本主题创新的一个方面可以被用于数据检索的样本计算环境的示意性框图。详细描述现在参考附图描述本主题创新的各种方面,其中相似的数字始终是指相似的或对应的元素。然而,应理解,各图和与其相关的详细描述不旨在将所要求保护的本主题限制在所公开的特定形式。相反,其意图是覆盖落在所要求保护的本主题的精神和范围内的所有修改、等效物和替代物。本发明者已经明白,随着其中可以跨越许多计算机而复制数据的分布式计算系统的出现,存在对以事务一致的方式重配置所复制的数据的机制的需要。本发明者还明白,这样的分布式系统频繁地需要即使是在被用于实现分布式系统的底层计算机本身可能偶尔崩溃时也提供高的数据可用性。诸如数据库的部分等的事务性数据可以跨越一组节点而被复制,且可能因此需要从该组添加或删除,在该组节点中可能存在对即使在节点本身不可靠时也维持跨越该组节点而复制的数据的事务性一致性的需要。因此,在本发明的一些实施方式中,包括其中的每一个可以包含事务性数据存储的副本的一组节点在内的当前配置可以响应于重配置请求而被重配置成包括不同的一组节点的新配置,同时跨越所复制的事务性数据存储而维持事务性一致性。也通过使用定额在整个重配置过程中维持事务性一致性,其中旧配置和新配置中的每一个可以与至少一个定额相关联。基于配置中的一定额的节点是否指示同意该操作, 可以有选择进行针对该配置的重配置操作。重配置过程可以涉及许多步骤,包括选择用于新配置的唯一版本标识符、将在新配置中的节点上被复制的事务性数据存储更新到一致状态、去激活旧配置和激活当前配置。确保从重配置过程的一个步骤进行到随后的步骤要求从该配置中的一定额数量的节点获得接受或提交,这允许重配置过程抵御配置中的节点的失效,同时仍然确保跨越该配置的一致性水平。此外,该系统的其他方面涉及经由重构组件重构与节点(节点与实现读/写条件的动态定额的分布式系统相关联)的重配置有关的数据/信息。在一个方面中,重构组件允许跨越分布式系统本身存储信息的复制的部分副本。然后,这样的分布式片段可以被用于以一致的方式重构中央管理系统的内容。因此,重构组件可以从该系统上的各种位置重构中央管理组件的内容,其中中央管理组件/配置组件可以被看作是高速缓存。此外,可以经由中央管理组件的协议划分提供可伸缩性(例如,采用与被用来使得该系统的其他部分高度可用的协议相同的协议)。同样地,将用于领导人选举的中央管理组件用于系统的其余部分,允许灵活性和尺度(如果使用常规的基于共识的领导人选举算法,则通常不提供)。图1阐释采用重构组件101的系统100的框图,重构组件101允许重构与分布式系统的重配置成员相关的信息。重构组件101还可以与领导人选民组件102和群集配置组件103相关联,领导人选民组件102和群集配置组件103可以促进与主(例如,活动的)配置管理器实例/组件相关联的指派/操作。图2阐释根据示例性的方面使用基于定额的方法来重构配置管理器组件的系统 200的框图。图3阐释实现配置管理器组件302连同多个节点作为分布式环境的一部分的系统 300的框图,所述分布式环境诸如可以根据本主题创新的一个方面重构的环310。配置管理器组件302可以通过实现基于动态定额的读/写条件且以事务一致的方式将节点(例如, 服务器)的分布式系统的成员从旧配置重配置成新配置,这在这样的变换期间减少了数据损失。这样的定额可以表示预先确定的数量,其中读定额和写定额之和超过了该配置的节点数量(例如,给定的配置的读定额和写定额重叠)。图4A阐释用于配置节点网络的各种阶段的相关方法400,节点网络可以根据本主题创新的进一步方面重构。一旦接收到重配置请求,主副本上的重配置代理 (Reconfiguration Agent)可以发起对旧的或现有的配置的去激活,且提供新配置的进一步的激活(例如,确保其提交被客户机所确认的任何事务将被新配置保留;且还没有提交或其提交还没有被确认的事务可以或被提交或回退)。这可以包括实现四个阶段,即阶段1 在402处的投票和追赶在此阶段期间,主副本为新配置建议全局唯一 ID。该全局唯一 ID预期对每一连续配置增加。一旦被旧配置和新配置两者的一定额的副本接受,就保证这样的ID大于此分区的任何先前所接受的ID。所建议的ID被发送给旧配置和新配置两者中的所有副本,副本中的每一个基于ID是否大于它们先前已经观察到的任何ID接受或拒绝该ID。因此,如果副本接受这样的ID,它还可以向主副本通知其最新的事务序列号并停止接受新事务。替代地,如果副本拒绝所建议的ID,则主副本拾取新的更高ID并重启阶段1。一旦来自旧配置和新配置两者的一定额的副本已经接受所建议的ID,则主副本指示新配置中的副本开始追赶,以使得可以跨越重配置而维持事务性一致性和数据安全性要求。这可以涉及对个体副本的追赶和事务回退的混合。此外,保证该过程得到符合内容的当前状态的一定额的副本,且该过程提供跨越该重配置的原子性、一致性、隔离性、耐久性(ACID)性质。 一旦已经追赶到至少新配置中的一定额的副本,阶段1就可以完成。阶段2 在404处去激活旧配置在此阶段期间,主副本协调旧配置的去激活。去激活的目的是保证,除非Cl = C2, 否则永远不可能找到满足以下条件的两组副本Rl和R2 =Rl Φ R2、Rl中的每一副本rl宣称配置Cl是最新配置且Rl至少形成Cl的写定额、R2中的每一副本r2宣称配置C2是最新配置且R2至少形成C2的写定额。此外,去激活消息可以被发送给旧配置中的每一副本。 如果副本中的每一个匹配它已经接受的最新的投票建议,则副本中的每一个可以接受去激活。在副本的读定额确认该去激活时,此阶段完成。阶段3 在406处激活新配置在这样的阶段期间,主副本协调新配置的激活。激活的目的是保证写定额的新配置知道该配置在允许对该复制单元的内容作出改变之前已经被激活。这可以确保任何内容改变仅当定额的节点丢失时才丢失。该激活消息还可以被发送给新配置中的每一副本。如果这些副本中的每一个匹配它已经接受的最新的投票建议,则这些副本中的每一个可以接受激活。在新配置中的写定额的副本已经接受激活时,这样的阶段完成。在这一点,新配置是活动的和可用的。阶段4 在408处提交这样的阶段是用于提交重配置的可选阶段,这是由于到阶段3结束时,旧配置已经被去激活且新配置已经被激活。然而,这仅对主副本来说以及从系统外全局的观点来说是已知的。因此,这样的提交阶段贯穿所有分布式系统中所有当事方而分发此知识,即分配给旧配置和新配置中的每一副本。可以在阶段3完成之后的任何点向配置管理器通知重配置的完成而不考虑是否实现阶段4。图4B和图4C提供上面在图4A中描述的重配置过程的更多细节。图4B是其中可以实践重配置过程的示例性网络420。网络420包括在任何合适的计算机通信介质(例如, 无线通信或有线通信,等等)上通信的多个节点,包括可以类似于上面结合图1-图3所讨论的配置管理器组件的配置管理器421。网络420也包括当前的(即“旧的”)配置428中的第一组节点422、似4和426,以及新配置448中的第二组节点442、444和446。第一组节点和第二组节点可以相互具有任何合适的关系。例如,第一组节点和第二组节点可以具有公用的一个或多个节点,每一组可以包括相同的一组节点,或者这两组节点可以完全不相交。多个节点包括配置管理器421、节点422···426,且可以以任何合适的方式(包括硬件和软件的任何合适的组合)实现节点442…446。例如,配置管理器421和节点422···似6中的每一个可以是使用任何合适的计算机体系结构的台式计算机或服务器计算机,且可以包括操作系统,例如由微软公司开发的WINDOWS 操作系统的变体。在一些实施方式中,可以在被配置为作为相干单元而操作的多个计算机上实现一个或多个节点,例如配置管理器421, 例如出于负载平衡或冗余目的。每一节点都可以包含或被连接到包含分布式数据的复制的存储介质。节点422、 424和426中的每一个包括分别被阐释为副本432、434和436的分布式数据的副本。分布式数据可以是分布式存储系统的组件。例如,在节点422、似4和似6上复制的分布式数据可以是分布式数据库的部分,例如该数据库中的数据分区。可以使用任何合适的分布式数据库。在一些实施方式中,可以使用由微软公司开发的SQL krver 数据库的变体。如上面所讨论的,副本432、434和436中的每一个可以存储多个事务。重配置操作可以改变存储数据的方式。代替在第一组节点上被复制、在图4B中被阐释为当前配置428,在重配置之后,当前的信息将在第二组节点上被复制、在图4B中被阐释为新配置448。因而,至少到重配置过程结束时,新配置428中的节点442、444和446中的每一个也可以分别包含副本452、妨4和456。重配置过程可以涉及执行从当前配置4 到新配置448的实际数据移动,例如如果新配置448中的节点最初不包含正被复制的数据分区的副本,或者如果新配置448中的节点上的副本过期。然而,在一些实施方式中或在一些场景中,新配置中的各节点可能已经包含数据分区的最新副本,在该情况中重配置过程可以主要涉及去激活旧配置和激活新配置。在一些实施方式中,由配置管理器421发起重配置过程。配置管理器421可以出于多种原因而发起重配置。例如,重配置可以由各种事件触发,这些事件包括节点或副本失效、节点或副本恢复、副本创建或其他管理动作。重配置过程可以在网络中的任何合适的节点上执行。在一些实施方式中,配置管理器421可以主要负责实现重配置过程,尽管在其他实施方式中,配置管理器421可以向网络中的另一节点发起重配置请求,该另一节点然后可以响应于该请求而执行重配置过程。在一些实施方式中,新配置中的一个节点可以被指派为在图4B中被阐释为“主重配置代理”节点442的“主节点”,它负责响应于来自配置管理器428的重配置请求而执行重配置过程。实现重配置过程可以涉及将诸如重配置消息458 和459等的消息发送给当前配置4 和新配置448两者中的主节点442和其他节点,并从这些节点发送这些消息。图4C阐释可以在重配置操作中使用的基于定额的处理的多种方式。图4C阐释, 作为重配置分布式数据库的部分的重配置操作,诸如去激活旧配置和激活新配置等。如果这些重配置操作中的每一个中所涉及的一定额的节点不指示接受指示重配置操作应被执行的消息,则重配置操作不进行。相反,在重配置操作中所涉及的适当定额的节点响应于重配置消息或命令而指示接受时,重配置操作可以进行。正如图4C中所阐释的,重配置过程可以涉及将数据分区从节点的当前的(即“旧的”)配置移动到节点的新配置。尽管在随后的讨论中在图4C中阐释的过程被假设为在新配置中的主节点上实现,且被假设为响应于从配置管理器接收重配置请求而开始,但图4C 的过程可以在网络中的任何合适的节点上实现,且可以基于任何何时的事件、刺激或条件而开始。在一些实施方式中,数据分区的每一配置可以与版本标识符相关联,以使得数据分区的新配置与不同的版本号相关联。尽管可以选择任何合适的方案来实现版本标识符, 但在一些实施方式中,用于数据分区的新配置的版本标识符也应该高于先前或当前与该数据分区相关联的版本标识符的任何其他值。因而,新配置的版本标识符应该高于与旧配置相关联的版本标识符。与新配置相关联的版本标识符也预期高于与该数据分区的任何其他配置相关联的任何版本标识符,包括与该数据分区的失效重配置相关联的版本标识符。尽管如此,在其他实施方式中,可以使用其他机制来查明当前的版本标识符。在框460,主节点可以为与新配置相关联的版本标识符确定新的值。在一些实施方式中,主节点可以选择高于与旧配置相关联的版本号的值。然后,主节点可以将包含这一为新的版本标识符建议的值的消息发送给新配置和旧配置两者中的节点。然后,主节点可以等待,直到它已经从至少新配置中的一定额的节点以及旧配置中的一定额的节点接收到指示各节点已经接受为新配置建议的版本标识符的响应。在一些实施方式中,与旧配置和新配置相关联的定额将是相同的,或者可以是该配置中的节点的相同百分比。然而,不要求与旧配置和新配置相关联的定额是相同的或者以相同方式确定。在一些实施方式中,主节点可以等待旧配置中的读定额的节点接受,并等待新配置中的写定额的节点接受。在一些实施方式中,重配置过程可以不进行(即,可以被挂起),直到旧配置中的读定额的节点和新配置中的写定额的节点接受所建议的版本标识符。此外,在一些实施方式中,即使在旧配置中的读定额的节点和新配置中的写定额的节点已经接受新的所建议的版本标识符之后,主节点可以仍然等待预先确定的时间或其他事件,以便允许较慢的副本响应,且可能拒绝所建议的版本标识符。在框462,然后,主节点可以检查它是否已经从新配置或旧配置中的任一个中的任何节点接收到指示节点已经拒绝建议的响应。节点可以出于多种原因拒绝所建议的版本标识符。例如,如果节点先前看到高于所建议的版本标识符的与该数据分区相关联的版本标识符,则节点可以拒绝该建议。如果是这样,拒绝节点可以在拒绝响应中向主节点发送它先前已经看到的版本标识符。然后,该过程可以进行到框464,框464中,该过程在其上运行的节点可以判断它是否仍然是新配置的主节点。在一些实施方式中,出于多种原因,新配置的主节点可以改变,这可以响应于来自配置管理器的命令而进行。如果在框464重配置过程在其上运行的节点判断它不再是主节点,则在框466它可以中止重配置过程。可以在这一点进行图4C的重配置过程。否则,如果在框464判断重配置过程在其上运行的节点仍然是主节点,则主节点可以通过返回到框460来重启重配置过程。然后,它可以重复上面所讨论的过程,此时选择比任何先前看到的该配置的版本标识符高的为新配置建议的新的版本标识符,包括被包括在响应于先前的建议而发送的拒绝消息中的版本标识符。否则,如果主节点在框462判断没有节点拒绝该建议,那么,在框468,主节点可以用旧配置中最近复制的数据来更新新配置的节点中复制的数据。这可以以任何合适的方式进行。在一些实施方式中,此操作可以以两个步骤进行。首先,如果主节点不包含来自旧配置的副本的最近复制,那么,主节点可以用最近的数据更新(或“追赶”)其来自旧配置中的节点的数据分区的本地副本。在一些实施方式中,从接受版本标识符的旧配置的节点中选择带有最近数据的旧配置中的节点,如步骤460中所讨论的。判断节点包含最新的数据可以以任何合适的方式来进行。在一些实施方式中,这可以通过检查与被存储在该副本中的最新的事务相关联的标识符来进行。—旦主节点具有副本的最近复制,在一些实施方式中,然后,主节点就可以禁用数据分区上的用户事务,且指示新配置中的其他节点更新它们的副本。然后,主节点可以等待更新新配置中的写定额的节点。在一些实施方式中,更新副本可以涉及更新该副本以至少存储全部已经由旧配置中的写定额的副本提交的事务。在一些实施方式中,新配置中的写定额的节点上的副本可以被更新以存储一致的一组事务。如果新配置的特定副本包含比由旧配置中的写定额的节点提交的事务稍后的事务,则更新副本可以因而也包括事务回退。如果用户事务在它被提交之前就被中止,则可以出现这样的情况,使得事务被存储在少于旧配置中的写定额的节点上。在一些实施方式中,重配置过程可以不进行(即,可以被挂起),直到新配置中的写定额的副本已经被更新以存储一致的一组事务。一旦新配置中的写定额的节点已经被追赶,重配置过程就可以涉及将重配置消息发送到旧配置和/或新配置的节点,并等待给定的配置中的一定额的节点接受该消息。重配置消息可以包括例如激活消息或去激活消息。例如,在由图4C所阐释的示例中,在框 470,然后,主节点可以将去激活消息发送给旧配置中的节点。去激活消息可以包括所建议的新配置,所建议的新配置可以包括所建议的新配置中的节点的标识符。如果旧配置中的节点接受去激活消息,它可以将其当前活动配置的状态改变为“被去激活”,且可以将所建议的新配置存储在该节点上的合适的计算机存储中,例如存储在硬盘上。旧配置中的每一节点也都可以被配置为将指示该节点是接受还是拒绝去激活消息的响应发送回给主节点。然后,主节点可以等待来自旧配置中的节点的指示它们已经接受去激活消息的读定额的响应。接下来,在框472,主节点可以判断来自旧配置中的至少一个节点的对去激活消息的响应是否指示该节点已经拒绝去激活消息。如果任何节点已经拒绝去激活消息,则重配置过程可以进行到框464,在这一点,重配置过程将重启或中止,如上面所讨论的。否则,在框472,如果判断旧配置中没有节点拒绝去激活消息,则一旦旧配置中的读定额的节点已经指示它们已经接受重配置消息,在框474,主节点可以就开始激活新配置。这可以通过将激活消息发送给新配置中的所有其他节点来进行。新配置中的其他节点中的每一个可以被配置为将指示该节点是接受还是拒绝激活消息的响应发送给主节点。如果节点接受激活消息,则它可以适当地将其状态更新为“被激活”状态。在一些实施方式中, 属于旧配置和新配置两者的部分的节点可能已经将新配置的状态本地存储(例如,在接受该去激活消息之后)为所建议的配置,在这种情况中,在框474,它可以将所存储的状态从 “所建议的”更新为“被激活”。然后,主节点可以等待来自新配置中的节点的指示它们已经接受激活消息的写定额的响应。接下来,在框476,主节点可以判断来自新配置中的至少一个节点的对激活消息的响应是否指示该节点已经拒绝激活消息。如果任一节点已经拒绝激活消息,则重配置过程可以进行到框464,在这一点,重配置过程将重启或中止,如上面所讨论的。然而,如果新配置中的写定额的节点接受激活消息且没有节点拒绝激活消息,则然后主节点可以再次允许该配置上的事务,且也可以向诸如配置管理器421等的配置管理器通知所提交的新配置的状态。该过程也可以进行到框478,在这一点,主节点可以提交新配置。此可选的操作可以涉及将包含旧配置和新配置两者的配置提交信息发送给网络中的所有节点,使得数据分区的副本从属于新配置。此步骤可以是可选的,这是因为在一些实施方式中,一旦新配置中的写定额的节点已经接受激活消息新配置就可以立即变成活动的和完整的。图4C的过程可以在此处进行,这是因为新配置可以完全被激活和可用。此申请中所使用的术语“组件”、“系统”预期是指计算机相关的实体,可以是硬件、 硬件和软件的组合、软件或执行中软件中的任一种。例如,组件可以是但不限于是在处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。作为阐释,在服务器上运行的应用程序和该服务器两者都可以是组件。一个或多个组件可以驻留在进程和 /或执行的线程内,且组件可以位于一个计算机上和/或在两个或更多个计算机之间分布。此外,可以使用生产软件、固件、硬件或其任何组合的标准编程和/或工程技术来将本主题创新的全部或部分实现为系统、方法、装置或制品,以便控制计算机实现所公开的创新。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条…)、光盘(例如,紧致盘(⑶)、数字多用盘(DVD)…)、智能卡和闪速存储器设备(例如,卡、棒、键驱动…)。另外,应明白,载波可以被用来运载计算机可读电子数据,例如在传送和接收电子邮件或访问诸如因特网或局域网(LAN)等的网络中使用的那些计算机可读电子数据。当然,本领域中的技术人员将认识到,可以在不偏离所要求保护的本主题的情况下对此配置做出许多修改。为了提供用于所公开的本主题的各种方面的上下文,图5和图6以及下列的讨论旨在提供其中可以实现所公开的本主题的各种方面的合适的环境的简要、一般的描述。尽管以上已经在计算机和/或计算机上运行的计算机程序的计算机可执行指令的一般上下文中描述本主题,但本领域中的技术人员将认识到,也可以与其他程序模块组合实现本创新。一般地,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、 数据结构等等。此外,本领域中的技术人员将明白,可以与其他计算机系统配置一起实践本创新方法,其他计算机系统包括单处理器计算机系统或多处理器计算机系统、小型计算设备、大型计算机以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表…)、基于微处理器的或可编程的消费性电子设备或工业电子设备等等。也可以在分布式计算环境中实践所阐释的各方面,分布式计算环境中,任务由通过通信网络链接的远程处理设备执行。然而,可以在独立计算机上实践本创新的一些(如果不是全部的话)方面。 在分布式计算环境中,程序模块可以是位于本地存储器存储设备和远程存储器存储设备两者ο参考图5,描述包括计算机512的用于实现本主题创新的各种方面的示例性环境 510。计算机512包括处理单元514、系统存储器516和系统总线518。系统总线518将包括但不限于系统存储器516的系统组件耦合到处理单元514。处理单元514可以是各种可用的处理器中的任何处理器。双微处理器和其他多处理器体系结构也可以被用作处理单元 514。系统总线518可以是包括使用任何种类的可用总线体系结构的存储器总线或存储器控制器、外围总线或外部总线和/或局部总线的若干类型的总线结构中的任一总线结构,这些总线体系结构包括但不限于II位总线、工业标准体系结构(ISA)、微通道体系结构(MSA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA局部总线(VLB)、外围组件互连(PCI)、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储器卡国际协会总线 (PCMCIA)和小型计算机系统接口(SCSI)。系统存储器516包括易失性存储器520和非易失性存储器522。包含例如在启动期间在计算机512内的各元件之间传递信息的基本例程的基本输入/输出系统(BIOS)被存储在非易失性存储器522中。例如,非易失性存储器522可以包括只读存储器(ROM)、 可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪速存储器。易失性存储器520包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为阐释而非限制, RAM可以以许多形式获得,例如同步RAM (SRAM)、动态RAM (DRAM)、同步DRAM (SDRAM)、双倍数据率 SDRAM (DDR SDRAM)、增强 SDRAM (ESDRAM)、Synchlink DRAM (SLDRAM)和直接 Rambus RAM(DRRAM)。计算机512也包括可移动/不可移动、易失性/非易失性计算机存储介质。图5阐释盘存储524,其中这样的盘存储5 包括但不限于比如磁盘驱动器、软盘驱动器、带驱动器、Jaz驱动器、Zip驱动器、LS-60驱动器、闪速存储器卡或存储器棒的设备。另外,盘存储5M可以包括与其他存储介质分离或组合的存储介质,其他存储介质包括但不限于光盘驱动器,诸如紧致盘ROM设备(⑶-ROM)、⑶可记录驱动器(⑶-R驱动器)、⑶可重写驱动器 (⑶-RW驱动器)或数字多用盘ROM驱动器(DVD-ROM)。为促进将盘存储设备5 连接到系统总线518,通常使用诸如接口 5 等的可移动或不可移动接口。应明白,图5描述充当在用户和在合适的操作环境510中所描述的基本计算机资源之间的媒介物的软件。这样的软件包括操作系统528。可以被存储在盘存储5M上的操作系统5 操作为控制和分配计算机系统512的资源。系统应用程序530通过被存储在系统存储器516中或在盘存储5M上的程序模块532和程序数据534来利用操作系统5 对资源的管理。应明白,可以与各种操作系统或操作系统的组合一起实现在此描述的各种组件。用户通过输入设备536将命令或信息输入到计算机512中。输入设备536包括但不限于诸如鼠标、跟踪球、触笔、触控板等的定点设备、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、TV调谐器卡、数码相机、数码摄像机、网络摄像头等等。这些和其他输入设备经由接口端口 538通过系统总线518连接到处理单元514。接口端口 538包括例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备540使用与输入设备536相同类型的端口中的一些。因而,例如,USB端口可以被用于向计算机512提供输入,且被用于将信息从计算机512输出到输出设备M0。提供输出适配器M2以便阐释存在比如监视器、扬声器和打印机的一些输出设备M0,以及要求专用的适配器的输出设备M0。作为阐释而非限制,输出适配器542包括提供在输出设备540和系统总线518之间的连接的装置的显卡和声卡。应注意,诸如远程计算机544等的其他设备和/或设备的系统提供输入能力和输出能力两者。计算机512可以使用到诸如远程计算机544等的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机544可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的设备、对等设备或其他普通网络节点等等,且通常包括相对于计算机 512描述的许多或全部元件。为简洁起见,与远程计算机544 —起仅阐释存储器存储设备 5460远程计算机544通过网络接口 548逻辑上被连接到计算机512,且然后经由通信连接 550物理上被连接。网络接口 548包括诸如局域网(LAN)和广域网(WAN)等的通信网络。 LAN技术包括光纤分布数据接口(FDDI)、铜分布数据接口(⑶DI)、以太网/IEEE 802. 3、令牌环/IEEE 802. 5等等。WAN技术包括但不限于点对点链路、如综合业务数字网络(ISDN) 和及其变体这样的电路交换网络、分组交换网络和数字用户线路(DSL)。通信连接550是指被用来将网络接口 548连接到总线518的硬件/软件。尽管为了说明的清晰起见而在计算机512中示出通信连接550,但它也可以外置于计算机512。仅出于示例性目的,连接到网络接口 548所必须的硬件/软件包括内置技术和外置技术,诸如包括普通电话分级调制解调器、电缆调制解调器和DSL调制解调器在内的调制解调器、 ISDN适配器和以太网卡。图6是根据本主题创新的一个方面可以被用于将节点实现为联合的一部分的样本计算环境600的示意性框图。系统600包括一个或多个客户机610。客户机610可以是硬件和/或软件(例如,线程、进程、计算设备)。系统600也包括一个或多个服务器630。 服务器630也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器630可以容纳线程以便例如通过应用在此描述的各组件来执行变换。在客户机610和服务器630之间的一种可能的通信可以是以适于在两个或更多个计算机进程之间传送的数据分组的形式。系统600包括可以被用来促进在客户机610和服务器630之间的通信的通信框架650。客户机610操作上被连接到一个或多个可以被用来存储对客户机610来说是本地的信息的客户机数据存储660。类似地,服务器630操作上被连接到一个或多个可以被用来存储对服务器 630来说是本地的信息的服务器数据存储640。已经这样描述了本发明的至少一种实施方式的若干方面,应明白,本领域中的技术人员将容易地进行各种变更、修改和改进。作为可能的变更的示例,在以上所描述的示例性实施方式中,节点的定额被选择为节点的大多数。具有比节点的大多数更大或更少的定额的其他实现是可能的。此外,当节点失效或下线时,配置的定额可以随时间改变。这样的变更、修改和改进预期是本公开内容的部分,且预期是在本发明的精神和范围内。因此,前述的描述和图仅作为示例。可以以众多方式中的任何方式来实现上面所描述的本发明的实施方式。例如,可以使用硬件、软件或其组合来实现各实施方式。在以软件实现时,无论是在单个计算机中提供还是在多个计算机当中分布,软件代码可以在任何合适的处理器或处理器的集合上执行。进一步,应明白,可以以许多形式中的任一形式来具体化计算机,例如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可以被嵌入在一般不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话或任何其他合适的便携式或固定式电子设备。 而且,计算机可以具有一个或多个输入和输出设备。这些设备以及其他事物可以被用来呈现用户界面。可以被用于提供用户界面的输出设备的示例包括用于输出的视觉呈现的打印机或显示屏以及用于输出的听觉呈现的扬声器或其他声音生成设备。可以用于用户界面的输入设备的示例包括键盘和定点设备,例如鼠标、触控板和数字化输入板。作为另一示例,计算机可以通过语音识别或以其他声音格式接收输入信息。这样的计算机可以由包括诸如企业网络或因特网等的局域网或广域网的以任何合适的形式的一个或多个网络互连。这样的网络可以基于任何合适的技术,且可以根据任何合适的协议操作,并可以包括无线网络、有线网络或光纤网络。而且,在此略述的各种方法或进程可以被编码为是可在采用各种操作系统或平台中的任何一个的一个或多个处理器执行的软件。另外,这样的软件可以使用许多合适的编程语言和/或编程或脚本工具中的任一个来编写,且也可以被编译为在框架或虚拟机上执行的可执行机器语言代码或中间代码。在这一方面,本发明可以被具体化为用一个或多个程序编码的计算机可读介质 (或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、紧致盘、光盘、磁带、闪速存储器、以现场可编程门阵列或其他半导体器件的电路配置、或其他有形的计算机存储介质),当在一个或多个计算机或其他处理器上执行这些程序时,这些程序执行实现上面所讨论的本发明的各种实施方式的方法。计算机可读介质或介质可以是移动式的,以使得被存储在其上的一个或多个程序可以被加载到一个或多个不同的计算机或其他处理器上,以便实现上面所讨论的本发明的各种方面。在此以通常意义使用的术语“程序”或“软件”是指可以被用来编程计算机或其他处理器以实现上面所讨论的本发明的各种方面的任何类型的计算机代码或计算机可执行指令集。另外,应明白,根据此实施方式的一个方面,在被执行时执行本发明的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模组方式分布许多不同的计算机或处理器中,以便实现本发明的各种方面。计算机可执行指令可以是以许多形式,例如由一个或多个计算机或其他设备执行的程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、 对象、组件、数据结构等等。通常,在各种实施方式中,程序模块的功能可以根据需要组合或分布。而且,数据结构可以以任何合适的形式被存储在计算机可读介质中。出于阐释的简明性起见,数据结构可以被示出为具有通过数据结构中的位置相关的字段。这样的关系可以同样通过用传达各字段之间的关系的计算机可读介质中的位置来为各字段分配存储来获得。然而,任何合适的机制都可以被用于在数据结构的字段中的信息之间建立关系,包括通过使用指针、标签或在数据元素之间建立关系的其他机制。可以单独使用、组合使用或以前述中所描述的实施方式中不具体讨论的各种排列来使用本发明的各种方面,且因而本发明的各种方面在其应用方面不限于前述描述中陈述的或各图中阐释的组件的细节或排列。例如,可以以任何方式将在一种实施方式中描述的各方面与在其他实施方式中描述的各方面组合起来。而且,本发明可以被具体化为方法,已经提供该方法的示例。可以以任何合适的方式来排序作为该方法的部分而被执行的动作。因此,可以构建其中以与所阐释的次序不同的次序执行各动作的各实施方式,这可以包括同时地执行一些动作,即使在说明性的实施方式中被示出为顺序的动作。在权利要求中诸如“第一”、“第二”、“第三”等等的次序术语来修改权利要求元素的使用并不独立地意味着一个权利要求元素相对于另一权利要求元素的任何优先级、优先或次序或者方法的动作被执行的时间顺序,而是仅被用作将具有某种名称的一个权利要求元素与具有相同名称(只供次序术语的使用)的另一元素区分开来的标签,以便区分权利要求包括的元素。而且,在此使用的措辞和术语是出于描述的目的且不应被看作是限制。在此使用 “包括(including) ”、“包括(comprising) ”或“具有”、“包含”、“涉及”及其变更来意指包含其后列出的项及其等效物以及附加的项。
权利要求
1.一种用计算机可执行指令编码的计算机可读存储介质,当所述计算机可执行指令在网络中的计算机中的至少一个处理器上被执行时,实现一种与所述网络G20)中的第一组 (428,448)节点交互以便对分布式数据库执行重配置操作的方法,其中所述第一组(428, 448)节点与指定所述第一组(428,448)节点中的节点数量的至少一个定额值相关联,所述方法包括以下动作将重配置消息(458,459)发送给所述第一组(428,448)节点; 从所述第一组(428,448)节点的至少一个子集中的每一节点接收对所述重配置消息 (458,459)的响应,其中从所述第一组(428,448)节点中的节点接收的每一响应包含接受或拒绝所述重配置消息058,459)的指示;判断包含接受所述重配置消息G58,459)的指示的所接收的响应的数量是否至少是与所述第一组(428,448)节点相关联的第一定额值;以及基于所述判断有选择地继续进行重配置操作,所述有选择地进行包括 在包含接受所述重配置消息058,459)的指示的所接收的响应的数量至少是与所述第一组(428,448)节点相关联的第一定额值时,继续进行重配置操作。
2.如权利要求1所述的计算机可读存储介质,其特征在于 所述第一组节点是当前活动的一组(428)节点;以及所述重配置消息(459)包括发信号通知所述第一组节点将不再是所述当前活动的一组(428)节点的去激活消息。
3.如权利要求1所述的计算机可读存储介质,其特征在于 所述第一组节点不是当前活动的一组(448)节点;以及所述重配置消息(458)包括发信号通知所述第一组节点将是所述当前活动的一组 (428)节点的激活消息。
4.如权利要求1所述的计算机可读存储介质,其特征在于,所述方法进一步包括在从所述第一组(428,448)节点的至少一个子集中的每一节点接收对所述重配置消息058,459)的响应之后,判断所接收的对所述重配置消息的响应是否包含拒绝所述重配置消息的指示;以及在判断所接收的对所述重配置消息的响应包含拒绝所述重配置消息的指示时,重启重配置过程。
5.如权利要求1所述的计算机可读存储介质,其特征在于所述网络进一步包括第二组(448)节点,所述第二组节点与所述第二定额值相关联, 所述第二定额值指定所述第二组节点中的节点的数量;以及所述方法进一步包括对与所述第一定额值相关联的所述第一组(428)节点执行如权利要求1所述的动作, 其中用于对所述第一组节点执行的动作的所述重配置消息(459)包括去激活消息059); 以及在包含接受所述重配置消息的指示的所接收的响应的数量是至少与所述第一组(428) 节点相关联的第一定额值时对与所述第二定额值相关联的所述第二组(448)节点执行如权利要求1所述的动作,其中用于对所述第二组节点执行的所述动作的所述重配置消息(458)包括激活消息 (458)。
6.如权利要求5所述的计算机可读存储介质,其特征在于 所述网络(420)进一步包括配置管理器G21);所述第二组节点包括主节点G42);以及在响应于从所述配置管理器接收重配置请求而在主节点上的至少一个处理器上执行被编码在所述计算机可读存储介质上的所述计算机可执行指令时,实现所述方法。
7.如权利要求6所述的计算机可读存储介质,其特征在于,所述方法进一步包括 将配置提交信息发送(478)给所述配置管理器、所述第一组节点和所述第二组节点,所述配置提交信息包括用于所述第一组节点的标识符和用于所述第二组节点的标识符。
8.一种将在网络G20)中的第一组(428)节点上复制的数据分区重配置成在所述网络G20)中的第二组(448)节点上复制的方法,其中所述第一组节点和所述第二组节点中的每一组都与指定所述组中的节点的数量的至少一个定额值相关联,所述方法包括操作所述网络中的节点上的至少一个处理器以执行以下动作 将去激活消息(459)发送给所述第一组节点;从所述第一组节点的至少一个子集中的每一节点接收对所述去激活消息的响应,其中,从所述第一组节点中的节点所接收的每一响应包含接受或拒绝所述去激活消息的指示;判断包含接受所述去激活消息的指示的所接收的响应的数量是否至少是与所述第一组节点相关联的第一定额值;以及在包含接受所述去激活消息的指示的所接收的响应的数量至少是与所述第一组节点相关联的第一定额值时将激活消息(458)发送给所述第二组节点;从所述第二组节点的至少一个子集中的每一节点接收对所述激活消息的响应,其中从所述第二组节点中的节点所接收的每一响应都包含接受或拒绝所述激活消息的指示;判断包含接受所述激活消息的指示的所接收的响应的数量至少是否是与所述第二组节点相关联的第一定额值;以及在包含接受所述激活消息的指示的所接收的响应的数量至少是与所述第二组节点相关联的第一定额值时 完成所述重配置。
9.如权利要8所述的方法,其特征在于,所述方法进一步包括在从所述第一组节点的至少一个子集中的每一节点接收对所述去激活消息的响应之后,判断(472)所接收的对所述去激活消息响应是否包含拒绝所述去激活消息的指示;以及在判断所接收的对所述去激活消息的响应包含拒绝所述去激活消息的指示时,重启重配置过程。
10.如权利要求9所述的方法,其特征在于,所述方法进一步包括在从所述第二组节点的至少一个子集中的每一节点接收对所述激活消息的响应之后, 判断(476)所接收的对所述激活消息的响应是否包含拒绝所述激活消息的指示;以及在判断所接收的对所述激活消息的响应包含拒绝所述激活消息的指示时,重启重配置过程。
11.如权利要8所述的方法,其特征在于所述第一组节点和所述第二组节点中的每一组与读定额值和写定额值相关联,其中对于所述第一组节点和所述第二组节点中的每一组与所述组相关联的所述读定额值和与所述组相关联的所述写定额值中的每一个指定所述组中的节点的数量;与所述组相关联的所述读定额值和与所述组相关联的所述写定额值之和大于所述组中的节点的总数;与所述第一组节点相关联的所述第一定额值包括与所述第一组节点相关联的所述读定额值;以及与所述第二组节点相关联的所述第一定额值包括与所述第二组节点相关联的所述写定额值。
12.如权利要求11所述的方法,其特征在于 所述第一组节点与版本标识符相关联;以及;所述方法进一步包括,在将去激活消息发送给所述第一组节点之前 选择与所述第二组节点相关联的版本标识符,其中与所述第二组节点相关联的版本标识符具有大于与所述第一组节点相关联的版本标识符的值;向所述第一组节点和所述第二组节点发送包括与所述第二组节点相关联的版本标识符的重配置建议;从所述第一组节点的至少一个子集中的每一节点和从所述第二组节点的至少一个子集中的每一节点接收对所述重配置建议的响应,其中从节点接收的每一响应包含接受或拒绝所述重配置建议的指示;判断所接收的对所述重配置建议的响应是否包含拒绝所述重配置建议的指示;以及在判断所接收的响应包含拒绝所述重配置建议的指示时选择与所述第二组节点相关联的新版本标识符,其中与所述第二组节点相关联的所述新版本标识符具有比包含拒绝所述重配置建议的指示的所述所接收的响应中所包括的版本标识符大的值;以及向所述第一组节点和所述第二组节点发送包括与所述第二组节点相关联的所述新版本标识符的重配置建议;判断来自包含接受所述建议消息的指示的所述第一组节点的所接收的响应的所述第一数量是否至少是与所述第一组节点相关联的所述读定额值;判断来自包含接受所述建议消息的指示的所述第二组节点的所接收的响应的所述第二数量是否至少是与所述第二组节点相关联的所述写定额值;以及在不能判断所述第一数量至少是与所述第一组节点相关联的所述读定额值且所述第二数量至少是与所述第二组节点相关联的所述写定额值时,挂起所述重配置过程。
13.如权利要求12所述的方法,其特征在于 所述数据分区存储多个事务;以及所述方法进一步包括,在判断所述第一数量至少是与所述第一组节点相关联的所述读定额值且所述第二数量至少是与所述第二组节点相关联的所述写定额值之后指示所述第二组节点中的每一节点更新被存储在所述节点上的所述数据分区的副本, 其中所更新的副本包含已经被存储为在所述第一组节点的至少一个子集上被提交的每一事务,所述第一组节点的所述子集的大小是与所述第一组节点相关联的所述写定额值;判断已经更新所述数据分区的副本的所述第二组节点的数量是否至少是与所述第二组节点相关联的所述写定额值;以及在判断已经更新所述数据分区的所述副本的所述第二组节点的数量至少是所述第二组节点的所述写定额值时,挂起所述重配置过程。
14.如权利要8所述的方法,其特征在于 所述第二组节点包括主节点G42);以及操作所述网络中的节点上的至少一个处理器包括操作所述主节点上的至少一个处理ο
15.如权利要14所述的方法,其特征在于 所述网络进一步包括配置管理器G21);以及响应于从所述配置管理器接收重配置请求,执行由所述主节点上的所述至少一个处理器执行的所述动作。
全文摘要
公开了还原分布式环境中的节点的失效重配置的系统和方法。通过分析来自与配置相关联的读/写定额的节点的报告,可以促进数据分区的自动恢复。此外,配置管理器组件跟踪复制单元的当前配置并判断是否要求重配置(例如,由于节点失效、节点恢复、副本添加/删除、副本移动、或副本角色改变等等)。可以基于与新配置和旧配置相关联的动态定额,以事务一致的方式执行被激活为从旧配置复制到在新配置上复制的数据的重配置。
文档编号G06F17/00GK102197388SQ200980142631
公开日2011年9月21日 申请日期2009年10月16日 优先权日2008年10月23日
发明者S·O·沃蒂莱宁, G·K·R·卡基法亚, A·卡尔汉, L·迅 申请人:微软公司

最新回复(0)