专利名称:分布式数据系统中的配置管理的制作方法
分布式数据系统中的配置管理背景计算机技术(例如,微处理器速度、存储器容量、数据传输带宽、软件功能等)的进步一般促进各行业中增长的计算机应用。通常提供常被配置为服务器阵列的甚至更强大的服务器系统来服务源自诸如比如万维网等外部源的请求。随着可用电子数据的量增长,以促进用户友好的并且快速的数据搜索与检索的可管理方式存储这样的数据变得越来越重要。当今,一种常见的方法是将电子数据存储在一个或多个数据库中。典型的数据库可被称为有组织的信息集合,且数据被结构化成使得计算机程序可以例如快速地搜索和选定所需数据片段。此外,在这样的环境中,联盟是指一组在彼此之间建立信任并允许在本身之间共享用户标识信息的组织或服务提供商。随着诸如web服务之类的分布式计算模型的出现,在诸如服务提供商(SP)之类的实体之间有增大的相互依赖度。因此,当前趋势是聚焦于身份信息的相互组织和相互依赖的管理,而不是用于内部使用的身份管理解决方案。这样的管理可被称为联合身份管理。一般而言,联合身份是识别个人以越来越高的频度在公司边界之间移动的分布式计算构造。 联合身份的实际应用通过需要同时管理多个异类系统的大跨国公司来表示。在这样的分布式系统中,对于对节点的适当管理和配置/重新配置,存在各种挑战。例如,单个节点会随机地发生故障,这在未考虑合适的偶然性时,会导致数据丢失。同样,复制的数据常常需要在系统上来回移动,这会进一步产生可靠性问题和一致性问题。此外,当与对这样的节点的所有管理相关的数据由于例如集中式高速缓存的故障而导致丢失时,可靠性问题会进一步复杂化。概述事务性数据存储中的数据可以跨充当分布式系统中的节点的许多计算机或其他设备进行复制,诸如,用于冗余或高可用性目的。然而,尽管分布式系统可以提供高保证的可用性,但是,在其上管理和复制事务性数据存储的底层计算机本身可能是不可靠的。分布式系统可以通过配置管理器进行管理,该配置管理器存储了允许标识存储了数据存储的当前副本或它的某一分区的数据节点的配置信息。配置管理器可以被实现为主节点集合,每一主节点都维护配置信息的拷贝。主节点集合中的主节点中的一个可以被指定为配置管理器的主要主节点,并对索取配置信息的请求作出响应,并且控制对数据节点的重新配置。可以使用基于法定数量(quorum)的处理来标识主要主节点,以及确定包含配置信息的主节点是否包含当前配置信息。即使构成配置管理器的一些主节点发生故障,如果有足够的用于标识包含当前配置信息的主节点的主节点可用,则可以提供可靠的配置信息。在某些实施例中,基于存储在主节点本身中的信息,确定足够数量的主节点。在某些实施例中,每一主节点结合配置信息来存储标识在存储该配置信息时构成配置管理器的节点集合的信息。由于在任何主节点中不提交配置信息一除非旨在成为新的配置的法定数量的节点集合可以提交,如果这样的集合中的法定数量的节点同意它们包含当前配置,则可以可靠地将标识的集合作为当前配置。当将相同组的主节点标识为当前配置管理器的主节点集合表示该组的法定数量时,可以可靠地将该集合确定为构成配置管理器的当前节点集合。即使构成配置管理器的一些主节点发生故障,只要法定数量的主节点存储标识关于配置管理器的当前配置信息集的一致信息,重构组件就可以可靠地标识从其获取当前配置信息的副本的主节点。重构组件也可以标识在当前集合中被指定为主要主节点的主节点,并确定该主要主节点是否可用。如果主要主节点发生故障,则可以指定新的主要主节点,并可以将可能额外的主节点指定为存储当前配置信息的主节点集合的一部分。在无法标识法定数量的主节点的情况下或发生某种其他灾难性故障的情况下,重构组件可以从存储在数据节点中的信息重构配置管理器。为重构配置管理器,可以通过以所有主节点都将同一个主节点认定为主要主节点的方式将一节点标识为主要主节点的过程来选定新的主要主节点。在某些实施例中,此过程可以涉及主要主节点之间的通信,其可以通过数据库系统的促进节点之间的通信的组件
来管理通信。在某些实施例中,主节点之间的通信可以导致将主节点配置成一个令牌环网,其中逐节点地传递令牌从节点,且将有序的位置指派给主节点。选择新的主要主节点作为带有位置0的主节点。也可以在系统操作期间使用令牌环网,以标识当相邻节点不能与发生故障的节点交换令牌时任何主节点中的故障将由令牌环中与失败的节点毗邻的节点来标识一旦建立了主要主节点,就可以从存储在数据节点中的信息重构配置信息。分布式系统中的数据节点可以向主节点中的一个或多个(例如,主要主节点)提供指出数据节点的消息,包括主要数据节点,存储当前配置的副本。比较来自所述数据节点的消息,以标识报告相同当前配置的法定数量的数据节点。当将相同组的数据节点标识为存储当前配置的数据节点集合表示该组的法定数量时, 可以可靠地将该组确定为构成当前配置的数据节点集合。可以处理存储在数据节点中的数据集的每一个分区的消息,从而允许通过标识存储每一个分区的当前副本的节点——包括该分区的主要节点——的配置信息来重建配置管理器。以上概述是对由所附权利要求定义的本发明的非限定性的概述。附图简述附图不旨在按比例绘制。在附图中,各个附图形中示出的每一相同或近乎完全相同的组件由同样的附图标记来表示。出于简明的目的,不是每个组件在每张附图中均被标号。在图形中
图1是根据本发明的某些实施例的重构组件的框图;图2示出了根据本发明的某些实施例的与多个节点相关联的示例性分区和重建;图3是可以根据本发明的某些实施例重构的带有配置组件的系统的框图;图4A示出了根据本发明的某些实施例的设置新的配置的方法;图4B是根据本发明的某些实施例的用于使用主群集来管理分布式系统的方法的流程图;图4C是根据本发明的某些实施例的用于重建数据库的分区的配置信息的方法的流程图5示出了用于实现本发明的一些实施例的各个方面的示例性环境;以及图6是根据本发明的某些实施例的可以用于数据检索的示例计算环境的示意框图;详细描述发明人已经认识到和理解,可以通过维护分布式数据存储的配置信息的改进的配置管理器,来实现分布式数据库系统的成本和可靠性的改进。发明人进一步认识到和理解,分布式系统经常有提供高数据可用性的需要,正如用来实现分布式系统的底层计算机器有时候本身会发生故障。这不仅适用于由分布式系统上的数据节点(也被称为副本节点)在分区中维护的事务性数据,而且还适用于存储在主节点上的配置信息,该配置信息将数据存储的分区与向其复制数据的数据节点相关联。因此,在本发明的某些实施例中,分布式系统具有用于存储数据的多个数据节点, 以及用于存储配置信息的多个主节点。数据可以存储在分区中,每一个分区都可以通过分布式系统内的数据节点集合来复制。即使复制分区的数据节点不可靠,但是,使用基于法定数量的处理来确保事务性的一致性。如果当前配置中的法定数量的数据节点对当前配置取得一致意见,则作为该法定数量的一部分的数据节点可以提供该分区的数据的可靠拷贝。每一个分区都可以周期性地被重新配置,以使用不同的数据节点集合或者改变该分区的主要节点。可以,例如,响应于分布式系统中的变化,如丢失或添加数据节点,进行重新配置。为在任何给定时间促进对分区中的数据节点的基于法定数量的标识,建立或重新配置当前配置的操作还可使用基于法定数量的处理来实现。当要建立一个分区的新的配置时,该新的配置中的数据节点不“提交”激活命令,直到该新的配置中的法定数量的节点以它们能够提交命令的指示作出响应。类似地,当要停用当前配置时,当前配置中的节点不提交停用命令,直到当前配置中的法定数量的节点回答它们可以提交停用命令。如此,当发生重新配置时,新的配置将会有法定数量的节点,但是旧配置没有法定数量的节点。不管重新配置节点的过程如何,配置管理器可以存储数据节点的分区的配置信息。另外,配置管理器可以执行选择数据节点集合来存储每一个分区的程序。但是,选择数据节点集合来存储分区的方式对于本发明不是关键,且可以使用任何合适的机制。配置管理器还可被实现为节点集合,在示例性实施例中,此处称为主节点。主节点集合,也被称为主群集,维护了标识存储每一个分区的副本的数据节点的配置信息,以及在访问该数据时可以使用的其他信息,如每一个分区中的主要节点的身份。 构成主群集的主节点集合还可随着时间而改变。也可以使用基于法定数量的处理来标识主群集的当前配置。如同数据节点,对主群集的当前配置的改变可以利用基于法定数量的操作来执行。在某些实施例中,主群集中的配置信息可以被存为将分区映射到它们被复制到的数据节点的数据库。在此处所描述的一些示例性实施例中,这样的数据库被描述为全局分区图(GPM)。GPM还可以包括有关每一分区的状态的信息,如哪些节点是活着的,哪一个节点是每一个分区的主要节点,每一分区的配置版本,以及节点当前是否涉及重新配置向其复制了分区的节点的过程。GPM可以被视为存储在主群集上的分区。主群集中的节点之一可以被指示为GPM分区的主要节点。主节点,一般而言,与分布式系统的数据节点一样,可能个体地不可靠,且有时候会发生故障。只要法定数量的主节点同意了主群集的当前配置,该法定数量内的任何主节点就可以提供有关GPM的可靠的信息。然而,硬件故障或其他事件可能会导致主群集的完整性丢失。作为响应,可以重建主群集以还原该完整性。当主群集的完整性丢失时,可以重建主群集,包括从由分布式系统的数据节点存储的信息重新生成GPM。可以响应于触发事件来重建主群集,如当主要主节点丢失或者法定数量的主节点无法被访问以验证有GPM可用的特定主节点包含当前GPM的准确副本。在某些实施例中, 当任何分区的副本发送消息时,它包括可以利用GPM交叉校验的分区的配置版本。GPM和由消息所指示的配置版本之间的不一致性还可触发主群集的重新配置。但是,被视为触发事件的特定的事件对本发明来说不是关键的。例如,在某些实施例中,主要节点的丢失可能不一定触发对主群集的重建。如果当前配置中有法定数量的主节点可用,即使主要节点不可用,则可以将主要主节点替换为包含当前配置的副本的另一节点。因此,应该理解,此处所描述的触发事件是示例性的,且不同的或额外的事件可以触发重建。不管启动重建的条件如何,重建都可能需要从所有主节点中擦除当前配置信息, 并基于从数据节点接收到的消息,重新生成该信息。还可以选择新的主要主节点作为重建的一部分。可以将其他主节点指定为主群集的新的配置中的辅助主节点,且可以将从来自数据节点的消息导出的当前配置信息的副本存储在主要和辅助主节点中。在某些实施例中,可以通过主要主节点上的编程来选择辅助节点。另外,主要主节点可以收集和处理来自数据节点的消息,以导出当前GPM。但是,在其他实施例中,外部组件可以作为配置控制器来操作,该配置控制器指定主要和辅助节点,并从数据节点收集消息。对主要主节点的选择可能需要不同于对辅助主节点的选择的考虑。在所描述的各实施例中,将单个主节点指定为主要主节点,而所有其他主节点都将该主节点认定为主要的。在某些实施例中,这样的处理可能需要配置令牌环网中的主节点。令牌环网中的主节点可能具有顺序,如基于围绕环向它们传递令牌的顺序。基于此顺序,可以将环中的预定位置处的主节点指定为新的主要主节点,从而允许主节点被唯一地标识。在某些实施例中,选择新的主要主节点作为带有令牌值0的主节点。然而,可以使用任何合适的机制来唯一地标识令牌环网中的主节点。同样,可以使用任何其他合适的方法来将一个主节点唯一地标识为新的主群集中的主要主节点。在重建GPM之前,可以由主群集的成员删除与图相关的任何现有数据。可以通过从先前的主群集的所有主节点和/或组成新的群集的所有主节点或者所有主节点删除 GPM,或者以任何其他合适的方式,来执行此过程。为重建GPM,分布式系统中的节点可以各自向主节点中的一个或多个(例如,主要主节点)提供消息,指示主节点可以从其重构GPM 的信息,诸如由节点复制的分区,分区的配置版本,以及该分区的数据节点集合。可以以周期性为基础自动地发送、响应于来自主群集或充当重新配置控制器的其他设备的请求发送、或者作为系统复位的一部分发送,由节点向主群集所发送的消息。但是,任何合适的机制都可以触发节点向主群集发送报告消息。在某些实施例中,消息可以由节点使用它们自己的相应的本地分区图来生成。如果数据节点复制一个以上的分区,则节点可以为每一个分区提供上面的信息。
来自数据节点的消息由主群集(例如,主要主节点)接收,并被处理以标识每一个分区的配置的当前版本。当将它们本身标识为当前配置的一部分的法定数量的数据节点同意配置版本时,可以标识分区的配置版本。如果对于同一分区的多个配置版本实现了法定数量,则在GPM中激活最近的配置版本。在某些实施例中,将最近的配置版本标识为带有最高数值表示的配置版本。在某些实施例中,通过重构组件来重构与节点的重新配置相关的数据/信息(节点与实现动态法定数量的读/写条件的分布式系统相关联)。一方面,重构组件允许跨分布式系统本身存储复制信息的部分拷贝。然后,可以使用这样的分布式段来以一致的方式重构中央管理系统的内容。因此,重构组件可以从系统上的各种位置重构集中管理组件内容, 包括全局分区图——其中,中央管理组件/配置组件可以被视为高速缓存。此外,可以经由中央管理组件的协议分区来提供可缩放性(例如,使用与用于使系统的其它部件高度可用的相同的协议)。同样,使用中央管理组件来对于系统的其余部分进行领导推选可提供灵活性和缩放(如果使用常规的基于共识的领导推选算法,则通常不能提供灵活性和缩放)。在相关方面,可以将配置管理器组件复制到构成主群集的多个主机器。这些节点中的每一个都可以与相应的重新配置代理进行交互,配置管理器的本地实例与该相应的重新配置代理进行交互。此外,可以通过可靠共识(consensus)算法来选择主群集的主要重新配置代理,该可靠共识算法可以由通信层提供,且旧的和新的配置成员集合是由系统配置确定的。因此,重构组件可以复制配置管理器组件,且由此甚至在丢失了小于法定数量的主群集机器的情况下,允许配置管理器组件轻松地可用。换句话说,本主题发明允许从节点的分布式系统的各个部分恢复配置管理器组件内容。在相关的方面,可以从作为分区的最近的配置的一部分的副本,恢复分区相关信息。作为重新配置算法的一部分,每一个副本都存储其什么是最新的,或分区的最新提议的配置的局部视图。因为当写法定数量(write quorum)的副本接受新的配置时配置变得活动,因此,本主题发明可以通过标识一配置(其中,写法定数量的副本报告该特定配置为最新的),来确定哪一个配置是最近的。(通常保证此配置是最新的——假设节点无法被及时回滚,因为由于在激活新的配置之前必须停用当前配置,所以只能存在一个这样的配置。对当前/旧配置的停用有效地销毁该配置的形成法定数量的能力。)根据再一个方法,当在主群集上检测到灾难性的丢失时,系统通过最初销毁在主群集机器上保留的任何部分信息(因为某些机器实际上会幸存)来启动配置管理器重建。 该方法随后请求节点的群集/配置中的每一个机器来发送它们保留其副本的分区的其相应的最当前(例如,最新)的配置——其中配置管理器组件接收这样的状态消息。每一个消息都允许配置管理器组件了解存在于系统中的分区,特定机器上的副本,为报告副本所知的其他机器上的副本,以及可能没有报告它们的状态的为报告机器所知的机器。配置管理器组件在它接收到写法定数量的消息时可以使分区再次活动,其中分区的副本报告相同最新的配置,其中,这样的法定数量取决于配置本身。因此,只要分区的最新的配置的写法定数量的副本报告并且在灾难性的丢失期间没有重新配置活动——则系统可以确保对分区的自动恢复。同样,如果重新配置活动直到旧配置的读法定数量(read quorum),则通常需要新的配置的写法定数量,以确保准确的恢复(虽然取决于重新配置的阶段,较少的报告就已足够)。图1示出了使用重构组件101的配置管理器100的框图,该重构组件101允许重构与重新配置分布式系统的成员相关的信息。这样的重构组件101还可以与领导推选器 (leader elector)组件102和群集配置组件103相关联,这些组件可以促进与主要(例如, 活动)配置管理器实例/组件相关联的指定/操作。一方面,重构组件101允许跨分布式系统本身存储信息的部分拷贝。然后,可以使用这样的分布式段/构件来以一致的方式重构中央管理系统的内容。因此,重构组件101可以从系统上的各种位置重构中央管理组件内容,其中中央管理组件/配置组件可以被视为高速缓存。此外,可以通过中央管理组件的协议分区来提供可缩放性(例如,使用与用于使系统的其它部分高度可用相同的协议)。另外,使用中央管理组件来对于系统的其余部分进行领导推选可提供灵活性和缩放,如果使用常规的基于共识的领导推选算法,则通常不能提供灵活性和缩放的。可以以任何合适的方式实现重构组件101。在某些实施例中,重构组件101可以处在通过网络耦合到主节点IlO1UlO2* IlO3的计算机设备中。可以利用计算机可执行指令编程这样的计算机设备,如上文所描述的,以使其监视可以触发如上文所描述的配置管理器的重构的事件。当检测到这样的事件时,重构组件101还可发出控制重构过程的命令和接收到的响应。在某些实施例中,重构组件101可以另外执行这样的功能控制主要节点以确立至少可用主节点的一个子集被配置成复制配置管理器100内保持的配置信息的当前版本。 然而,可以以任何合适的组件替换地或另外地实现这样的控制功能。在所示出的实施例中,重构组件101被示为与每一个主节点分开的组件。但是,应该理解,可以以任何合适的硬件,包括以主要主节点,实现重构组件101。图1示出了配置管理器100跨多个主节点分布。这里,示出了三个主节点11(V 1102和1103。然而,可以在系统中使用任何合适数量的主节点,且可以在任何给定时间配置这些主节点中的某些或全部以构成配置管理器。在所示出的实施例中,主节点IlO1UlO2和IlO3中的每一个都被示为以相同硬件实现。为简洁起见,提供了这样的配置,且每一个主节点都可以利用任何合适的硬件或硬件组件来实现。然而,以主节点Iio3作为说明,每一个主节点都可以包含以任何合适的计算机存储介质实现的数据存储112,其中可以存储配置信息。另外,主节点还可以包含重新配置代理114和配置管理器组件116。在某些实施例中,重新配置代理114和配置管理器组件116可以被实现为在处理器上执行的计算机可执行指令,诸如可以存在于服务器中或主存主节点的其他计算机设备上。在操作中,配置管理器组件116可以管理配置管理器100通过网络所耦合到的分布式数据库中的数据节点的配置。管理操作可包括跟踪分区中的活动节点,以探知复制分区的活动数据节点的数量,且如果数据节点数量不足,则向配置添加数据节点。另外,配置管理器组件116还可以执行与管理分区相关的其他动作,包括向访问数据库的其他组件提供可从其获取一个或多个分区中的数据的数据节点上的信息。配置管理器组件116还可执行如在本领域内已知的与配置管理器相关联的其他动作,或任何其他合适的动作。在操作中,重新配置代理114可以与其他主节点中的类似的重新配置代理进行交互,以确保主群集中的每一个主节点都维护配置信息的一致的副本。例如,当对一个节点上的信息作出改变时,该节点上的重新配置代理可以将改变信息分发到其他节点上的重新配置代理。然而,应该认识到,主节点的功能不必以如图所示的两个组件来实现。所有功能都可以以单个组件或以两个以上的组件来实现。如上文所指出的,在任何给定时间,都可以将主节点中的一个指定为主要主节点。 主要节点可以执行配置管理器的所有控制功能,并发起对存储在配置管理器中的配置信息的所有更改。当前配置中的其他主节点可以接收这样的改变,并作出对应的改变,以维护一致的副本。在所示出的各实施例中,主节点1102是当前主要节点。可以以任何合适的方式选择主节点来充当主要节点。在某些实施例中,由网络管理员指定主节点。但是,如下面结合图3所描述的,还可使用用于选择主要主节点的自动化技术。图2示出了根据示例性方面的其中可重构配置管理器的系统200的框图。如图2 所示,每一个数据节点都存储关于它已经被指派到的配置的信息。在一数据节点被指派到一配置并接收正由分布式系统维护的数据的当前拷贝时,存储在该数据节点中的信息是最新的。每一个数据节点中的数据都可以表示数据库的分区。在某些实施例中,数据库可以包含单个分区,以使得作为当前配置的部分的每一个数据节点都包含数据库的完整拷贝。但是,在其他实施例中,数据库可以包含多个分区,且每一个数据节点都可以只存储数据库的子集。不管数据库的多少被存储在活动节点上,随着时间的推移,由于硬件故障或其他原因,一个或多个数据节点可能没有接收到对复制的数据或配置的更新。因此,尽管存储在数据节点本身中的信息可能指示节点是最新的,但是,该信息可能实际上是不正确的。因此,可以使用基于法定数量的方法来标识同意数据库的当前配置的数据节点。图2提供了可以使用基于法定数量的处理来基于从分布式系统的多个节点读取的信息来标识当前配置的方式的示例。但是,应该理解,此信息不需要响应于由配置管理器、重构组件或其他组件发起的命令而被读取。在某些实施例中,响应于系统重新启动或其他事件,从数据节点提供此信息。在图2所示出的示例中,对于数据的分区X (例如,数据的段/副本),配置M包括数据节点D和数据节点E,但如图所示,只有数据节点D报告了这样的配置。同样,配置N包括数据节点A、B,和C——其中A,B,和E报告了这样的配置。值得注意的是,在此情况下, 数据节点E不计入,因为此节点不是这样的配置的一部分;但是,A和B构成写法定数量(3 个中的2个)——因此,配置N事实上应该表示最新的配置。配置版本以及最新的配置版本的数据节点信息被示为作为配置管理器中的全局分区图来记录。此配置信息可能在配置数据节点时已经存储在配置管理器中。然而,如图 2所示,可以从由数据节点发送的消息导出此配置信息,这些消息各自标识它存储的指出每一个分区(在数据节点上存储了其数据)的当前配置的信息。如此,可以基于来自数据节点的消息来重新创建配置信息。图3示出了藉由其可以组织一组节点以将一节点唯一地标识为主要节点的方法。 这样的方法可以被用来自动标识一主节点来充当主要主节点。图3是结合诸如环310(其可以根据本发明的一个方面来重构)等作为分布式环境的一部分的多个节点实现配置管理器组件302的系统300的框图。配置管理器组件302可以通过实现基于动态法定数量的读/写条件(其减轻这样的变换期间的数据丢失),以事务性一致的方式将节点(例如,服务器)的分布式系统的成员从旧配置重新配置为新的配置。这样的法定数量可以表示预定数量,其中读法定数量和写法定数量的加法超出了关于配置的节点的数量(例如,给定配置的读和写法定数量重叠)。但是,可以使用类似的过程来创建新的配置,即使没有旧配置,且例如,在灾难性故障产生了重构配置管理器的需要的情况下,可以使用。如图3所示,一般而言,当第一节点NJOl在环310中出现时,它可以创建涵盖整个数字空间的令牌,且可被称为初始令牌创建。随后,令牌可以理想地只在节点(N1到化, 其中m是整数)之间传输,以使得通常,在任何时间没有两个节点可以具有重叠的令牌。例如,在最简单的形式中,管理员可以显式地指出一节点是否是第一节点。在初始创建令牌之后,每当一新的节点加入到环中时,需要拆分这样的令牌,而当现有的节点离开环并由此将其令牌让给某一(某些)其他节点时,需要合并。通常,环310 与一联盟相关联,该联盟可以包括一组节点,这些节点在它们之间相互协作以形成动态且可缩放的网络,其中可以系统并且高效地传播和定位信息。此外,可以使用二元关系将参与联盟的节点表示成排序列表,该二元关系是反射性的,反对称的,可传递的,合计的,并且是在节点标识的域上定义的。例如,可以将该排序列表的两端联接,从而形成一个环310。这使得该列表中的每一个节点都将其本身视为处于该排序列表的中间。在一个相关的方面, 可以将该列表双链接,以使得节点可以在任一方向遍历该列表。此外,可以定义从节点标识的值域到节点本身的一对一映射函数。这样的映射函数解决在映射不紧凑时值域中的节点的稀疏性。由此,向参与联盟的每个节点指派0和某个适当地选择的上限之间(含该上限) 的自然数,且该范围不必是连续的(例如,指派给节点的数字之间可以存在间隙)。指派给节点的这样的数字充当其在环中的标识。映射函数通过将位于两个节点标识之间的数字映射到具有在数字上与该数字最接近的标识的节点来解决数字空间中的间隙。因此,通过向每一个节点指派均勻分布的数字,可以确保环的所有段都被均勻地填充。此外,并如下面详细描述的,可以使用模运算来高效地执行指示后继者、前导者,以及邻域计算的节点。在这样的方案中,可以通过指派和拥有令牌来达成路由一致性。通常,节点只有在它对于消息所发往的ID具有所有权令牌的情况下才接受消息。如上所述,令牌包含ID的连续范围,且每一令牌都具有所有者。运送中的令牌被视为不存在,直到它被一个节点接受。 此外,一般而言,两个令牌的范围必须不相交——其中所有令牌范围都不相交,并可以将一令牌拆分成两个相邻的令牌。另外,还可以将两个或更多相邻的令牌合并到单个令牌,其中在没有对应的令牌的情况下,节点不会接受消息。另外,节点通常必须拥有包括至少其自己的ID的令牌。拥有令牌的节点被称为处于路由阶段,且也可以被称为路由节点。路由节点只拥有单个令牌,或者,例如,单个ID范围。最终,ID的令牌将被与该ID最接近的路由节点拥有(例如,活跃度属性)。令牌传输应该与在令牌的范围内的任何ID处存储的数据的传输同步。更准确地说,令牌传输通常可以只在数据传输完成之后进行。一般而言,拥有路由令牌的节点可被称为路由节点。可以由任何合适的组件执行上文所描述的与将节点组织为如图3所示的环相关联的交互。在某些实施例中,可以在系统中的可用主节点的控制之下发送和接收消息。在其他实施例中,可以在由互连了网络中的主节点的组件实现的互连结构的控制之下执行交互。图4A示出了配置节点的网络的各个阶段的相关方法400。可以使用该过程来配置存储数据库的分区的数据节点。但是,可以使用类似的过程来将主节点配置为主群集。分布式系统中的数据的每一个分区都存储在数据节点集合上。可以将数据节点中的一个指定为分区的主要副本。可以将分区的剩余数据节点指定为辅助副本。在接收到重新配置请求时,主要副本上的重新配置代理可以发起对旧的或现有配置的停用,并提供对新的配置的进一步激活(例如,确保其提交被确认给客户机的任何事务将被新的配置保留;而没有提交或其提交没有被确认的事务可以被提交或者回滚)。这可包括四个阶段的实现,即阶段1 在410,投票和追轩在此阶段期间,分区的主要副本为分区的新的配置提议全局唯一 ID。一旦被旧的和新的配置的法定数量的副本接受时,可保证这样的ID大于此复制单元的任何先前接受的ID。向旧的和新的配置中的所有副本发送提议的ID,且每一个副本都基于它是否大于它们先前已经观察到的任何ID来接受或拒绝ID。因此,如果一副本接受这样的ID,则它可以将其最新的事务序列号进一步通知给主要副本,并停止对新的事务的接受。替换地,如果一副本拒绝提议的ID,则主要挑选是新的较高ID,并重新启动阶段 1。一旦旧的和新的配置中的法定数量的副本已经接受提议的ID,则主要副本指示新的配置中的副本开始追赶,以使得在重新配置上维护事务性一致性和数据安全性要求。这可以涉及个体副本上的追赶和事务回滚的混合。此外,还可保证该过程导致法定数量的副本同意内容的当前状态,并在重新配置上提供原子性、一致性、隔离性和持久性(ACID)属性。一旦已追赶上新的配置中的至少法定数量的副本,阶段1就可以完成。阶段2 在420,停用旧配置在此阶段,主要副本协调对旧配置的停用。停用的目的是确保决不可能找到两组副本Rl和R2使得Rl = R2,且Rl中的每一个副本都声明配置rl配置Cl是最新的配置,并且Rl形成写法定数量的Cl,而R2中的每一个副本r2都声明配置C2是最新的配置,且R2 形成写法定数量的C2;除非Cl = C2。此外,可以向旧配置中的每一个副本发送停用消息。 每一个副本都可以接受停用一如果它匹配它已经接受的最新的投票提议的话。当有读法定数量的副本确认停用时,此阶段完成。阶段3 在430,激活新的配置在此阶段期间,主要副本协调对新的配置的激活。激活的用途是保证,在允许对复制单元的内容的改变之前,写法定数量的新的配置知晓配置已经被激活。如此,可以确保任何内容更改只有在法定数量的节点丢失的情况下才会丢失。还可以向新的配置中的每一个副本发送激活消息。这些副本中的每一个都可以接受激活——如果它匹配它已经接受的最新的投票提议的话。当新的配置中的写法定数量的副本已经接受激活时,此阶段完成。此时,新的配置是活动的,并且是可使用的。阶段4 在440提交这样的阶段是用于提交重新配置的任选阶段——因为在阶段3结束时,旧配置被停用,而新的配置被激活。可是,这只对主要副本是已知的,并且从全局的系统外的角度来看。因此,这样的提交阶段将这种知道传播到分布式系统中的所有有关方,即,旧的和新的配置中的每一个副本,以及配置管理器。图4B是用于管理分布式数据库系统的方法450的流程图。在步骤451,构建数据库的配置。具体而言,可以将数据库组织为一个或多个分区。由一组指定的数据节点复制数据库的每一个分区。可以手动地或者可以以任何合适的方式自动执行初始配置。由于可以重新配置分区,因此可以使用配置版本来标识每一个分区的当前配置。作为初始配置的一部分,一组主节点形成分布式系统内的主群集。在步骤453中, 数据库系统的配置被主群集的主节点记录为配置信息。在某些实施例中,配置信息将每一个分区映射到它所复制到的数据节点。配置信息还可以包括有关每一分区的状态的信息, 如哪些节点是存活的,哪一个节点是每一个分区的主要节点,以及每一分区的配置版本。配置信息可以被实现为例如全局分区图。在步骤455中,分布式系统从一个分区接收对访问数据的请求。该请求可以是,例如,从一个分区读取数据的请求或向一个分区写入数据的请求。例如,可以从希望访问分布式系统的数据库的客户机计算机接收请求。为服务于该请求,分布式系统可以确定哪一个数据节点包含用于服务该请求的数据。如果配置管理器包含配置信息的可靠拷贝,则它可以确定哪一个数据节点将从由主节点存储的配置信息服务于该请求。在步骤457中,分布式系统确定是否存在法定数量的主节点,以使得该法定数量将主节点的相同配置标识为持有分布式数据库的当前配置信息。如果确定存在法定数量,则主要节点可以提供所请求的信息。因此,方法450持续到步骤459。在步骤459中,读取由法定数量的主节点标识的分区的主要数据节点。在步骤 461中,向请求方客户机提供从主要数据节点访问的数据。类似地,如果由客户机作出写入请求,则向主要数据节点提供要写入的所请求的数据。然而,如果在步骤457中确定不存在法定数量的主节点,则系统可以确定重建主群集。步骤457中的处理可以替换地或补充地包括其他处理,其他处理可以导致标识用于重建配置管理器的诸如灾难性的硬件故障之类的触发条件。在此情景中,处理分支到步骤 463。在步骤463中,将主群集复位。复位可能需要在准备重建配置管理器时从所有主节点中擦除当前配置信息。在步骤465中,选择主要主节点。在某些实施例中,如果当前主要主节点是存活的,则将其指定为主要。在其他实施例中,使用处理来将一主节点唯一地标识为新的主要主节点。例如,可以将主节点配置为如上文参考图3所描述的令牌环。在这样的实施例中,将令牌从一个节点传递到另一个节点,从而将有序位置指派到主节点。选择新的主要主节点作为带有位置0的主节点。在步骤467中,从数据节点接收消息。在此实施例中,在新的主要主节点上接收消息。然而,可以在任何合适的组件中接收和处理消息。每一个数据节点都可以向主群集提供指示数据库的配置的消息。例如,数据节点可以将它复制的数据库的一个或多个分区以及每一个分区的配置报告到主群集。即,数据节点可以指定分区的配置版本,分区主要副本的指示,分区的任何辅助副本的指示,以及分区的状态。状态可以指示,例如,分区在数据节点上是活动的,或者,数据节点是分区的还没有被激活的新的配置的一部分。
但是,应该理解,不是每一个可能的数据节点都可以发送这样的消息。例如,数据节点的某种子集,诸如只有活动数据节点,或者只有存储指示节点是至少一个分区的当前配置的一部分的配置信息的数据节点,可以发送这样的消息。此外,还应该认识到,只有当前分区中的法定数量的数据节点需要发送要被标识的当前配置的消息。因此,在步骤467 中接收消息的组件可以收集消息,直到它接收到标识法定数量的消息,或者可以在某种合适的时段内收集消息,无需等待从每个可能的数据节点接收消息。不管接收到多少消息,处理都可以转到步骤469。在步骤469中,基于从数据节点所提供的信息来重建配置信息。参考图4C所示出的方法470描述了重建过程。在某些实施例中,由诸如重构组件101 (图1)之类的重构组件执行步骤463、465、467,以及469。图4C是用于从分布式系统中的数据节点重建配置信息的方法470的流程图。尽管图4C示出了对于单个分区的处理,但是,可以使用从数据节点所提供的信息来对分布式系统中的数据库的每一个分区执行方法470。如此,可以重构与整个数据库有关的配置信肩、ο在步骤471中,确定分区是否在发送消息的时候接受重新配置,这意味着,分区正在被从一数据节点集合迁移到另一数据节点集合。由数据节点所提供的分区的状态信息可以被用来确定分区是否正在进行重新配置。这样的处理可以是有用的,例如,用于防止由于在重新配置过程期间配置管理器所发生的灾难性错误而导致产生使用处于不一致的状态的信息来重构分区的错误。如果在步骤471中确定并非正在重新配置分区,则方法470转到步骤473,在那里确定是否存在用于分区的配置版本的写法定数量的数据节点。可以根据由数据节点报告的消息来确定写法定数量的存在。如果那些消息包含由不同的节点所发送的一组消息——将一组节点一致地标识为当前配置,则该组节点可能是当前配置。如果法定数量的被标识为当前配置的数据节点发送指示它们作为当前配置是活动的消息,则可以将该节点组视为表示当前配置。在框473,可以搜索在框467接收到的消息,以查找满足用于标识当前配置的准则的一组消息。如果存在写法定数量,则方法470持续到步骤475,在那里将由写法定数量验证的分区的当前配置作为当前配置信息写入到配置管理器。然而,如果在步骤473中没有找到写法定数量,则可能无法重建配置信息。因此, 可以标识可以以任何合适的方式处理的异常条件。在某些实施例中,可以自动执行用于重构配置信息的图4B和4C的处理。然而,异常处理可能要求人工介入。返回到步骤471,如果在步骤471中判断分区的重新配置是活动的,则方法470行进至步骤477。在步骤477中,确定是否存在读法定数量的分区的旧配置和写法定数量的新的配置。在某些实施例中,在步骤477中只检查是否存在写法定数量的新的配置。如果存在适当的法定数量,则可以将分布式数据库视为在发生触发了配置管理器的重建的诸如配置管理器的灾难性故障之类的事件时处于一致状态。因此,在步骤479中, 利用分区的新的配置在主群集中更新配置信息,如由新的配置的写法定数量所验证的。可以可任选地激活新的法定数量。在步骤477中不能获得适当的法定数量会导致异常。异常可以指示例如分布式数据库处于不一致的状态,以致于要求人工介入或其他异常处理。
如在本申请中所使用的,术语“组件”、“系统”旨在表示计算机相关的实体,它可以是硬件、硬件和软件的结合、软件、或者执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机上和/或分布在两台或更多的计算机之间。此外,本发明的全部或部分可以使用产生控制计算机以实现所公开的发明的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁带、…)、光盘(例如,紧致盘(⑶)、数字多功能盘(DVD)、…)、智能卡和闪存设备(例如,卡、棒、钥匙驱动器、…)。另外,应该理解,可以使用载波携带计算机可读的电子数据,如那些在传输和接收电子邮件或在访问诸如因特网或局域网(LAN)之类的网络时所使用的。当然,本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前提下可以对这一配置进行许多修改。为给所公开的主题的各方面提供上下文,图5和6以及以下讨论旨在提供可以在其中实现所公开的主题的各方面的合适的环境的简要、概括的描述。尽管以上在运行在一台和/或多台计算机上的计算机程序的计算机可执行指令的一般上下文中描述了本主题, 但本领域的技术人员将认识到,本发明也可结合其他程序模块实现。一般而言,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。而且,本领域的技术人员可以理解,本发明的方法可用其他计算机系统配置实现,包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备 (例如,个人数字助理(PDA)、电话、手表…)、基于微处理器或可编程消费产品或工业电子设备等。所示各方面也可在任务由通过通信网络链接的远程处理设备中执行的分布式计算环境中实现。然而,即使不是本发明的全部方面,至少也有本发明的部分方面可以在独立计算机上实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。参考图5,描述了用于实现本发明的各方面的示例性环境510,其包括计算机512。 计算机512包括处理单元514、系统存储器516,以及系统总线518。系统总线518将系统组件,包括,但不仅限于,系统存储器516耦合到处理单元514。处理单元514可以是各种可用处理器中的任一种。还可以使用双微处理器及其他多处理器体系结构作为处理单元514。系统总线518可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,11位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展ISA(EISA)、智能驱动器电子接口(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、通用串行总线(USB)、高级图形接口(AGP)、个人计算机存储卡国际协会总线 (PCMCIA)以及小型计算机系统接口(SCSI)。系统存储器516包括易失性存储器520和非易失性存储器522。基本输入/输出系统(BIOS)被存储在非易失性存储器522中,包含例如在启动过程中帮助在计算机512内的元件之间传输信息的基本例程。例如,非易失性存储器522可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器520包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为示例而非限制,RAM以多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM (SDRAM)、双倍数据速率 SDRAM (DDR SDRAM)、增强型SDRAM (ESDRAM)、同步链路DRAM (SLDRAM)以及直接存储器总线 (Rambus)RAM(DRRAM)。计算机512还包括可移动的/不可移动的,易失性/非易失性的计算机存储介质。 图5示出了盘存储524,其中这一盘存储5 包括但不限于诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-60驱动器、闪存卡、或者记忆棒等设备。另外,磁盘存储器5M可包括存储介质——分开地或与其他存储介质相结合——包括,但不限于,诸如紧致盘ROM设备之类的光盘驱动器(CD-ROM)、⑶可记录驱动器(⑶-R驱动器)、⑶可重写驱动器(⑶-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)。为便于磁盘存储设备524 连接到系统总线518,通常使用诸如接口 5 之类的可移动或不可移动接口。可以理解,图5描述了用户与在合适的操作环境510中描述的基本计算机资源之间担当中介的软件。这样的软件包括操作系统528。可以存储在磁盘存储5M上的操作系统5 用于控制和分配计算机系统512的资源。系统应用程序530利用由操作系统5 通过存储在系统存储器516或者存储在盘存储5M上的程序模块532和程序数据534对资源的管理。应该明白,在此描述的各个组件可以用各种操作系统或操作系统的组合来实施。用户通过输入设备536向计算机512输入命令或信息。输入设备536包括,但不限于,诸如鼠标、跟踪球、指示笔、触摸板之类的指示设备、键盘、麦克风、游戏杆、游戏手柄、 圆盘式卫星天线、扫描仪、TV调谐器卡、数码相机、数字视频摄像机、网络摄像头等等。这些及其他输入设备通过系统总线518经由接口端口 538连接到处理单元514。接口端口 538 包括,例如,串行端口、并行端口、游戏端口,以及通用串行总线(USB)。输出设备540与输入设备536使用一些相同类型的端口。如此,例如,可以使用USB端口来向计算机512提供输入,以及从计算机512向输出设备540输出信息。提供输出适配器542是为了示出存在如监视器、扬声器、和打印机以及其他输出设备540等需要特殊适配器的一些输出设备M0。 输出适配器542包括,作为说明而不是限制,在输出设备540和系统总线518之间提供连接手段的视频卡和声卡。应该注意,其他设备和/或设备的系统提供诸如远程计算机544之类的输入和输出两种能力。计算机512可以使用到诸如远程计算机544之类的一个或多个远程计算机的逻辑连接来在联网环境中操作。远程计算机544可以是个人计算机、服务器、路由器、网络PC、 工作站、基于微处理器的电器、对等设备或其他公共网络节点等等,并且通常包括就计算机 512所描述的许多或全部元件。出于简洁起见,与远程计算机546 —起,只示出了存储器设备M4。远程计算机544通过网络接口 548在逻辑上连接到计算机512,然后,经由通信连接550在物理上连接。网络接口 548涵盖诸如局域网(LAN)和广域网(WAN)这样的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜分布式数据接口(⑶DI)、以太网/IEEE 802. 3、令牌环/IEEE 802. 5等。WAN技术包括,但不限于,点对点链路、电路交换网,如综合业务数字网(ISDN)及其变体,分组交换网络,以及数字订户线(DSL)。通信连接550是指用来将网络接口 548连接到总线518的硬件/软件。尽管为清楚起见通信连接550被示为在计算机512内部,但是,它也可以位于计算机512外部。连接到网络接口 548所需的硬件/软件包括,只作示例,内部和外部技术,诸如,调制解调器, 包括常规电话级调制解调器、电缆调制解调器和DSL调制解调器、ISDN适配器,以及以太网卡。图6是根据本主题发明的一个方面的可用于实现作为联盟的部分的节点的样本计算环境600的示意性框图。系统600包括一个或多个客户机610。客户机610可以是硬件和/或软件(例如,线程、进程、计算设备)。系统600还包括一个或多个服务器630。服务器630也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器630可以容纳各线程以通过例如利用在此描述的各组件执行转换。在客户机610和服务器630之间的一种可能的通信能够以适合在两个或更多计算机进程之间传输的数据分组的形式进行。系统 600包括通信框架650,该通信框架650可以被用来促进客户机610和服务器630之间的通信。客户机610可在操作上连接至一个或多个客户机数据存储660,客户机数据存储可用来存储对客户机610本地的信息。同样地,服务器630可在操作上连接到可以用来存储对服务器630本地的信息的一个或多个服务器数据存储640。至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。作为可能的变化的示例,在上文所描述的一示例性实施例中,选择法定数量的节点为大多数节点。其他实现也是可能的,且法定数量或者多于或者少于大多数节点。此外, 随着节点发生故障或者离线,法定数量对于一个配置可随着时间变化。作为另一示例,本申请使用其中将主要主节点的丢失视为触发配置管理器的重建的灾难性故障的系统作为示例。主要主节点的丢失触发对配置管理器的重建不是必要条件。如果可以可靠地标识当前配置信息的一个或多个副本,则可以基于此信息复位配置管理器。这样的更改、修改和改进旨在成为本发明的一部分,且旨在处于本发明的精神和范围内。因此,上述描述和附图仅用作示例。可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、 台式计算机、膝上型计算机、或平板计算机。另外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他合适的便携式或固定电子设备。同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。就此,本发明可被具体化为用一个或多个程序编码的一个或多个计算机可读介质 (例如,计算机存储器、一个或多个软盘、紧致盘、光盘、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个计算机可读介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。此处以一般的意义使用术语程序摂或软件摂来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式, 诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各实施例中,程序模块的功能可以视需要组合或分散。而且,数据结构能以任何合适的形式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何合适的机制来在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、 或在数据元素之间建立关系的其他机制。本发明的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、 或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对 “包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。
权利要求
1.一种获取定义存储了数据库的分区的副本的多个数据节点的当前配置的配置信息的方法,所述方法包括操作至少一个处理器(514),以执行包括下列各项的动作接收多个消息067),每一消息都是由多个数据节点中的一个数据节点所生成的,并指示为其配置所述数据节点的所述数据库的所述配置的版本,以及根据所指示配置被配置成复制存储在所述数据节点上的所述分区的数据节点集合;基于所述接收到的消息来标识(469)所选数据节点集合,所选数据节点集合是在所述多个消息中的至少一个中标识的集合,所述集合中的法定数量的所述数据节点各自生成指示相同配置版本和所选数据节点集合的消息;以及将所选集合的每一个数据节点是存储所述分区的副本的数据节点的指示存储(112) 为所述配置信息的一部分。
2.如权利要求1所述的方法,其特征在于,所述多个消息包括来自被配置成存储所述分区的所述数据节点中的至少一半的消息,并且形成所述法定数量的所述数据节点包括存储所述分区的所述数据节点中的至少一半。
3.如权利要求1所述的方法,其特征在于,还包括向存储了所述数据库的所述多个数据节点发送请求,以使每一个提供所述多个消息之中的相应的消息。
4.如权利要求3所述的方法,其特征在于,所述存储包括将所述配置信息存储在配置管理器(116)中,所述配置管理器包括主群集(110)中的多个主节点。
5.如权利要求4所述的方法,其特征在于,还包括响应于检测到指示存储在所述主群集(110)中的所述配置信息的完整性丢失的事件 从所述主群集(110)的主节点删除所述配置信息;以及从所述多个主节点当中选择一主节点作为新的主要主节点(IlO2)。
6.如权利要求1所述的方法,其特征在于,由第二节点所生成的所述多个消息当中的第二消息指示所述第二节点具有第二分区,所述第二分区带有所述第二分区的第一配置版本,并标识所述第二分区的数据节点,所述方法还包括从所述第二分区的所述数据节点中检测所述多个消息当中的任何消息;以及确定所述第二分区的法定数量的数据节点不退出。
7.如权利要求1所述的方法,其特征在于,还包括在所述配置信息中激活所述分区。
8.如权利要求7所述的方法,其特征在于,所述分区的所述标识的法定数量的数据节点包括所述分区的所有所述数据节点。
9.一种存储了包括多个分区的数据库的数据库系统,所述系统包括 多个计算节点(301);以及通信地互连所述多个计算节点的网络,其中所述多个计算节点(301)包括 被组织为多个集合(310)的多个数据节点,每一个集合都包括所述多个数据节点中存储了所述多个分区中的一个分区的副本的节点;以及多个主节点(110),每一个主节点都存储配置信息的副本,所述配置信息标识所述多个集合(310)中的每一个中的所述数据节点以及在所述多个集合中的每一个中的所述节点上复制的所述多个分区中的一分区。
10.如权利要求9所述的系统,其特征在于用于所述多个分区中的第一分区的所述数据节点各自被配置成生成将所述第一分区标识为正被复制在所述节点上的第一消息、所述第一分区的配置版本、以及标识关于所述第一分区的所述配置版本的每一个所述数据节点,以及所述多个主节点(110)被配置成响应于重新配置触发事件执行方法,所述方法包括 接收由用于所述第一分区的所述数据节点生成的多个所述第一消息; 标识用于所述第一分区的法定数量的数据节点,所述数据节点形成所述法定数量,所述数据节点各自具有所述第一分区的相同配置版本;以及更新所述配置信息以向所述第一分区指示所述第一分区的所述配置版本和用于所述第一分区的所述数据节点。
11.如权利要求10所述的系统,其特征在于,所述重新配置触发事件是在所述多个主节点(110)之间的法定数量的丢失。
12.如权利要求10所述的系统,其特征在于,所述重新配置触发事件是在所述多个主节点(110)之间的主要主节点的丢失。
13.如权利要求12所述的系统,其特征在于给所述多个主节点(110)中的每一个指派通信环上的令牌;以及将在丢失所述主要主节点之后保留的多个主节点(110)当中的新的主要主节点 (1102)标识为具有跨越预定值的令牌的主节点。
14.如权利要求13所述的系统,其特征在于,所述新的主要主节点(IlO2)执行所述方法。
15.如权利要求10所述的系统,其特征在于,通过所述多个主节点(110)标识所述法定数量包括将由来自所述数据节点中的一个的所述第一消息所标识的所述第一分区的所述配置版本与由来自一个或多个其他数据节点的所述第一消息指示的所述配置版本进行比较,所述一个或多个其他数据节点是由来自作为用于所述第一分区的所述配置版本的所述数据节点中的一个的所述第一消息标识的所述数据节点。
全文摘要
本发明涉及用于管理分布式环境中的数据节点的配置的系统和方法。配置管理器被实现为分布式主节点集合,该集合可以使用基于法定数量的处理,以使得能可靠地标识存储了当前配置信息的主节点,即使一些主节点发生故障。如果无法达成法定数量的主节点或者发生阻止标识当前配置信息的某种其他事件,则可以通过分析来自与配置相关联的读/写法定数量的节点的报告来重建配置管理器,从而允许自动恢复数据分区,。
文档编号G06F17/00GK102197389SQ200980142633
公开日2011年9月21日 申请日期2009年10月16日 优先权日2008年10月24日
发明者A·卡尔汉, G·K·R·卡基法亚, L·迅, M·C·本范诺托, R·R·辛哈, R·斯里坎斯, S·O·沃蒂莱宁 申请人:微软公司