计算集群中的分布式组件制造技术

技术编号:15529595 阅读:108 留言:0更新日期:2017-06-04 16:54
本公开涉及不同服务器集群中的组件,例如包括诸如分布式计算系统的组件的软件组件。组件可用于由分布式计算系统应用来使用,但是由分布式计算系统运行时来管理,使得仅单个实例可被激活并且存在于通信(未分割)集群内。还描述了从其中不再被分割的集群各个已经创建了相同组件的情况恢复。

Computing distributed components in a cluster

The present disclosure relates to components in different server clusters, such as software components comprising components such as a distributed computing system. Components can be used by distributed computing system applications, but are managed by the runtime of a distributed computing system, so that only a single instance can be activated and present within a communication (undivided) cluster. Also described is the recovery from the cluster where no longer being partitioned has created the same component.

【技术实现步骤摘要】
【国外来华专利技术】计算集群中的分布式组件
技术介绍
分布式计算系统可以具有软件组件,诸如软件对象或其他类型的个体可寻址的孤立实体,诸如分布式对象、代理、动作方(actor)、虚拟组件等。通常,每个这样的组件个体可寻址,并且在分布式系统中具有唯一的身份(诸如整数、GUID、字符串或不透明数据结构等)。在允许地理分布(包括当被布置为集群的两个服务器集合在相同数据中心内或在不同数据中心中时)的分布式系统中,应用部署可以驻留在一个集群中。在这种情况下,其客户端广泛分布(例如,在世界各地)的应用在单个数据中心处处理请求,由此远离数据中心的客户端可能经历高的等待时间。
技术实现思路
提供本
技术实现思路
以便以简化的形式介绍在下面的具体实施方式中进一步描述的代表性概念的选择。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。简言之,本文中所描述的主题的各个方面中的一个或多个方面涉及尝试确定组件是否在尝试集群能够与其通信的任何其他集群中已经被激活,并且如果是,则使用已经激活的组件。如果尚未激活,则关于在至少两个集群之间是否存在分割进行确定;如果存在分割,则组件被激活并且与指示所激活的组件是可能的副本的状态数据相关联,例如与分割的集群中的另一实例相关联。从下面结合附图的详细描述中,其他优点将变得显而易见。附图说明本公开通过示例的方式示出并且不限于附图,在附图中,相同的附图标记指示相似的元件,并且在附图中:图1是根据一个或多个示例实现的表示具有可以用于提供和管理组件的分割的集群的分布式计算系统的示例组件的框图。图2是根据一个或多个示例实现的表示具有可以用于提供和管理组件的不再分割的集群的分布式计算系统的示例组件的框图。图3是根据一个或多个示例实现的具有可以用于提供关于组件激活的不同操作模式的示例步骤的流程图。图4是根据一个或多个示例实现的表示分割的集群中的组件以及副本组件的激活和去激活的示例的框图。图5是根据一个或多个示例实现的表示在集群之间传送的组件激活请求和响应的框图。图6是根据一个或多个示例实现的由集群(或集群的个体服务器)维护的数据的表示,其包括针对组件的激活状态数据。图7是根据一个或多个示例实现的具有可以用于发送激活请求并且将响应处理为动作的示例步骤的流程图。图8是根据一个或多个示例实现的具有可以在接收激活请求并且输出响应时采取的示例步骤的流程图。图9是根据一个或多个示例实现的具有以下示例步骤的流程图,该示例步骤可以在不再被分割的集群通过将可能的副本的集合发送给其他集群并且处理响应以去除被选择为不能存活的任何副本来从分割中恢复时被采取。图10是根据一个或多个示例实现的具有以下示例步骤的流程图,该示例步骤可以在接收和处理可能的副本的集合以确定是否存在任何副本以及在存在副本的情况下确定哪些副本存活并且输出响应时被采取。图11是表示其中可以实现本文中所描述的各种示例的一个或多个方面的示例非限制性网络化或分布式计算环境的框图。图12是表示其中可以实现本文中所描述的各种示例的一个或多个方面的示例非限制性机器/计算设备的框图。具体实施方式本文中所描述的技术的各个方面通常涉及允许应用跨多个服务器集群,例如在不同数据中心中的服务器集群,例如在云环境中。这样的应用激活(实例化)组件或使用已经激活的组件。组件基于始终可用并且具有单个激活的概念,包括在多集群环境中。注意,虽然集群可以在多个数据中心中,但是该技术适用于布置在单个数据中心中的不同服务器集群,其中一些集群在一个数据中心中并且一些集群在其他数据中心中,或者以任何其他合适的方式布置。如本文中所使用的,集群是通常在数据中心内运行的服务器的集合。集群相对于其他集群具有唯一的身份。多集群是集群的集合,其可以是地理分布式的,例如(但不限于)驻留在不同数据中心中的集群。整个多集群是所有集群的集合,其对于每个集群是静态地已知的。活动多集群是其成员可以彼此通信的整个多集群的子集;当整个多集群的一些集群不能彼此通信时,集群被称为被分割。仲裁(quorum)多集群是包含整个多集群中的法定数目的集群(例如,整个集群的大部分)或拥有仲裁资源的活动多集群。整个多集群中最多可以有一个仲裁多集群。注意,当没有分割时,每个集群都是仲裁的一部分。在组件系统中,应用被编程为如同任何给定的单个激活组件始终存在。当组件被调用时,如果组件尚未运行,则运行时系统将激活该组件,或者如果组件已经运行,则运行时系统使用组件的已激活实例。因此,应用被编程为如同在任何时候都有任何组件的一个实例,其被构建到编程模型和分布式运行时中。如果应用调用组件,则如果组件的激活存在,则运行时系统寻找该激活(可能在另一个服务器集群中),或者如果组件的激活不存在,则运行时系统创建该激活。然而,当处理多个计算集群时,不同的集群可能试图在相同时间创建相同组件,即存在竞争状况。此外,诸如通过集群之间的通信链路的故障,集群可能变得彼此分割。在这种情况下,个体可寻址的单个激活虚拟化软件组件的概念变得不确定。本文中描述了包括处理竞争状况以及分割集群的一个合适的示例协议的技术。例如,服务器集群可能由于它们之间的通信链路的故障而变得彼此分割,这在服务器集群在不同的数据中心中运行的情况下倾向于更加普遍,尤其是在服务器集群以相对大的地理距离分开的情况下倾向于更加普遍。尽管如此,彼此相对靠近的不同服务器集群(包括在相同数据中心中运行的集群)也可以彼此分割。在集群彼此分割的情况下,分布式系统继续操作,但是在整个分布式系统中仅激活单个组件的概念可能是过度限制的。例如,应用可能要求使用可以在分割集群上运行的组件实例(如果需要,运行时将激活),并且被要求的集群运行时无法与其他分割集群通信。本文中描述了各种操作模式,其通常涉及组件的一致性与可用性。例如,在高一致性模式下,系统确保跨集群有组件的至多一个激活。为此,如果任何集群变得分割,则在集群再次通信之前不允许发生组件的新激活。在另一模式下,例如高可用性模式,如果集群不能访问组件的激活,则该集群可以创建组件的实例,即使组件的另一激活可能在另一个分割集群上已经存在(或之后被创建)。当分割集群再次通信时,执行组件实例(例如它们的状态)的协调。注意,上述操作模式以及其它操作模式可以基于每个组件、或每个组件类型。例如,组件Y可以被规定(例如,由管理员)为在高一致性模式下运行,而组件Z可以被规定为被允许在高可用性模式下运行。其他模式是可行的,其中一些在本文中被示例。作为一个示例,如果一个或多个集群变得被分割,则被例如大多数集群(或者被仲裁资源的所有权等或任何其他合适的所有权/预留机制)视为(并且被其他集群已知为)仲裁的一部分的集群之一可以创建组件的新实例。没有仲裁并且从具有仲裁的集群分割的一个或多个其他集群无法创建任何组件的新实例。又一种模式允许激活仅对于该集群存在的组件。作为一个示例,如果集群知道(或很可能)没有其他集群将需要创建另一实例,则集群可以乐观地(optimistically)创建该组件的实例。作为更具体的示例,如果集群需要激活包括视频游戏的组件,并且游戏玩家也在集群内,则该组件可以独立于任何其他集群而被激活,无论是否被划分。其他集群也可以有自己的独立的组件实例。此外,模式中的至少一本文档来自技高网...
计算集群中的分布式组件

【技术保护点】
一种用于允许应用跨多个服务器集群的系统,包括:分布式计算系统,其包括多个集群;每个集群具有在至少一个处理器上的至少一个服务器存储器中执行的运行时,所述运行时被配置为:防止竞争状况,在所述竞争状况下,两个或更多个集群同时尝试激活组件的实例;以及允许在所述两个或更多个集群被分割时存在所述组件的副本实例,包括将状态数据与每个可能的副本实例相关联以指示可能的副本状态,并且当所述两个或更多个集群不再被分割时评估所述状态数据,以去除任何副本实例,从而使得所述组件的一个实例针对存在的任何副本实例而存活。

【技术特征摘要】
【国外来华专利技术】2014.10.10 US 14/512,3521.一种用于允许应用跨多个服务器集群的系统,包括:分布式计算系统,其包括多个集群;每个集群具有在至少一个处理器上的至少一个服务器存储器中执行的运行时,所述运行时被配置为:防止竞争状况,在所述竞争状况下,两个或更多个集群同时尝试激活组件的实例;以及允许在所述两个或更多个集群被分割时存在所述组件的副本实例,包括将状态数据与每个可能的副本实例相关联以指示可能的副本状态,并且当所述两个或更多个集群不再被分割时评估所述状态数据,以去除任何副本实例,从而使得所述组件的一个实例针对存在的任何副本实例而存活。2.根据权利要求1所述的系统,其中所述运行时还被配置为防止所述组件的另一实例在所述分布式计算系统的集群之间存在分割时被激活,直到所述分割不再存在。3.根据权利要求1所述的系统,其中所述运行时还被配置为在每个其他集群已经关于所述组件是否在另一集群上被激活而进行响应之前乐观地激活所述组件的实例。4.根据权利要求1所述的系统,其中所述运行时通过向每个其他集群传送来自请求集群的激活请求来防止所述竞争状况,所述请求集群能够与所述每个其他集群通信,所述激活请求指示激活所述组件的意图。5.根据权利要求4所述的系统,还包括:决胜机制,其中当另一集群确定所述请求集群与所述另一集群处于竞争状况时,所述另一集群使用所述决胜机制来确定哪个激活请求要成...

【专利技术属性】
技术研发人员:P·A·贝恩斯泰因S·I·比克夫J·M·法莱洛G·克里奥特M·R·拉曼
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1