容器化系统的资源节约的制作方法

文档序号:25442716发布日期:2021-06-11 22:02阅读:131来源:国知局
容器化系统的资源节约的制作方法

本公开涉及在容器化系统中节约系统资源。



背景技术:

一般来说,众所周知,个人计算机减少空闲程序的资源使用。例如,当进程被阻止读取(可能是网络套接字或管道的)文件时,unix系列操作系统(os)呈现这一点。如果没有要读取的输入,被阻止的线程将不会被调度到处理器上(因为这允许存在比可用的cpu核心更多的线程)。os还可以执行内存分页来超额订用(over-subscribe)内存,并且空闲进程通常会被页面调出。一些基于云的服务(经由分布式系统)提供容器化编排系统,这些系统经常有空闲的容器或进程。例如,(商标归linux基金会所有)是围绕控制器的观念建立的,控制器的作用是调和如资源中所表达的期望的世界状态,与某一其他系统或某一其他资源中的实际世界状态。例如,运行控制器进程的容器经常花费其大部分时间等待应用编程接口(api)中对象的变化,并且如果那些对象变化缓慢,控制器可能本质上是空闲的。但是即使控制器的本地节点os能够减少进程的资源需求,编排系统的调度器也不能处理该信息。



技术实现要素:

本公开的一个方面提供用于节约容器化系统的资源的方法。方法包括在数据处理硬件处从资源控制器接收事件准则列表。所述事件准则列表包括由所述资源控制器观察的一个或多个事件,并且资源控制器控制至少一个容器并被配置成响应于所发生的来自事件准则列表的事件。至少一个容器封装应用进程。方法还包括由数据处理硬件确定资源控制器是否空闲。当资源控制器空闲时,方法包括由数据处理硬件终止资源控制器,并由数据处理硬件确定来自事件准则列表的任何事件是否在终止资源控制器之后发生。方法还包括,当来自所述事件准则列表的至少一个事件在终止资源控制器之后发生时,由数据处理硬件重新创建资源控制器。

本公开的实现方式可以包括以下可选特征中的一者或多者。在一些实现方式中,确定资源控制器是否空闲包括轮询所述资源控制器。另外地或替代地,确定资源控制器是否空闲可以包括:分析在阈值时间段期间已发生的事件,并且当在阈值时间段内没有事件准则列表上的事件已发生时,确定资源控制器空闲。

在一些示例中,终止资源控制器包括将资源控制器的部署大小扩缩为零,而重新创建资源控制器包括将资源控制器的部署大小扩缩为一。可选地,事件准则列表可以包括定时器事件。在一些实现方式中,确定事件准则列表上的任何事件是否发生包括轮询数据。

在一些示例中,方法包括由数据处理硬件确定自资源控制器被终止以来的终止时间段是否满足阈值时间段。响应于确定终止时间段确实满足阈值时间段,方法包括由数据处理硬件重新创建所述资源控制器。在一些实现方式中,方法包括由数据处理硬件确定所述资源控制器是否需要维持或重新配置,并且作为响应由数据处理硬件重新创建资源控制器。从资源控制器接收事件准则列表可以包括从同时执行的多个资源控制器接收多个事件准则列表,其中每一事件准则列表与相应的资源控制器相关联。同时执行的资源控制器的数量可以基于系统资源。方法可以还包括由数据处理硬件确定多个事件准则列表上的任何事件是否同时发生。响应于确定多个事件准则列表上的事件同时发生,方法可以包括由数据处理硬件依序重新创建资源控制器的组,资源控制器的组中的每一资源控制器与多个事件准则列表的相应事件准则列表相关联。在一些示例中,依序重新创建资源控制器的组包括基于每一资源控制器的优先级来依序重新创建资源控制器的组。

方法还可以包括由数据处理硬件基于系统度量重新创建资源控制器。在一些实现方式中,系统度量是系统资源的测量。可选地,事件准则列表包括动态事件准则列表。方法还可以包括,在资源控制器空闲时终止该资源控制器之前,由数据处理硬件确定系统资源的测量是否满足系统资源阈值。当系统资源的测量满足阈值并且资源控制器空闲两者时,方法包括由数据处理硬件终止资源控制器。系统资源的测量可以包括系统处理/计算、网络接入、存储和/或内存资源的测量。在一些示例中,当从资源控制器接收事件准则列表时,方法包括从超文本传送协议(http)端点接收事件准则列表。资源控制器可以与系统资源保留相关联,并且终止资源控制器然后移除系统资源保留。

本公开的另一方面提供一种系统,包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,当指令在数据处理硬件上执行时,使得数据处理硬件执行操作。操作包括从资源控制器接收事件准则列表。所述事件准则列表包括由所述资源控制器观察的一个或多个事件,并且资源控制器控制至少一个容器并被配置成响应于所发生的来自事件准则列表的事件。至少一个容器封装应用进程。操作还包括确定资源控制器是否空闲。当资源控制器空闲时,操作包括终止资源控制器,并确定来自事件准则列表的任何事件是否在终止资源控制器之后发生。操作还包括当来自事件准则列表的至少一个事件在终止资源控制器之后发生时,重新创建资源控制器。

本公开的此方面的实现方式可以包括以下可选特征中的一者或多者。在一些实现方式中,确定资源控制器是否空闲包括轮询所述资源控制器。确定资源控制器是否空闲可以另外地或替代地包括:分析在阈值时间段期间已发生的事件;以及当在阈值时间段内没有事件准则列表上的事件发生时,确定资源控制器空闲。

在一些示例中,终止资源控制器包括将资源控制器的部署大小扩缩为零,而重新创建资源控制器包括将资源控制器的部署大小扩缩为一。可选地,事件准则列表可以包括定时器事件。在一些实现方式中,确定事件准则列表上的任何事件是否发生包括轮询数据。

在一些示例中,操作包括确定自资源控制器被终止以来的终止时间段是否满足阈值时间段。在这些示例中,响应于确定所述终止时间段确实满足所述阈值时间段,操作包括重新创建所述资源控制器。在一些实现方式中,操作包括确定资源控制器是否需要维持或重新配置,并且响应于确定资源控制器需要维持或重新配置,重新创建资源控制器。从资源控制器接收事件准则列表可以包括从同时执行的多个资源控制器接收多个事件准则列表,其中每一事件准则列表与相应的资源控制器相关联。同时执行的资源控制器的数量可以基于系统资源。操作然后可以还包括确定多个事件准则列表上的任何事件是否同时发生。响应于确定多个事件准则列表上的事件同时发生,操作可以还包括依序重新创建资源控制器的组,资源控制器的组中的每一资源控制器与多个事件准则列表的相应事件准则列表相关联。在一些示例中,依序重新创建资源控制器的组包括基于每一资源控制器的优先级来依序重新创建资源控制器的组。

操作还可以包括基于系统度量重新创建资源控制器。在一些实现方式中,系统度量是系统资源的测量。可选地,事件准则列表包括动态事件准则列表。操作还可以包括,在资源控制器空闲时终止该资源控制器之前,确定系统资源的测量是否满足系统资源阈值。当系统资源的测量满足阈值并且资源控制器空闲时,操作可以包括终止资源控制器。系统资源的测量可以包括系统处理/计算、网络接入、存储和/或内存资源的测量。在一些示例中,当从资源控制器接收事件准则列表时,操作包括从http端点接收事件准则列表。资源控制器可以与系统资源保留相关联,并且终止资源控制器然后移除系统资源保留。

在附图和以下描述中陈述本公开的一个或多个实现方式的细节。其他方面、特征和优点将从描述和附图以及从权利要求显而易见。

附图说明

图1是用于在容器化系统中节约资源的示例性系统的示意图。

图2是图1的系统的空闲确定器的示例性组件的示意图。

图3是图1的系统的进程终止器的示例性组件的示意图。

图4是图1的系统的事件观察器的示例性组件的示意图。

图5是图1的系统的进程创建器的示例性组件的示意图。

图6是用于在容器化系统中节约资源的示例性系统的随时间的资源可用性的图表。

图7是在容器化系统中节约资源的方法的示例性操作布置的流程图。

图8是可以用以实现本文描述的系统和方法的示例性计算设备的示意图。

各个附图中的相同附图标记指示相同的元件。

具体实施方式

至少部分由于远程和分布式计算的进步,容器化应用和编排容器化应用的系统(例如,)正变得越来越流行。容器化应用(即,虚拟化)允许存在独立的用户或应用空间实例。每一实例(即,容器)在应用看来是可以访问执行所需的所有资源(例如,存储、网络接入等)的它自己的个人计算机。然而,容器中的应用将只能够查看和访问指派给其相应容器的资源。这有助于分布式或云环境中应用的安全性、移动性、扩缩和升级。

容器通常将被限于单个应用或进程。一些容器编排系统将容器组(pod)部署为最小的可用计算单元。容器组是一组一个或多个容器,容器组中的每一容器共享隔离边界(例如,ip地址)。控制器控制容器组中的资源。控制器负责监视容器组、容器和资源的健康(并且必要时重新创建容器组/容器),复制和扩缩容器组,以及监视(容器组的)外部事件。目前,容器组控制器通常持续运行,并且每一控制器都有资源开销(例如,控制器可能是消耗处理器和内存资源的go进程)。这已经导致将控制器捆绑到一起成为单个进程,这节省了资源,但与容器化系统的设计目标(在容器化系统中,每一容器或容器组都是相互独立的)背道而驰。此外,这种方法很麻烦,因为每一控制器的源代码必须组合成单个二进制文件,这使得更新单个控制器非常困难。此外,使用不同库版本或不同语言或运行时的控制器可能无法组合成单个二进制文件。

当进程空闲时,个人计算机的操作系统(os)通常基本上挂起进程。例如,在等待读取文件时被阻止的进程将不会被调度到处理器上,直到该文件可用。操作系统还可以执行内存分页来超额订用内存,并且空闲进程通常会被页面调出。类似地,容器化应用经常是空闲的。例如,容器化编排系统控制器经常花费大部分时间等待应用编程接口(api)中对象的变化,这可能基本上使控制器在变化之间处于空闲。然而,即使控制器的本地节点os可能能够通过调度或内存分页来减少进程的资源需求,编排系统调度器也不能处理该信息,并且典型的编排系统配置命令os不要页面调出进程(例如,禁用交换),并试图避免资源过度提交(over-commitment)以获得更一致的响应时间。因此,对于典型的容器化系统来说,如果不是不可能的话,超额订用系统资源可能是困难的。本公开的实现方式通过创建主控制器来解决这些技术难题,该主控制器允许在容器化系统中节约资源,而不需要对容器化系统进行重大修改。

本文实现方式针对用于在容器化系统中节约资源而不需要对控制器或容器进行修改的系统和方法。参考图1,在一些实现方式中,示例性系统100包括远程系统114。远程系统114可以是单个计算机、多个计算机或具有可扩缩/弹性计算资源118(例如,数据处理硬件810(图8))和/或存储资源116(例如,存储器硬件820(图8))的分布式系统(例如,云环境)。远程系统114执行一个或多个部署120,120a-n,并且每一部署120包括资源控制器122,122a-n和由对应部署120的资源控制器122控制的一组一个或多个目标资源126,126a-n。例如,目标资源126可以是容器组,该容器组包括一个或多个容器128,128a-n,其中每一容器128执行应用或进程。在其他示例中,目标资源是负载平衡器、域名系统(dns)记录或其他云资源。在所示的示例中,每一资源控制器122与至少一个事件准则列表124,124a-n相关联,而每一目标资源126(例如,容器组)执行容器128(即,应用或进程)。部署120内的每一目标资源126可以同位,并且能够与同一部署120内的其他目标资源126共享一些资源(例如,网络接入),同时禁止共享其他资源(例如,内存)。换句话说,相应部署120内的给定目标资源126可能不被允许与位于同一部署120内的其他目标资源126共享资源。

在一些实现方式中,相应部署120内的每一控制器122能够通过扩缩(增加或减少)相应部署120和/或容器组126的部署大小或规模322来控制相应部署120的每一容器组126(以及与其相关联的容器128)。部署大小可以是副本字段。例如,如果部署大小322增加(例如,从一变为二),则相应部署120内的实例(例如,容器组126)的数目增加(例如,容器组126的数目从一增至二)。同样地,如果部署大小322减小,则相应部署120内的实例(例如,容器组126)的数目减小。在一些示例中,将部署120的部署大小322设置为零终止或挂起相应部署120以及相应部署120内的一个或多个容器组126和容器128的执行。

与每一控制器122相关联的事件准则列表124包括与相应部署120内的容器组126或容器128相关的事件125的规范。事件125可以采取任何数目的形式(例如,api对象改变、http请求、队列中的消息、电子邮件、时间、系统负载、其他系统度量等)。例如,响应于域名系统(dns)改变的dns应用在发生dnsapi对象改变时需要通知,并且在目标dns记录改变时也需要通知,或者可以使用定时器来轮询目标改变。控制器122观察或监视事件准则列表124上每一事件125的出现。这些事件125可能很少发生。例如,继续dns示例,dns的改变通常是不频繁的,且因此dns应用及其对应的控制器122通常将是空闲的,直到dns改变发生。尽管是空闲的,部署120维持活动状态的相同的系统资源保留设置,以便履行合理的响应时间。也就是说,部署120要求典型的系统保留设定量的系统资源(例如,内存/存储/计算/网络接入),而不管部署120的状态如何(即,空闲、活动等)。

继续参考图1,示例性系统100包括在远程系统114上执行并与部署120的每一资源控制器122通信的主控制器150。主控制器150可以监视部署在远程系统114上的每一控制器122的执行,并且终止/挂起变为空闲的控制器122的执行,以便恢复为空闲目标资源126保留的未使用资源。例如,主控制器150的空闲确定器200可以确定部署的控制器何时空闲,并且主控制器150的进程终止器300可以终止或以其他方式挂起部署120的执行,从而恢复为终止的部署120保留的资源。在一些实现方式中,进程终止器300通过将部署120的部署大小(例如,规模)322设置为零来终止部署120。

为了响应随后可能发生的变化,主控制器150可以进一步实现事件观察器400。在所示的示例中,在进程终止器300终止相应的部署120之前,事件观察器400从相应的部署120的控制器122接收事件准则列表124。因此,事件观察器400允许主控制器150观察事件准则列表124中的事件125,这些事件与已经因此终止/挂起的部署120相关联。换句话说,由于部署120的终止/挂起执行因此终止/挂起了对应控制器122观察事件准则列表124中的事件125的能力,所以主控制器150通过接收事件准则列表124来在部署120(和对应控制器122)的执行被挂起/终止时观察事件准则列表124中的事件125的发生来承担控制器122的责任。当事件观察器400检测或确定事件准则列表124中的事件125已经发生时,主控制器150的进程创建器500可以重新部署相应的部署120(例如,通过将部署大小(例如,规模)322设置为1)。

现参考图2,在一些实现方式中,空闲确定器200包括进程轮询器212。进程轮询器212周期性地(例如,每秒一次、每分钟一次等)轮询214控制器122以确定对应的资源控制器122是否空闲。例如,进程轮询器212可以轮询214控制器122,以从控制器122抓取细节216,从而确定控制器122是否空闲。细节可以包括相应事件准则列表124、控制器122的处理状态、所观测事件的版本信息等。另外地或替代地,控制器122可以通过暴露轮询器212直接读取以确定空闲的度量(例如,自上次活动以来的时间)来主动暴露细节216。除了进程轮询器212之外,或者作为代替,空闲确定器200可以实现被配置成接收可能在控制器122的事件准则列表124上的事件125的事件监视器220。当事件监视器220接收到事件125时,事件监视器220确定事件125是包括控制器122的事件准则列表124上的事件125之一还是来自不同控制器122的另一事件准则列表124上的事件。如果事件监视器220在(由定时器222确定的)阈值时间段内没有接收到事件准则列表124上的任何事件125,则事件监视器220可以断定控制器122是空闲的。如果进程轮询器212和/或事件监视器220确定控制器122空闲,则空闲确定器200可以向进程终止器300发送指示控制器122(和相应的部署120)空闲的空闲确定230。在一些实现方式中,确定控制器122是否空闲包括当控制器122已经完成对事件的响应时,分析由该控制器122引起的进一步的事件。例如,当控制器122完成处理改变时,控制器122可以用“observedgeneration”字段更新对象。

图3示出了进程终止器300,响应于从空闲确定器200接收到指示空闲资源控制器122的空闲确定230,终止(或以其他方式挂起)空闲资源控制器122。例如,进程终止器300可以包括将控制器122的规模(例如,部署大小)322设置为零的进程扩缩器320。规模322可以确定部署120的实例(例如,容器组126)的数目,且因此规模322为零将移除(例如,挂起/终止执行)部署120(以及对应的控制器122和容器128)的所有实例(例如,容器组126)。除了进程扩缩器320之外,进程终止器300可以实现从系统332接收资源度量332的资源监视器330。当资源度量332指示系统资源丰富时,主控制器150(经由进程终止器300)可以确定在处于空闲状态时更希望维持控制器122,而不是终止空闲控制器122,因为在系统资源丰富时恢复保留给空闲控制器122的资源不太重要,同时避免了重新部署先前终止/挂起的控制器122所引发的成本。类似地,对于已知经常从空闲状态变为活动状态的控制器122,终止变为空闲的这些控制器122的执行以重新部署控制器122所引发的成本通常超过了在控制器122空闲时恢复未使用资源的益处。因此,本文的实现方式可以包括进程终止器300防止终止/挂起已知频繁在空闲状态和活动状态之间切换的控制器122的执行。控制器在活动状态和空闲状态之间切换的频率可以基于在对应容器组126中执行的容器128的类型或者基于指示控制器122被重新部署的频率和/或控制器122观察到的事件125发生的频率的历史数据来预测。

在一些示例中,进程终止器衡量资源度量332和已知或预测给定控制器122在活动和空闲状态之间切换的频率。在示出的示例中,资源监视器330接收系统资源度量332,以确定可用的系统资源量是否满足阈值资源量。例如,当可用的系统资源量超过与资源的阈值量相关联的值时,可以满足阈值资源量。此处,当空闲确定230指示控制器122空闲并且(例如,在资源度量332中提供的)可用的系统资源量不能满足阈值资源量时,进程扩缩器320可以确定将控制器122扩缩为零(例如,通过将部署大小322设置为零)以终止控制器122。否则,当系统资源量满足阈值资源量时,进程扩缩器320可以维持控制器122的当前扩缩以防止控制器122的终止,尽管空闲确定230指示控制器122空闲。在一些实现方式中,主控制器150保存控制器122在终止之前的状态,并且当控制器122被重新部署时,它返回到保存的状态(即,控制器122被挂起而不是终止)。

如上文所述,终止控制器122使得控制器122不可用于响应事件准则列表124上的事件125的发生。为了补偿终止的且因此不可用的控制器122,主控制器150的事件观察器400通过观察事件准则列表124上的事件125的发生来承担终止的控制器122的责任。现参考图4,主控制器150的事件观察器400包括事件监视器420,其在控制器122终止之前从控制器122接收事件准则列表124。在一些示例中,事件准则列表124通过库来执行,且因此控制器122不需要任何代码修改来将相应的事件准则列表124暴露给事件观察器400。事件监视器420还接收在系统100内发生的事件125,并确定这些事件125中的任一个是否包括或对应于事件准则列表124上的事件125。事件准则列表124可以是动态的,因为控制器122可以在任何时候更新其事件准则列表124,例如响应于它可能接收的其他事件。控制器122可以动态地向事件准则列表124发布改变,或者可替代地,事件观察器400可以从控制器122取得改变。在一些示例中,事件观察器400基于资源度量332或其他输入自动地更新终止的控制器122的事件准则列表124(即,创建基于资源的事件)。

在所示的示例中,事件观察器400还包括资源监视器430。事件观察器400的资源监视器430和进程终止器300的资源监视器330可以是相同的组件或不同的组件。在一些示例中,资源监视器430接收系统资源度量332,以确定是否有足够的系统资源可用于当前创建新部署120(以及随后的新控制器122)。例如,如果可用的系统资源量不能满足重新部署阈值资源量,则资源监视器430可以否决部署120的重新部署。例如,当可用的系统资源量小于与重新部署阈值资源量相关联的值时,重新部署阈值资源量可能无法满足阈值资源量。当事件监视器420确定事件准则列表124上的事件125发生并且资源监视器430确定足够的系统资源当前可用(即,通过满足重新部署阈值资源量)时,事件观察器400向进程创建器500发送创建或重新部署命令440以重新部署先前终止/挂起的控制器122。如本文所描述,重新部署控制器122导致重新部署相应的部署120和对应的目标资源(例如,容器组126和相应的容器128)以在远程系统114上执行,从而导致分配由相应的部署120和对应的容器组126保留以及执行相应的部署120和对应的容器组126所需的系统资源。在事件监视器420确定事件准则列表上的事件125发生但资源监视器430确定系统资源量不足(例如,重新部署阈值系统资源量不满足)的情形下,系统100可以放弃立即重新部署控制器122并采取许多不同的动作。例如,系统100可以对控制器122的重新部署进行排队,调整重新部署阈值系统资源量的值,或者修改定时器,诸如缩短空闲定时器以更积极地终止空闲控制器122。

图5示出进程创建器500从事件观察器400接收创建/重新部署命令440。在一些实现方式中,进程创建器500实现接收命令440的进程扩缩器520。进程扩缩器520和进程终止器300的进程扩缩器320可以是相同的组件或不同的组件。在所示的示例中,进程创建器500的进程扩缩器520增加部署120或控制器122的规模322(例如,增加部署大小322)。例如,规模322通过将部署大小322从0设置为1或大于1的某个其他整数来增加。这具有重新创建或重新部署先前终止的控制器122的效应,由此规模322的值指示要重新部署以在部署120内执行以由相应控制器122控制的容器组126(例如,实例)的数目。由进程创建器500设置的重新部署控制器122的规模322的增加值可以对应于在终止部署120或控制器122的执行之前与部署120相关联的容器组126的数目。当控制器122被创建时(诸如当规模322从0变为1时),控制器122将执行调和回路(或其他自我修复机制),以便确定部署120的期望状态和部署120的实际状态,并调和两者之间的差异。使用这种调和,控制器122将发现和/或了解触发部署120和控制器122的重新部署的事件125。因此,主控制器150可能不需要更新或通知控制器122过去的事件。

在所示的示例中,进程创建器500还实现定时器530。定时器530允许进程创建器500周期性地重新部署控制器122,而不需要触发事件125。也就是说,处理器创建器500可以确定自资源控制器122已经终止以来的终止时间段是否满足阈值时间段,并且作为响应,重新创建容器组126。例如,即使事件观察器400没有检测到事件准则列表124上的事件125,也可能希望每十分钟重新部署控制器122一次,以允许调和回路。这可能有助于实现“漂移固定”或允许周期性操作,诸如备份。每一控制器122可以指示此类辅助是否是必要的,并且主控制器150可以相应地做出反应。也就是说,每一控制器122可以向主控制器150指示控制器122是否需要周期性操作,并且然后主控制器150相应地响应该指示。在一些实现方式中,控制器122可以指示基于时间的周期性事件准则,或者在特定时间匹配的事件准则。例如,控制器122可以设置周期性事件来每10分钟调度调和一次,或者在另一示例中,调度一个事件在凌晨2点生效以用于每日备份。任意复杂性的周期性调度或基于时间的策略可以表达为下一个调度的事件。当评估是否终止容器组126时,主控制器150可以考虑直到下一个基于时间的事件的剩余时间。

继续参考图5,在一些实现方式中,进程创建器500还包括健康检查器540。健康检查器540接收系统事件125,并且可以基于事件125确定应重新部署控制器122,即使事件125不在事件准则列表124上。例如,当接收到电源故障事件或网络故障事件时,健康检查器540可以确定控制器应被重新部署用于维持或重新配置。作为另一示例,主控制器150可以确定应安装控制器122的较新的软件版本或配置。在重新部署了部署120之后,空闲确定器200再次确定部署120何时恢复回空闲。

在其他实现方式中,每一控制器122被配置成以“单次(oneshot)”模式运行。也就是说,容器组126或容器128执行,直到部署120中的每一应用(在容器128内执行)达到稳定状态(即,空闲状态),并且控制器122然后自动退出。控制器可以另外通知主控制器150进程完成。主控制器150然后可以承担观察与终止的控制器122相关联的事件125,并且当触发事件125发生时重新部署部署120。

在一些示例中,主控制器150充当部署120或目标资源126(例如,容器组)的调度器。也就是说,主控制器150可以协调控制器122的部署,以限制总资源(例如,内存)使用。例如,如果同时触发多个控制器122的部署的事件125发生,主控制器150可以适度地调度每一控制器122的部署以适配可用资源。

现参考图6,图表600描绘了执行多个容器组126的示例性系统100的随时间的资源可用性。水平x轴描绘时间,且垂直y轴描绘资源消耗。曲线600可以参考图1的系统100来描述。系统100可以创建/实例化多个容器组126,每一容器组包括一组具有隔离资源(例如,计算、内存、存储、网络接入等)的一个或多个容器128和控制一个或多个容器组126的对应资源控制器122。容器组126内的每一容器128可以封装对应的应用,以为对应的应用提供安全的执行环境。当配备容器组126时,系统100通常考虑总可用系统资源量,并且然后调度容器组126的创建,使得为所创建的容器组126的使用保留的系统资源量不超过总可用系统资源量。水平虚线指示总可用系统资源量。特别地,在时间段t0,容器组p0、p1正在执行,而p2、p3、p4正被排队和调度以执行。由于在时间段t0期间执行容器组p2-p4以及容器组p0、p1会超过总可用系统资源量,因此延迟启动容器组p2-p4中的每一者的执行,例如,通过在队列中指定容器组p2-p4,使得在时间段t0之后的当足够的系统资源量可用时的时间发生容器组p2-p4的执行。

在时间段t1,容器组p1的执行完成,并且系统100终止容器组p1,从而释放足够的系统资源量可用于执行容器组p2,而不超过总可用系统资源量。因此,系统100启动容器组p2的执行,而容器组p0在时间t1期间继续执行。在时间段t2,容器组p0的执行完成,并且系统100终止容器组p1,从而释放足够的系统资源量可用于执行容器组p3,而不超过总可用系统资源量。最后,在时间段t3,容器组p2、p3的执行完成,并且系统终止容器组p2、p3,从而释放足够的系统资源量可用于执行容器组p4,而不超过总系统资源量。以此方式,系统100可以适度地调度有限系统资源的分配,以供多个容器组126使用,每一容器组126包括对应一组一个或多个容器128和用于控制一个或多个容器组126的对应资源控制器122。

部署或目标资源126(例如,容器组)可以以多种方式进行调度。例如,系统100可以使用轮转(round-robin)、加权轮转、先进先出等。控制器122可以具有相关联的优先级,并且已被终止(例如,由于处于空闲状态)的与较高优先级相关联的控制器122在与较低优先级相关联的控制器122之前被重新部署。优先级可以被设置(例如,由系统管理员)或者由系统100自动确定。在一些示例中,基于容器128(即,应用)的时间敏感性来指派优先级。也就是说,应用对时间越不敏感,指派给它的优先级就越低。在一些实现方式中,主控制器150可以利用调度器的功能性,诸如将控制器122作为目标,以在资源受限的配额或低优先级调度类内操作,或者将控制器122标记为驱逐的良好候选。主控制器150还可以作为调度器的扩展来操作,以实现在通用调度器中不能容易实现的行为。

图7是用于在分布式系统中节约资源的示例性方法700的流程图。流程图在操作702处通过在数据处理硬件810(图8)从控制器122接收事件准则列表124开始。事件准则列表124描述了由资源控制器122观察的一个或多个事件125,并且资源控制器122被配置成响应于发生的与事件准则列表124匹配的事件125。事件准则列表124可以包括定时器事件。事件准则列表124还可以包括动态事件准则列表。在一些实现方式中,方法700包括从同时执行的多个资源控制器122接收多个事件准则列表124,每一事件准则列表124与相应的资源控制器122相关联。基于总可用系统资源量,同时执行的资源控制器122的数量可能受到限制。在一些示例中,从资源控制器122接收事件准则列表124包括从http端点检索事件准则列表124。

在步骤704,方法700包括由数据处理硬件810确定资源控制器122是否空闲。在一些示例中,方法700包括轮询资源控制器122以确定资源控制器122是否空闲。在其他示例中,方法700包括分析在阈值时间段期间已发生的事件125,并且当在阈值时间段内没有事件准则列表124上的事件125已经发生时,确定资源控制器122空闲。

当资源控制器122空闲时,方法700包括在步骤706,由数据处理硬件810终止资源控制器122。在一些实现方式中,主控制器150确定资源控制器122何时空闲,并通过将资源控制器122的部署大小322设置(例如,扩缩)为零来终止资源控制器。在资源控制器122空闲时终止资源控制器122之前,方法700可选地包括由数据处理硬件810确定系统资源的测量332是否满足系统资源阈值。例如,在当前使用或保留以用于系统100使用的系统资源的测量332超过对应于系统资源阈值的值时,可以满足系统资源阈值。当系统资源的测量332满足阈值并且资源控制器122空闲两者时,方法700包括终止资源控制器122。系统资源的测量332可以包括系统处理/计算、网络接入、存储和/或内存资源的测量。

在步骤708,方法700包括由数据处理硬件810(图8)确定来自事件准则列表124的任何事件125是否在终止资源控制器122之后发生。方法700可以包括轮询数据以确定是否已经发生了任何事件125。当来自事件准则列表124的至少一个事件125在终止资源控制器122之后发生时,方法700包括在步骤710,由数据处理硬件810重新创建资源控制器122。例如,重新创建资源控制器122可以包括通过将控制器122的部署大小322从零设置(例如,扩缩)为一(或者根据要重新部署和由控制器122控制的实例/容器组126的数目,大于1的某一其他整数)来重新部署(例如,经由在数据处理硬件810上执行的主控制器150)资源控制器122。资源控制器122可以与系统资源保留相关联,并且终止资源控制器122可以移除系统资源保留。系统资源保留可以指示资源控制器122和相关联的容器组126在使用时所需的系统资源的量值和/或类型。

在一些实现方式中,方法700包括由数据处理硬件810确定自资源控制器122已经被终止以来的终止时间段是否满足阈值时间段,并且响应于确定该终止时间段确实满足阈值时间段,由数据处理硬件810重新创建资源控制器122。在一些示例中,方法700包括由数据处理硬件810确定资源控制器122是否需要维持或重新配置。在这些示例中,响应于确定资源控制器122确实需要维持或重新配置,方法700然后包括由数据处理硬件810重新创建资源控制器122。

可选地,方法700可以包括由数据处理硬件810确定多个事件准则列表124上的任何事件125是否同时发生。响应于确定多个事件准则列表124上的事件125同时发生,方法700然后包括由数据处理硬件810依序重新创建资源控制器122的组,资源控制器122的组中的每一资源控制器122与多个事件准则列表124的相应事件准则列表124相关联。依序重新创建资源控制器122的组可以包括基于每一资源控制器122的优先级来依序重新创建资源控制器122的组。在其他示例中,方法700包括由数据处理硬件118基于系统度量332重新创建资源控制器122。系统度量332可以包括系统资源的测量。

软件应用(即,软件资源)可以指使计算设备执行任务的计算机软件。在一些示例中,软件应用可以称作“应用”、“app”或“程序”。示例性应用包括但不限于系统诊断应用、系统管理应用、系统维持应用、文字处理应用、电子表格应用、消息传递应用、媒体流应用、社交网络应用和游戏应用。

图8是可以用以实现本文档描述的系统和方法的示例性计算设备800的示意图。计算设备800旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。本文所示的组件、其连接和关系、以及其功能意图仅为示例性的,且并不意图限制本文档中描述和/或主张的本发明的实现方式。

计算设备800包括处理器810(例如,数据处理硬件)、存储器820(例如,存储器硬件)、存储设备830、连接到存储器820和高速扩展端口850的高速接口/控制器840、和连接到低速总线870和存储设备830的低速接口/控制器860。组件810、820、830、840、850和860中的每一者使用各种总线来互连,且可以安装在公共主板上或以其他适当的方式安装。处理器810可以处理用于在计算设备800内执行的指令,包括存储在存储器820中或存储设备830上的指令,以在外部输入/输出设备上显示用于图形用户界面(gui)的图形信息,诸如耦合到高速接口840的显示器880。在其他实现方式中,可以视情况连同多个存储器和多个类型的存储器来使用多个处理器和/或多个总线。而且,可以连接多个计算设备800,其中每一设备提供必要的操作的部分(例如,作为服务器阵列、一组刀片服务器或多处理器系统)。

存储器820在计算设备800内非临时性地存储信息。存储器820可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器820可以是用于临时或永久存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备800使用的物理设备。非易失性存储器的示例包括,但不限于,闪速存储器和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电子可擦除可编程只读存储器(eeprom)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括,但不限于,随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。

存储设备830能够提供用于计算设备800的大容量存储。在一些实现方式中,存储设备830是计算机可读介质。在各种不同的实现方式中,存储设备830可以是软盘设备、硬盘设备、光盘设备、或磁带设备、闪速存储器或其他类似的固态存储器设备、或设备阵列,包含存储区域网络或其他配置中的设备。在附加实现方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品含有在被执行时执行诸如上文所描述的一个或多个方法的指令。信息载体是计算机可读介质或机器可读介质,诸如存储器820、存储设备830、或处理器810上的存储器。

高速控制器840管理用于计算设备800的带宽密集型操作,而低速控制器860管理较低带宽密集型操作。此类职责分配只是示例性的。在一些实现方式中,高速控制器840耦合到存储器820、显示器880(例如,通过图形处理器或加速器),且耦合到可以接受各种扩展卡(未图示)的高速扩展端口850。在一些实现方式中,低速控制器860耦合到存储设备830和低速扩展端口890。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口890可以例如通过网络适配器而耦合到一个或多个输入/输出设备,诸如键盘、指向设备、扫描仪、或联网设备,诸如交换机或路由器。

计算设备800可以以许多不同形式来实现,如图中展示。例如,它可以被实现为标准服务器800a,或者多次在一组此类服务器800a中被实现,作为膝上型计算机800b,或者作为机架服务器系统800c的一部分。

本文描述的系统和技术的各种实现方式可以被实现在数字电子和/或光学电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中。这些各种实现方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现方式,该可编程系统包括可以是专用或通用的至少一个可编程处理器,其被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及传送数据和指令到存储系统、至少一个输入设备和至少一个输出设备。

这些计算机程序(还被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,且可以用高级程序化和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用,术语“机器可读介质”和“计算机可读介质”是指用以提供机器指令和/或数据到可编程处理器的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用以提供机器指令和/或数据到可编程处理器的任何信号。

本说明书中描述的进程和逻辑流程可以由一个或多个可编程处理器(也称作数据处理硬件)来执行,该可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并产生输出来执行功能。进程和逻辑流还可以由专用逻辑电路执行,例如fpga(现场可编程门阵列)或asic(专用集成电路)。适合执行计算机程序的处理器包括例如通用和专用微处理器以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或者以操作方式耦合以接收来自一个或多个大容量存储设备的数据或传递数据到一个或多个大容量存储设备或两者都有。然而,计算机无需具有此类设备。适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如eprom、eeprom和闪速存储器设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cdrom和dvd-rom盘。处理器和存储器可以通过专用逻辑电路来补充或并入专用逻辑电路中。

为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实现,该计算机具有显示设备,例如crt(阴极射线管)、lcd(液晶显示器)监视器或触摸屏,用于向用户显示信息,并且可选地具有键盘和指向设备,例如鼠标或轨迹球,用户可以通过该指向设备向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档并从其接收文档来与用户进行交互;例如,通过响应于从web浏览器接收的请求,将网页发送到用户的客户端设备上的web浏览器。

已描述许多实现方式。然而,将理解可以在不偏离本公开的精神和范围的情况下进行各种修改。因此,其他实现方式是在随附权利要求的范围之内。

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