云服务实例分配的更新日志的制作方法

文档序号:15685652发布日期:2018-10-16 21:01阅读:122来源:国知局

本公开涉及云网络,并且具体而言,涉及将虚拟机和容器实例分配给云网络中的服务器。

背景

在此提供的背景描述是出于概要呈现本公开的上下文的目的。当前署名的发明人针对在本背景章节中描述的工作的范围的工作,以及以其它方式可能不符合在申请时作为现有技术的资格的描述的各方面既不是清楚地也非隐含地要被认可为针对本公开的现有技术。

云服务提供者支持使用虚拟机(vm)和/或容器实例的基础设施即服务(iaas)和平台即服务(paas)的能力。数据中心包括主存vm和/或容器实例的服务器或节点,并且每个服务器可以主存许多vm和/或容器实例。vm实例运行在主操作系统(os)上,运行客os并与管理程序对接,所述管理程序共享并管理服务器硬件并隔离各vm实例。

不同于vm实例,容器实例不需要完整的os被安装或主服务器硬件的虚拟副本。容器实例可以包括一个或多个软件模块和库并要求使用操作系统和硬件的某些部分。作为减少的占地面积的结果,相比较于vm,更多的容器实例可以被部署在服务器上。

vm和容器实例的部署时间是用于任何大规模云服务提供者的重要的性能度量。与新的vm和/或容器实例应该被定位在哪里(例如哪个节点处)的分配决策在部署期间在关键路径中,并且因而应该是尽可能快速的。

对vm和/或容器实例的分配通常被优化以实现分配度量,例如跨不同的资源利用的良好资源打包、低的失败率、高容错、低主-os更新时间、良好的抗-托管(anti-colocation)规则等。在一些系统中,使用流水线化的一组规则来执行分配。在分配期间,针对每个新vm或容器实例来重新计算这些规则中的多个。这些规则中的多个还要求在对应群集或其它分配单元内的每个现有节点的评估。因此,在小的群集中或针对几个部署实例操作时,vm和/或容器实例的分配可以是足够快的。然而,当被缩放到数据中心层次和/或当大量的vm或容器实例在短期内被部署时,分配引起瓶颈。

概述

用于将包括虚拟机或容器的实例分配给云网络的计算设备包括处理器和存储器。存储在所述存储器中并由所述处理器执行的分配应用,被配置为:接收对将包括虚拟机或容器之一的实例分配给云网络中的多个节点的请求。所述实例由一组特性来定义。所述分配应用被配置以基于该组特性来创建请求等价类;为所述请求等价类高速缓存一个或多个节点等价类;维持包括所述多个节点的经修改的节点的列表的节点更新日志;响应于对分配包括该组特性的新实例的请求,选择所述请求等价类;并在在一个或多个节点等价类中选择分配节点之前,与所述节点更新日志通信以在一个或多个节点等价类中标识经修改的节点并更新所述经修改的节点。

在其它特征中,分配应用还被配置来移除经修改的节点并将经修改的节点重新插入一个或多个节点等价类的所选的一个节点等价类的经排名的列表中。分配应用还被配置来基于动态规则为经修改的节点选择所述一个或多个节点等价类之一。分配应用还被配置来基于静态规则在所述一个或多个节点等价类的所选一个节点等价类内对所述经修改的节点进行排名。

在其它特征中,节点更新日志维持包括多个条目的经链接的列表,所述条目的每一个包括序列号和节点标识(id)。当对应于经修改的节点的第一节点id在经链接的列表中时,更新日志被配置来将所述第一节点id从所述经链接的列表移除并将所述第一节点id连同一个新的序列号添加到经链接的列表的尾部。当对应于经修改的节点的第一节点id不在所述经链接的列表中时,更新日志被配置来将第一节点id连同一个新的序列号添加到所述经链接的列表的尾部。

在其它特征中,分配应用被配置来在请求等价类被最新更新到更新日志并从更新日志接收最新序列号时发送序列号。

在其它特征中,分配应用更新通过以下标识的经修改的节点:当请求等价类被最新更新时的序列号之后的下一个序列号、最新序列号、以及由所述下一个序列号和所述最新序列号之间的序列号标识的经修改的节点。

用于将包括虚拟机和容器的实例分配到云网络的分配器组件包括:用于接收对将包括虚拟机或容器之一的实例分配到云网络中的多个节点之一的请求的接收器。所述实例由一组特性来定义。规则评估器被配置为基于该组特征创建请求等价类,并为所述请求等价类高速缓存一个或多个节点等价类。节点更新日志被配置来维持所述多个节点的经修改的节点的列表。规则评估器被配置来,响应于对分配包括该组特性的新实例的请求,选择所述请求等价类。在在所述一个或多个节点等价类中选择节点之前,规则评估器与节点更新日志通信,以在所述一个或多个节点等价类中标识经修改的节点并更新所述经修改的节点。

在其它特征中,规则评估器还被配置来移除经修改的节点并将经修改的节点重新插入一个或多个节点等价类之一的经排名的列表中。规则评估器还被配置来基于动态规则为经修改的节点选择所述一个或多个节点等价类之一。规则评估器还被配置来基于静态规则在所述一个或多个节点等价类的所选的一个节点等价类内对所述经修改的节点进行排名。

在其它特征中,节点更新日志维持包括多个条目的经链接的列表,所述条目包括序列号和节点标识(id)。当对应于经修改的节点的第一节点id在经链接的列表中时,更新日志被配置来将所述第一节点id从所述经链接的列表移除并将所述第一节点id连同一个新的序列号添加到经链接的列表的尾部。当对应于经修改的节点的第一节点id不在所述经链接的列表中时,更新日志被配置来将第一节点id连同一个新的序列号添加到所述经链接的列表的尾部。

在其它特征中,规则评估器被配置来在请求等价类被最新更新到更新日志时发送对应于更新日志状态的序列号。规则评估器从所述更新日志接收最新序列号。规则评估器更新通过以下标识的经修改的节点:对应于当请求等价类被最新更新时的更新日志状态的序列号之后的下一个序列号、最新序列号、以及由所述下一个序列号和所述最新序列号之间的序列号标识的经修改的节点。

用于将包括虚拟机或容器的实例分配给云网络的计算设备包括处理器和存储器。被存储在所述存储器中并由所述处理器执行的分配应用,被配置为:接收对将包括虚拟机或容器之一的实例分配给云网络中的多个节点之一的请求。所述实例由一组特性来定义。所述分配被配置来基于该组特性创建请求等价类、高速缓存包括多个节点的所选的节点的列表的至少一个节点等价类、采样列表中的节点以创建经采样的列表,并从经采样的列表中选择节点。

在其它特征中,分配应用还被配置来基于动态规则标识所述列表中的多个节点的所选的节点,并基于静态规则在经采样的列表中对节点进行排名。

本公开的应用性的更多范围将从详细的说明书、权项和附图中变得显而易见。详细的说明书和具体示例旨在仅仅进行说明的目的,并且不是要限制本公开的范围。

附图说明

图1是根据本公开的包括云服务提供者的网络的示例的功能框图,所述云服务提供者具有分配组件以分配vm和/或容器实例。

图2a和2b是根据本公开的主存vm和/或容器实例的服务器的示例的功能框图。

图3是根据本公开的分配组件的示例的功能框图。

图4示出了使用存储在高速缓存中的请求等价类和节点等价类的vm或容器实例的分配的示例。

图5a和5b是示出根据本公开的用于分配vm和/或容器实例的方法的示例的流程图。

图6示出根据本公开的用于管理在节点更新日志中的序列号的经链接的列表的示例。

图7是说明根据本公开的操作节点更新日志的方法的示例的流程图。

图8是说明节点更新日志的操作的示例的客户机/服务器图例。

图9是说明根据本公开的更新经修改的节点以适应失败域的示例的流程图。

图10是说明根据本公开的当可用性区域被使用时节点标识的示例的流程图。

在附图中,参考标号可被重用以标识相似的和/或相同的元素。

具体实施方式

vm和容器实例的布置(即vm或容器实例到诸如群集的机架中的服务器或节点之类的物理计算资源的物理分配)是云服务提供者的核心功能之一。在当对vm或容器实例的请求到达、现有服务超过范围、改变配置或迁移,和/或在故障的节点或机架上的实例需要被重新部署时,做出所述分配决策。在一些示例中,每个分配器组件管理一个群集或群集组。

vm或容器实例请求指定要被分配的vm或容器实例的特性。云服务提供者的前端(fe)服务器将应用协议接口(api)向外暴露以允许用户访问云服务提供者并接收对于vm或容器实例分配的请求。fe服务器查询与一个或多个群集相关联的一个或多个分配器组件。分配器组件执行假定分配。在一些示例中,来自分配器组件中的每个分配器组件的结果作为节点标识(id)和分数被传回fe服务器。fe服务器从所述群集之一选择一个节点并指令分配器组件中的对应的一个分配器组件将vm或容器实例分配给所选的节点。

根据本公开的系统和方法使用基于分数的系统,以取代基于流水线的方案。如下将进一步描述的,分配器组件接收请求以分配由一组特性所定义的vm或容器实例。为不同组的特性定义不同的请求等价类。

对于每个请求等价类,分配器组件使用动态规则来填充一个或多个节点等价类、使用静态规则来对节点等价类中的节点进行排名以及使用静态和动态规则来评估来自每个节点等价类的最佳节点。请求等价类和节点等价类被高速缓存以减少计算的复杂性并增加效率。

静态规则通过检查一个节点来确定通过/失败,并通过检查两个节点表达在这两个节点之间的偏好。相对地,动态规则依赖多于一个节点的状态或特点。静态规则可以包括通过/失败决策和/或偏好。类似地,动态规则可以包括通过/失败决策和/或偏好。

通过/失败决策的示例包括与处理器要求有关的规则;与可用性区域有关的规则(例如具有不同的逻辑可用性区域的请求不能在相同的物理可用性区域上加载);与更新域或失败域有关的规则;与节点是否可以主存虚拟机或容器实例有关的规则(这可以是临时情况或永久的);与要被分配的vm或容器实例是否要求特殊存储要求(高速缓存或硬盘空间)有关的规则;等等。

偏好的示例包括打包考虑事项的评估;收回成本;节点健康;优选失败域;用更多硬盘驱动保存节点;可用性域和失败域负载平衡;执行类似服务的位于同处的节点;减少更新域碎片;等。

根据本公开的分配系统和方法提供基于分数的分配的可缩放实现。在一些示例中,根据本公开的分配系统和方法高速缓存请求等价类和节点等价类以供重用。在一些示例中,对节点等价类中的节点进行采样被使用。使用这些技术允许根据本公开的分配系统和方法变得更加有效和可缩放。

例如,对于要在m个机器的群集上被分配的n个实例的服务请求,根据本公开的分配系统和方法具有o(m+ns)的复杂度,其中s是采样大小。与当前复杂性相比,这是一种显著的改进。例如,对于约1000节点的群集,围绕30-50个节点(例如40个节点)的采样可以是足够的样本。

除了满足当前vm或容器实例的要求之外,分配器组件还可以评估其它考虑事项。vm和/或容器实例粘到节点,它们被放置在那直到硬件故障或消费者删除vm或容器实例。使用实况迁移在节点之间移动正在运行的vm是极其昂贵的。在vm或容器实例重新部署期间的中断(black-out)时期典型地破坏了可用性保证。因此,每个vm和/或容器实例应该被以有效的方式放置。坏的决策可以使群集分裂。移动至更大的群集减少了保留容量要求,支持更大的部署并改善了机器使用率。然而,更大的群集将具有更大数量的vm和/或容器实例请求/备忘录(minute)。因此,分配将需要非常快速地发生以实现性能目标。

当新vm或容器实例请求被接收到时,分配器组件尝试使用经高速缓存的请求等价类之一,如果可能的话。如果被请求的vm或容器实例的该组特性匹配现有请求等价类之一的该组特性,则经高速缓存的请求等价类可以被使用。如果匹配没有被标识,则新的请求等价类被创建。

基于动态规则为新的请求等价物创建一个或多个节点等价类。具体而言,每个节点等价类包括一个或多个节点,所述节点针对动态规则评估相同的方式。换句话说,节点等价类中的每个节点对于一个或多个动态规则而言是相同的。在一些示例中,群集中的每个节点出现在节点等价类的一个中。

一种或多种静态规则被应用以对每个节点等价类中的所述节点进行排名。当应用静态规则的通过/失败决策时,所述节点的一些节点将是无效节点并可以被移动至经排名的列表的底部或被忽略。随后,静态规则偏好被应用以排名节点。此时,每个节点等价类包括优选或最高排名的节点。随后,来自每个节点等价类的最高排名节点针对静态和动态规则被评估,并且最佳节点被选择。

当vm或容器实例的该组特性匹配请求等价类中的一个时,标识对应于所匹配的请求等价类的一个或多个节点等价类。在使用经缓存的节点等价类之前,节点更新日志被用于标识在对应的节点等价类中的一个或多个经修改的节点。经修改的节点被移除并被重新插入到节点等价类中的用于请求等价类的一个的经排名列表中。针对所有经修改的节点重复该过程。当所有的经修改的节点已经被重新评估时,经高速缓存的节点等价类是最新的,可以做出进一步的评估并且如上所述最佳节点可以被选择。

vm或容器实例由该组特性来表征,所述特性包括嵌入关于被请求的vm或容器实例的信息的键值对。例如,该组特性可以包括与更新域、失败域、处理器核、系统存储器、非易失存储有关的要求和/或其它特性。根据对于vm或容器实例的到达请求的相关特性,在分配器组件中的静态和动态规则安排节点。对于每个分配规则,具有相同的相关特性的两个vm或容器实例触发类似的过滤过程和评分。

请求等价类和高速缓存可被使用,因为请求等价类可以是针对一组规则被定义的并且等价类的数目是受限的。如果考虑到由一组规则所引用的特性,两个vm或容器实例是相等的,则这两个vm或容器实例对于该组规则来说是等同的。另外,对于一组规则,每个节点等价类的结果是通过了所有这些规则的一组节点。然而,当维护对应于一组规则的高速缓存时,与经更新的节点有关的所有可能的改变都被考虑。就是说,所有的静态和动态规则被重新评估。另外,等价类的数目是受限的。仅仅存在受限数目的vm或容器实例类型。即使当与服务有关的特性被考虑(例如更新域和失败域),在考虑到大型云服务请求时请求等价类的数目还是相对小的。

现在参考图1,网络100包括云服务提供者130和一个或多个消费者网络140-1、140-2、140-c(统称为消费者网络140),其中c是大于零的整数。在一些示例中,消费者网络140通过例如因特网之类的分布式通信系统被连接到云服务提供者130。然而,消费者网络140可以使用专用通信链路或以任意其它合适方式被连接到云服务提供者130。

在一些示例中,消费者网络140可以包括场所内企业网络、个体计算设备等。云服务提供者130包括提供了外部api的前端(fe)服务器132,外部api接收请求以将vm或容器实例分配给一个或多个群集136-1、136-2、……136-z(统称为群集136),其中c是大于零的整数。每个群集136包括分配组件138和一个或多个机架142-1、142-2、…以及142-r(统称为机架142),其中r是大于零的整数。分配组件138可以包括服务计算设备。每个机架142-1、142-2、…以及142-r分别包括一个或多个路由器144-1、144-2、…、以及144-r(统称为路由器144)以及一个或多个服务器148-1、148-2、…以及148-r(统称为服务器或节点148)。在图1中,分配组件138与诸如群集136-1之类的单个群集相关联。

在使用中,fe服务器132接收请求以分配vm或容器实例。fe服务器132查询与群集136相关联的分配器组件138。来自分配器组件138中的结果作为节点id和每个群集136的分数被传回到fe服务器132。fe服务器132从一个群集选择一个节点并指令分配器组件138中的对应的一个分配器组件将vm或容器实例分配给所选的节点。

现在参考图2a和2b,示出了用于主存vm和/或容器实例的服务器148的各示例。在图2a中,使用本机管理程序的服务器被示出。服务器148包括硬件170,诸如有线或无线接口174、一个或多个处理器178、易失和非易失存储器180以及大容量存储182,例如硬盘驱动器或闪存驱动器。管理程序186直接在硬件170上运行以控制硬件170并管理虚拟机190-1、190-2、…、190-v(统称为虚拟机190)和对应的客操作系统192-1、192-2、…、192-v(统称为客操作系统192),其中v是大于1的整数。

在该示例中,管理程序186在传统的操作系统上运行。客操作系统192作为进程在主操作系统上运行。管理程序的各示例包括微软的hyper-v、xen,oracle的vmserverforsparc(针对sparc的vm服务器)、oracle的vmserverforx86(针对x86的vm服务器)、citrix的xenserver以及vmware的esx/esxi,但是其它管理程序也可被使用。

现在参考图2b,第二类型的管理程序可以被使用。服务器148包括硬件170,诸如有线或无线接口174、一个或多个处理器178、易失和非易失存储器180以及大容量存储182,例如硬盘驱动器或闪存驱动器。管理程序204在主操作系统200上运行。虚拟机190-1、190-2、…、190-v(统称为虚拟机190)和对应的客操作系统192-1、192-2、…、192-v(统称为客操作系统192)。客操作系统192是从主操作系统200中被抽象的。这种第二类型的示例包括vmwareworkstation(工作站)、vmwareplayer(播放器)、virtualbox、parallelsdesktopformacandqemu(针对mac和qemu的parallels桌面)。尽管示出了管理程序的两个示例,但是其它类型的管理程序也可被使用。

现在参考图3和4,分配组件138的服务器实现的示例被进一步详细示出,并且包括包含有线或无线接口250、一个或多个处理器252以及存储器258的计算设备。操作系统260和分配应用264被定位在存储器258中。分配应用264包括请求接收机266、定序器268、节点更新日志270以及规则评估器274。

分配应用264还包括包含静态规则277和动态规则278的一组规则276。等价物高速缓存280存储被高速缓存并被重用的请求等价类284和节点等价类286。在一些示例中,等价物高速缓存280被存储在最近最少使用(lru)高速缓存中。规则高速缓存287包括被高速缓存并被重用的静态或动态规则288的实例。在一些示例中,规则高速缓存287被存储在lru高速缓存中。分配应用264还包括节点放置模块290和候选节点列表292。

定序器268确定处理由接收机266接收的针对vm或容器实例的新的请求的次序。在一些示例中,定序器268使用一组规则来确定处理所接收的vm和/或容器请求的相对次序。用于定序的该组规则可以基于在用户的服务等级协议(sla)中标识的服务等级。或者,定序器268可以使用诸如先进先出(fifo)之类的其它准则。

如果新的vm和/或容器实例的该组特性不与现有的请求等价类中的一个请求等价类的该组特性匹配,则规则评估器274创建新的请求等价类并填充对应于新的请求等价类的一个或多个节点等价类。如果新的vm和/或容器的该组特性匹配现有的请求等价类的该组特性,则规则评估器274确定在对应的节点等价类中的节点是否已经通过与节点更新日志270进行通信而被修改。

当现有请求等价类可以被使用时,规则评估器274标识经修改的节点,并从节点等价类中移除所述经修改的节点。基于动态规则将经修改的节点插入到节点等价类之一中,并且通过静态规则确定经修改的节点的排名,如下进一步描述的。

当新的请求等价类被创建时,规则评估器274通过评估所有节点来创建节点等价类。在一些示例中,基于动态规则将所有的节点排列在一个或多个节点等价类中并以静态规则所确定的排名来排列。在一些示例中,将节点等价类中的每个节点与列表中的其它节点进行比较。在一些示例中,使用下列公式:

compare(req,mx,my)=ir∈rulesr(req,mx,my)*weight[r]

如果compare(比较)(request(请求),mx,my)<0,那么节点mx比my优选。如果compare(request,mx,my)>0,那么节点my比mx优选。如果compare(request,mx,my)=0,那么mx或my的任一个可被选择。规则评估器将静态和动态规则应用于每个节点等价类的优选节点以将所述节点中的一个节点选择为分配节点或要发送给群集的fe服务器的节点。

等价物高速缓存280存储被接收并评估的vm和/或容器实例请求的请求等价类284。例如,在图4中,基于vm或容器实例的公共特性集已经建立了请求等价类284-1、284-2、…284-e。一旦建立,请求等价类284与基于动态规则确定的并基于静态规则被排名的一个或多个节点等价类286相关联。例如,在图4中,请求等价类284-1与节点等价类286-1、286-2、…和286-c相关联,请求等价类284-2与节点等价类286-11以及286-12相关联,而请求等价类284-3与节点等价类286-21相关联。

如可以被理解的,节点可以在节点等价类被建立、排名和高速缓存之后被修改。节点更新日志270随时间跟踪对节点的改变。在一些示例中,节点更新日志270响应于每个节点的改变、更新和/或修改来创建新的节点更新日志版本。

例如,在图4中,新的vm或容器实例请求到达并且是针对请求等价类284-1的匹配。节点更新日志270标识请求等价类284-1中已经被改变的三个节点。第一节点被移除、评估并且由于较低的分数被重新插入到在经排名列表中的较低位置处,如箭头290所标识的。在通过/失败决策失败之后第二节点不再是有效节点并且被移动到节点等价类的底部,如箭头291所标识的。第三节点被移除、评估并插入到节点等价类286-c的由293所标识的位置处。

当所有节点被更新、评估和重新插入时,分配器组件138已经从对应的节点等价类(例如295-1、295-2、…以及295-c)的每个节点等价类中标识出包含优选节点的集294。规则评估器将静态和动态规则应用于优选节点并从所述集选择最高排名节点(例如295-1)。在一些示例中,vm或容器实例被分配给所选节点或标识给fe服务器。

现在参考图5a,示出了一种用于将vm或容器实例分配给节点的方法350。在352,所述方法确定是否已经接收到分配vm或容器实例的请求。当352为真时,方法在356处继续并确定被请求的vm或容器实例的特性是否匹配现有的请求等价类。

如果356为真,则在357处规则评估器可选地使用节点更新日志更新一个或多个规则的经高速缓存的实例,如下将结合图5b进一步描述的。方法在358处继续并在358处确定节点更新日志的当前序列号。在362,方法确定匹配的请求等价类在最后被更新时所存储的序列号。在363,方法确定序列号是否匹配。如果363为假,则方法在364处继续并标识在节点更新日志序列号之间被修改的节点。在368,方法从对应于经匹配的请求等价类的节点等价类中移除经修改的节点。在370,节点被评估并被重新插入到节点等价类中的一个节点等价类的经排名的列表中。每个经修改的节点的节点等价类基于动态规则被选择,并且经修改的节点的排名基于静态规则被选择。

所述方法从363(如果为真)或370继续至371。在371,最高排名节点从每个节点等价类中被选择。在372,所选的节点基于静态和动态规则被排名。在374,最高排名节点被选择。在376,vm或容器实例被安装在所选节点上或所选节点被标识给fe服务器。

如果356为假,则在357处规则评估器可选地使用节点更新日志来更新一个或多个规则的经高速缓存的实例(在与和新请求等价类相关联的规则有关一些示例中),如下将结合图5b进一步描述的。在376,创建新的请求等价类。在378,基于至少一个动态规则为新的请求等价类的一个或多个节点等价类标识节点。在382,基于静态规则对在节点等价类中的每个节点排名以创建每个对应的节点等价类的经排名的列表。

现在参考图5b,示出了用于高速缓存规则的实例的方法385的示例。在386,当新请求等价类(rec)要被创建或现有rec要被使用时,所述方法在388处继续。在388,所述方法标识在规则高速缓存中与所述新的或现有请求等价类相关联的规则实例(静态或动态的)。在390处,方法确定节点更新日志的最新序列号。在392,方法确定经高速缓存的规则实例的序列号要被更新。在393,方法确定序列号是否匹配。如果393为假,则方法确定在所述序列号之间被修改的节点。在396,所述方法基于经修改的节点来更新规则实例。所述方法从393(如果为真)或396继续至398。在398,方法确定是否存在针对新的或现有的rec要更新附加规则实例。如果398为真,所述方法返回到388。如果398为假,所述方法返回。

例如,存储在规则高速缓存中的规则实例可以涉及具有最高数目空节点的失败域。所述规则实例可以跟踪每个失败域中的空节点的数目。当新的请求等价类被创建或使用了与该动态规则有关的现有请求等价类时,通过确定经修改的节点来更新规则实例并且随后基于其来更新规则实例。

现在参考图6-8,示出了节点更新日志270的操作。在图6中,每次节点被更新或被修改时,节点更新日志270就生成新的版本或序列号。节点更新日志270要么a)如果节点id先前不在链接的列表中则将新的日志序列号(lsn)和节点id加入到尾部,或者b)如果节点id先前在链接的列表中则移除节点id并将新的日志序列号(lsn)和节点id加入到尾部。在一些示例中,链接的列表包括t个条目,其中t等于群集中的节点数目。

在图7中,用于操作节点更新日志270的方法400被示出。在402,节点更新日志确定节点id是否已被修改。当402为真时,节点更新日志将节点id移至链接的列表的尾部。在412,节点更新日志设定日志序列号(lsn)等于lsn+1并将lsn与节点id存储在链接的列表中。当节点更新日志接收在416处标识节点id的改变的请求时,在422处节点更新日志将具有大于n的序列号的节点的节点id作为经修改的节点标识给lsn。

在图8中,客户机-服务器模型被示出。服务器侧监视对节点的改变和更新并按需修改在节点更新日志中的链接的列表。响应于来自客户机的在序列号(sn)之后是否存在改变的请求,服务器用自sn开始已经被改变的节点进行响应。客户机更新改变的节点(移除、评估和重新插入)并存储lsn。

现在参考图9-10,当考虑到失败域或多个可用性区域时存在一些微妙之处。这是归因于与失败域和可用性域相关的规则的性质。

如上所述,当到达的vm和/或容器实例的特性与现有请求等价类之一匹配时,在将对应的节点等价类用于到达的vm和/或容器实例之前,需要基于由节点更新日志所跟踪的信息来更新它们。为了执行该任务,节点更新日志记录自经高速缓存的最新更新起经修改的节点。如果特定的节点被更新,则静态和动态规则被评估并且依据所述修改节点被重新插入到相同或不同的节点等价类中。

在节点等价类中的经高速缓存的候选集是所有规则的结果。对于静态规则而言,经修改的节点可以仅影响节点自身的结果,并且单独重新评估经修改的节点是足够的。然而,动态规则需要被进一步考虑以确定其它节点是否可能被经修改的节点影响。在一些示例中,除了由更新日志所标识的经修改的节点之外的节点被移除、评估和重新插入。

对于与失败域相关的动态规则,节点是否能通过动态规则可以受相同机架上的节点影响。因此,当机架上的节点被修改时,相同机架上的所有其它节点被检查以确定它们是否通过失败域规则并且经高速缓存的候选集被相应地更新。

在图9中,用于进一步更新节点的方法500被示出。在510,响应于对节点更新日志的查询,分配应用确定是否存在需要被更新的节点。如果510为真,则在514处分配应用进一步确定是否存在与失败域相关的规则。如果514是真,则分配应用将相同机架中的其它节点更新为经修改的节点。

对于与可用性区域相关的动态规则,尽管可用性区域可以影响大量节点,但是逻辑可用性区域和物理可用性区域具有一对一的映射,这简化了所述问题。当与一实例类的第一实例的可用性区域有关的动态规则完成时,所得到的经高速缓存的集被建立并且随后被进一步过滤以仅在物理可用性区域中保留实例所分配到的节点。

在图10中,用于处理与可用性区域有关的规则的方法550被示出。在560,响应于对节点更新日志的查询,分配应用确定是否存在需要被更新的节点。如果560为真,则在564,分配应用确定新的vm或容器实例的特性是否与涉及可用性区域的规则有关。如果564为真,则在由节点更新日志所标识的节点被更新并被重新插入之后,在568处在节点等价类中的结果被过滤到新的vm或容器实例的特性所标识的可用性区域。

前面的描述本质上仅仅是说明性的,并且并非旨在限制本公开、其应用或使用。本公开的广泛示教可以用各种方式来实现。因此,尽管本公开包括特定示例,但本公开的真实范围不受这样的限制,因为依据附图、说明书和下述权项的研究,其它修改将变得显而易见。应该理解,在方法中的一个或多个步骤可以以不同的顺序(或同时)被执行,而无需改变本公开的原理。而且,尽管每个实施例如上所述为具有某些特征,参考本公开的任何实施例描述的其它特征的任意一个或多个可以被实现在任意其它实施例中和/或结合任意其它实施例来实现,即使该组合并未明确描述。换句话说,所述的实施例并不是互斥的,并且一个或多个实施例彼此的置换仍然在本公开的范围内。

在元件之间(例如在模块、电路元件、半导体层等之间)的空间和功能性关系使用各种术语被描述,包括“相连的”、“啮合的”、“耦合的”、“相邻的”、“在旁“、“在顶上”、“之上”、“之下”和“布置”。除非明确被描述为是“直接”,当第一和第二元件之间的关系在上述公开中被描述时,该关系可以是直接关系,其中在第一和第二元件之间不存在其它中介元件,但是也可以是间接关系,其中在第一和第二元件之间(空间上的或功能性地)存在一个或多个中介元件。如在此使用的,在至少一个a、b和c处的短语应该被解释为意指一个逻辑(aorborc),使用非排他性的逻辑or,并且不应该被解释为意指“至少一个a、至少一个b和至少一个c”。

在附图中,如由箭头所指示的箭形的方向通常表明图解感兴趣的信息流(例如数据或指令)。例如,当元件a和元件b交换各种信息,但从元件a传送到元件b的信息与图解有关,箭形可以从元件a指向元件b。这种未定向箭形不是隐含了没有其它信息被从元件b传送到元件a。而且,对于从元件a发送到元件b的信息,元件b可以将对信息的请求发送给元件a,或将信息的接收确认发送给元件a。

在该应用中,包括下述定义,术语“模块”或术语“控制器”可以用术语“电路”替代。术语“模块”可以是指下述项的部分或包括下述项:专用集成电路(asic);数字、模拟或混合模拟/数字分立电路;数字、模拟或混合模拟/数字集成电路;组合的逻辑电路;现场可编程门阵列(fpga);执行代码的处理器电路(共享的、专用的或分组);存储由处理器电路执行的代码的存储器电路(共享的、专用的或分组);提供期望功能性的其它合适的硬件组件;或上述项的一些或全部的组合,例如在片上系统中。

所述模块可以包括一个或多个接口电路。在一些示例中,接口电路可以包括被连接到局域网(lan)、因特网、广域网(wan)或其组合的有线或无线接口。本开的任意给定模块的功能性可以被分布在通过接口电路相连的多个模块之中。例如,多个模块可以允许负载平衡。在另外的示例中,服务器(也称为远程或云)模块可以代表客户机模块来完成某些功能性。

术语代码,如上所述,可以包括软件、固件和/或微代码,并且可以指代程序、例程、功能、类、数据结构和/或对象。术语共享处理器电路包括单个处理器电路,其执行来自多个模块的一些或所有的代码。术语分组处理器电路包括处理器电路,该处理器电路与附加的处理器电路相组合以执行来自一个或多个模块的一些或所有的代码。对多个处理器电路的引用包括在分立管芯上的多个处理器电路、在单个管芯上的多个处理器电路、在单个处理器电路上的多个核、单个处理器电路的多个线程或上述的组合。术语共享存储器电路包括单个存储器电路,其存储来自多个模块的一些或所有的代码。术语分组存储器电路包括存储器电路,该存储器电路与附加的存储器相组合以存储来自一个或多个模块的一些或所有的代码。

术语存储器电路是术语计算机可读介质的子集。如在此使用,术语计算机可读介质不包括传播通过介质(例如在载波上的)瞬态电子或电磁信号;因此,术语计算机可读介质可以被认为是有形和非瞬态的。非瞬态、有形的计算机可读介质的非限制性示例是非易失存储器电路(例如闪存存储器电路、可擦除可编程只读存储器电路,或掩模只读存储器)、易失存储器电路(例如静态随机存取存储器电路或动态随机存储存储器电路)、磁存储器介质(例如模拟或数字磁带或硬盘驱动器),以及光学存储介质(例如cd、dvd或蓝光盘)。

在本申请中,被描述为具有特定属性或执行特定操作的装置元件被具体配置为具有那些特定属性并执行那些特定操作。具体而言,执行一个动作的元件的描述意指该元件被配置成执行所述动作。元件的配置可以包括对元件的编程,例如通过对与所述元件相关联的非瞬态、有形计算机可读介质上的指令进行编码。

在本申请中所述的装置和方法可以是部分或全部由专用计算机来实现的,所述专用计算机通过将通用计算机配置为执行在计算机程序中实现的一个或多个特定功能来被创建。如上所述的功能框、流程图组件和其它元件用作软件规范,其可以通过本领域的技术人员或程序员的例行工作被转换成计算机程序。

计算机程序包括被存储在至少一个非瞬态、有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括所存储的数据或依赖于所存储的数据。计算机程序可以包括与专用计算机的硬件交互的基本输入/输出系统(bios)、与专用计算机的特定设备交互的设备驱动器、一个或多个操作系统、用户应用、背景服务、背景应用等。

计算机程序可以包括:(i)要被解析的描述性文本,例如javascriptobjectnotation(json)、超文本标记语言(html)或可扩展标记语言(xml),(ii)汇编代码,(iii)由编译器从源代码生成的目标代码,(iv)用于由解释器执行的源代码,(v)用于由即时编译器编译并执行的源代码等。仅作为示例,源代码可以使用来自各语言的语法来编写,所述语言包括c、c++、c#、objectivec、haskell、go、sql、r、lisp、fortran、perl、pascal、curl、ocaml、html5、ada、asp(活动服务器页面)、php、scala、eiffel、smalltalk、erlang、ruby、visuallua和

在权利要求中引用的元件都不是旨在要成为35u.s.c.§112(f)中的装置+功能元件,除非使用术语“用于…的装置”明确地引用该元件,或者在方法权利要求使用短语“用于…的操作”或“用于…的步骤”的情况下。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1