首页 / 专利库 / 电脑零配件 / 硬件 / 针对应用容器的动态资源配置

针对应用容器的动态资源配置

阅读:759发布:2024-02-05

专利汇可以提供针对应用容器的动态资源配置专利检索,专利查询,专利分析的服务。并且基于容器技术的 云 服务为部署服务应用提供了轻量级、便携但健壮的架构。针对典型的现代应用的服务量和资源需求可能会在时间上大幅 波动 。针对被部署为独立容器的应用的、基于 机器学习 算法 并由云执行的动态资源分配方案允许针对应用的有效的资源使用和服务 质量 的提高。,下面是针对应用容器的动态资源配置专利的具体信息内容。

1.一种方法,包括:
维持针对服务应用的历史运行时数据;
接收针对容器组的当前运行时数据,所述容器组包括在当前硬件资源上被实例化的个体容器,其中:
所述容器组中的每个容器被配置为独立于所述容器组中的其他容器执行,并且其中每个容器包括所述服务应用的实例并且被分配所述当前硬件资源的子集;
通过将所述当前运行时数据添加到针对所述服务应用的所述历史运行时数据,获得针对所述服务应用的经扩展的运行时数据;
通过执行在针对所述服务应用的所述经扩展的运行时数据上被训练的机器学习算法,预测在特定的未来时间的针对所述服务应用的资源需求;
确定在所述特定的未来时间的针对所述服务应用的经更新的资源分配,所述经更新的资源分配包括将被实例化的多个容器和将被分配给所述多个容器中的每个容器的经更新的硬件资源;以及
将针对所述服务应用的所述经更新的资源分配发送给调度器,以用于在所述特定的未来时间的所述经更新的资源分配的实现。
2.根据权利要求1所述的方法,其中所述当前硬件资源包括处理器资源和存储器资源。
3.根据权利要求1所述的方法,其中针对所述容器组的所述当前运行时数据包括硬件资源使用数据和服务量数据。
4.根据权利要求1所述的方法,其中通过所述调度器的所述经更新的资源分配的所述实现被限制在所述当前硬件资源内。
5.根据权利要求1所述的方法,其中通过所述调度器的所述经更新的资源分配的所述实现包括将所述当前硬件资源之外的硬件资源临时分配给所述服务应用。
6.根据权利要求1所述的方法,其中所述当前硬件资源包括计算机集群和容器的所述容器组的至少两个容器,所述容器各自运行于所述计算机集群的单独计算机上。
7.根据权利要求1所述的方法,其中所述机器学习算法包括使用针对所述服务应用的所述经扩展的历史运行时数据以用于训练的随机森林回归算法。
8.根据权利要求1所述的方法,其中所述机器学习算法包括使用根据所述特定的未来时间而被选择的、针对所述服务应用的所述经扩展的历史运行时数据的子集的随机森林回归算法。
9.根据权利要求8所述的方法,其中所述随机森林回归算法包括具有分裂阈值的至少一个决策树,所述分裂阈值考虑用于针对所述服务应用的资源分配的预定义时间容差而被开发。
10.根据权利要求1所述的方法,其中每个容器包括软件堆栈,所述软件堆栈仅需要计算机中的主机操作系统内核和相关联的硬件来运行。
11.一种计算机系统,包括:
通信接口
存储器,包括针对服务应用的历史运行时数据;以及
与所述存储器和所述通信接口通信的电路,所述电路被配置为:
经由所述通信接口接收针对容器组的当前运行时数据,所述容器组包含在当前硬件资源上被实例化的个体容器,其中:
所述容器组中的每个容器被配置为独立于所述容器组中的其他容器执行,并且其中每个容器包括所述服务应用的实例并且被分配所述当前硬件资源的子集;
通过将所述当前运行时数据添加到针对所述服务应用的所述历史运行时数据,获得针对所述服务应用的经扩展的运行时数据;
通过执行在针对所述服务应用的所述经扩展的运行时数据上被训练的机器学习算法,预测在特定的未来时间的针对所述服务应用的资源需求;
确定在所述特定的未来时间的针对所述服务应用的经更新的资源分配,所述经更新的资源分配包括将被实例化的多个容器和将被分配给所述多个容器中的每个容器的经更新的硬件资源;以及
将针对所述服务应用的所述经更新的资源分配发送给调度器,以用于在所述特定的未来时间的所述经更新的资源分配的实现。
12.根据权利要求11所述的计算机系统,其中所述当前硬件资源包括处理器资源和存储器资源。
13.根据权利要求11所述的计算机系统,其中针对所述容器组的所述当前运行时数据包括硬件资源使用数据和服务量数据。
14.根据权利要求11所述的计算机系统,其中通过所述调度器的所述经更新的资源分配的所述实现被限制在所述当前硬件资源内。
15.根据权利要求11所述的计算机系统,其中通过所述调度器的所述经更新的资源分配的实现包括将所述当前硬件资源之外的硬件资源临时分配给所述服务应用。
16.根据权利要求11所述的计算机系统,其中所述当前硬件资源包括计算机集群和容器的所述容器组的至少两个容器,所述容器各自运行于所述计算机集群的单独计算机上。
17.根据权利要求11所述的计算机系统,其中所述机器学习算法包括使用针对所述服务应用的所述经扩展的历史运行时数据以用于训练的随机森林回归算法。
18.根据权利要求11所述的计算机系统,其中所述机器学习算法包括使用根据所述特定的未来时间而被选择的、针对所述服务应用的所述经扩展的历史运行时数据的子集的随机森林回归算法。
19.根据权利要求18所述的计算机系统,其中所述随机森林回归算法包括具有分裂阈值的至少一个决策树,所述分裂阈值考虑用于针对所述服务应用的资源分配的预定义时间容差而被开发。
20.一种计算系统,包括:
一组当前硬件资源;
分配器计算机,所述分配器计算机包括存储器,所述存储器包括服务应用的历史运行时数据;以及
调度器,
其中所述一组当前硬件资源、所述分配器计算机和所述调度器彼此通信;
其中所述服务应用包括容器组,所述容器组被分配所述当前硬件资源的子集并且包括至少一个被独立地实例化的容器;并且
其中所述分配器计算机被配置为:
从所述一组当前硬件资源接收针对所述服务应用的当前运行时数据;
通过将所述当前运行时数据添加到针对所述服务应用的所述历史运行时数据,获得针对所述服务应用的经扩展的运行时数据;
通过执行在针对所述服务应用的所述经扩展的运行时数据上被训练的机器学习算法,预测在特定的未来时间的针对所述服务应用的资源需求;
确定在所述特定的未来时间的针对所述服务应用的经更新的资源分配,所述经更新的资源分配包括将被实例化的多个容器和将被分配给所述多个容器中的每个容器的经更新的硬件资源;以及
将针对所述服务应用的所述经更新的资源分配发送给调度器,以用于在所述特定的未来时间的所述经更新的资源分配的实现。

说明书全文

针对应用容器的动态资源配置

技术领域

[0001] 本申请涉及动态计算机资源分配。

背景技术

[0002] 服务应用可以每个作为计算机集群上的多个独立实例运行。服务应用的每个实例可以封装在运行于计算机集群之一上的“容器”中。服务应用的每个容器可以包括服务应用及其所有依赖物,诸如针对服务应用的库的整个软件堆栈。计算机集群中的每个计算机可以包括一组硬件资源并运行主机操作系统。出于执行目的,每个容器可以被分配计算机的硬件资源的子集,容器在该计算机的硬件资源的子集上被提供。对控制针对应用及其容器的资源分配的改进将推动其进一步采用并提高资源使用效率。附图说明
[0003] 图1示出了针对基础设施即服务(IaaS)的示例架构;
[0004] 图2示出了用于提供IaaS的计算机集群的框图
[0005] 图3示出了图2的计算机集群之一上的虚拟机的实现;
[0006] 图4示出了图2的计算机集群之一上的应用容器的实现;
[0007] 图5示出了在图2的计算机集群上运行各种应用的容器的实现;
[0008] 图6是针对计算机集群的容器调度和资源分配系统的框图;
[0009] 图7示出了系统可以实现以用于预测和调度针对容器的资源分配的逻辑的流程图
[0010] 图8是系统可以基于机器学习实现以用于资源分配的逻辑的流程图;
[0011] 图9示出了根据时间的针对应用的示例性准周期性服务量数据;
[0012] 图10是系统可以基于使用修改随机森林回归算法开发的模型实现以用于预测针对应用的资源需求的逻辑的流程图;
[0013] 图11示出了容器管理代理和容器管理器的实现;
[0014] 图12示出了在基于使用机器学习算法开发的模型的预测和动态分配和传统的反应资源分配方法之间针对容器的资源分配的比较;以及
[0015] 图13示出了针对具有混合特性的应用的在计算机集群中的预测动态资源分配的示例。

具体实施方式

[0016] 基础设施即服务(IaaS)是服务的形式,云服务提供者在云服务中维持一组硬件资源,该组硬件资源为客户端提供计算环境。IaaS提供者的客户端可以是服务提供者本身,并为其用户提供具有各种特性的服务。例如,客户端可以是向大量用户提供电子商务和其他服务的web户。作为另一示例,IaaS提供者的客户端可以是照片或视频共享、处理、流传输的应用,该应用为用户提供数据密集的服务。作为又一个示例,IaaS提供者的客户端可以是科学或工程建模应用,该应用向少数专业用户提供处理密集的服务。
[0017] 这些客户端应用中的每个可以作为容器的多个独立的实例在云中被托管和运行,并被分配一定量的资源。针对客户端应用的资源需求可以是需要被实例化的多个容器的第一种形式,以及针对每个被实例化的容器的一定量的支持硬件资源(例如处理器和存储器)的第二种形式。因为这些应用在例如处理强度、数据强度和用户量方面具有这样的不同特性,因此为了实现一定平的服务质量(QoS)和用户满意度,它们在该两种形式二者中的计算资源需求很可能显著不同。另外,针对特定客户端应用的资源需求可能会随时间而变化。例如,web门户的用户量可以在工作日和周末之间、白天和夜晚之间波动,并且可以与某些事件相关。因此,针对客户端应用的该两种形式二者中的动态和预测资源分配一方面是减少过度分配和资源浪费的关键,另一方面是减少针对客户端的分配不足和QoS损失的关键。
[0018] 图1示出了用于向客户端提供IaaS的示例性计算系统的架构图。客户端108、110和112可以从各种IaaS提供者(诸如102、104和106)的获得IaaS。每个客户端可以需要IaaS用于托管各种类型的应用。每个IaaS提供者可以拥有适合某些类型的应用的计算资源。因此,客户端可以针对不同类型的应用请求来自不同IaaS提供者的服务。每个客户端可以经由通信网络114与IaaS提供者通信。通信网络114可以是任何类型。例如,通信网络114可以包括因特网或其他类型的计算机网络或电信网络,有线或无线。通信网络114可以包括各种类型的计算机网络的组合。客户端108、110和112可以使用任何客户端设备(包括但不限于台式计算机、膝上型计算机、移动电话、平板装置、平板计算机和个人数字助理(PDA))经由通信网络114从IaaS提供者请求服务、向IaaS提供者部署应用并从IaaS提供者获得应用数据(诸如运行时数据)。客户端108、110和112可以使用安装在客户端设备上的任何类型的软件,例如,由IaaS提供者提供的客户端应用,以访问IaaS提供者并与之通信。
[0019] 图2作为示例示出了针对典型的IaaS提供者的计算系统200的实现。例如,图1的IaaS提供者之一,诸如IaaS提供者102,可以维持计算机集群201,包括例如计算机203、205和207。计算机集群201可以包括通信接口202、系统资源204、输入/输出(I/O)接口206和显示电路208,该显示电路208在本地生成机器接口210或用于远程显示,例如,在本地或远程计算机上运行的web浏览器中。机器接口210和I/O接口206可以包括GUI、触敏显示器、语音或脸部识别输入、按钮、开关、扬声器和其他用户界面元件。I/O接口206可以进一步包括磁或光介质接口(例如,CDROM或DVD驱动)、串行和并行总线接口以及键盘鼠标接口。
[0020] 通信接口202可以包括无线发射器和接收器(“收发器”)212以及由收发器212的发射/接收电路使用的任何天线214。收发器212和天线214可以支持Wi-Fi网络通信,例如,在任何版本的IEEE 802.11下,例如802.11n或802.11ac。通信接口202还可以包括有线收发器216。有线收发器216可以为各种通信协议(诸如任何类型的以太网、有线电缆数据服务接口规范(DOCSIS)、数字用户线路(DSL)、同步光纤网络(SONET)或其他协议)中的任何一种提供物理层接口。
[0021] 计算机集群201可以经由通信网络114与客户端108、110和/或112通信。计算机201可以进一步直接或经由通信网络114与存储装置218通信。存储装置218可以包括任何类型的存储介质,包括但不限于磁盘或光盘、固态介质和磁带。存储装置218可以被组织为分布式存储网络。存储装置218可以备选地被组织为集中存储区域网络。
[0022] 如图3所示,计算机集群201的系统资源204可以包括硬件、软件、固件或以任何组合的其他电路和资源。系统资源204例如可以包括指令处理器302,诸如304、306、308和310。系统资源204可以进一步包括存储器311,诸如312、314、316和318。系统资源204可以实现为例如一个或多个片上系统(SoC)、专用集成电路(ASIC)、微处理器,结合固态存储器、随机存取存储器、离散模拟和数字电路以及其他电路。系统资源204提供针对计算机201中的任何期望功能的实现的基本平台。存储器211存储例如处理器302可以执行的指令,该指令用以执行用于向客户端提供IaaS的期望功能。虽然计算机集群201内的每个计算机可以各自维持其自己的处理器、存储器或其他系统资源,但是图3提供了计算机集群201的所有系统资源的聚合视图。
[0023] 如图3中进一步所图示,系统资源204可以被配置为基于包含虚拟机的架构向客户端提供IaaS。具体地,主机操作环境320可以被建立在计算机集群的每个计算机中用于支持虚拟机326。主机操作环境可以由主机操作系统322支持。管理程序(诸如来自EMC公司的VMware系列管理程序产品)可以进一步被安装在每个计算机中以提供针对虚拟机的支持。IaaS的客户端可以请求一个或多个虚拟机328,每个虚拟机被分配系统资源的子集。通过为每个虚拟机安装客户端操作系统330和包括应用334及其所有依赖物336(诸如运行应用所需的所有软件库)(请注意,为简单起见,图3仅示出了一个应用)的整个应用软件堆栈332,客户端可以将每个被分配的虚拟机作为裸虚拟机来处理和配置。每个虚拟机可以被独立地实例化。因为每个虚拟机的配置包括整个客户端操作系统,该整个客户端操作系统通常占用大量存储空间,需要大量存储器空间,并且与主机操作系统分开且排除于主机操作系统之外,因此虚拟机架构在系统资源方面可能是浪费的。出于同样的原因,用于支持针对客户端的更高服务量的虚拟机的映像的实例化是耗时的。因此,响应于波动的客户端资源需求的虚拟机的实时实例化可能是不切实际的。
[0024] 备选地,系统资源204可以被配置为基于容器向客户端提供IaaS,如图4所图示。具体地,主机操作环境320可以被建立在计算机集群的每个计算机中用于支持容器404。类似于基于虚拟机的架构,主机操作环境320可以包括主机操作系统322。容器引擎402可以被安装在主机操作环境中以支持容器的实例化。在图4的容器架构中,需要部署服务应用的客户端不需要请求虚拟机。相反,客户端可以请求多个容器404以用于部署服务应用。与基于虚拟机的架构相比,使用支持容器架构的IaaS的客户端不需要安装任何客户端操作系统。它只需要封装应用410及其所有依赖物诸如其库的软件堆栈412。被封装的应用408可以被实例化为多个独立实例,每个实例是运行容器,诸如406。所有运行于计算机集群的计算机上的容器可以共享相同的主机操作系统及其内核
[0025] 与虚拟机架构相比,容器架构是轻量级的、节省资源的并且是健壮的。因为它们是轻量级的,因此容器可以非常快速和有效地被实例化。因此,随着客户端应用的服务量和系统资源需求实时增加,新容器可以根据需要被实例化以满足客户端需求。同样地,当应用的服务量下降时,多余的容器可以被快速和有效地移除,并将其用户流量重新分配给应用的剩余容器。
[0026] 在图5的502中进一步示图出了客户端应用、容器和IaaS的计算机集群之间的关系。图5示出了计算机集群的各种计算机,诸如计算机504和506。这些计算机也可以是被称为容器工作者。这些计算机或容器工作者被标记以示出为从容器工作者1到容器工作者N。容器工作者向多个客户端应用提供IaaS,诸如应用508、510和512。这些客户端应用被标记以示出为从客户端应用1到客户端应用L。单个客户端可以部署多于一个客户端应用。例如,客户端应用508和客户端应用510可以由单个客户端部署,而客户端应用512可以由另一个不同的IaaS客户端部署。
[0027] 每个客户端应用可以作为容器的一个或多个独立实例运行,如508、510和512中的的堆栈所示。客户端应用的容器可以在容器工作者集群中被实例化。特定应用的容器可以在容器工作者集群内的多个容器工作者上被实例化。通常,容器可以在任何一个容器工作者上运行。相同客户端应用的容器不一定需要在相同容器工作者上运行。因此,一个应用的独立容器可以在多个容器工作者中被实例化。容器工作者集群的每个容器工作者可以运行相同应用或不同应用的一个或多个容器。同样地,每个容器工作者可以运行相同客户端或不同客户端的容器。为了简化容器的管理,每个容器优选地在容器工作者之一上运行而不是跨多个容器工作者运行。例如,图5中客户端应用1的容器508可以在容器工作者1到N中的任何一个容器工作者或容器工作者的子集上被实例化。
[0028] 客户端应用(诸如应用508、510和512)可以被部署以用于非常不同的目的,并因此具有不同的性质。这些客户端应用中的一些可以被意图用于向对应客户端的用户提供服务。客户端应用可以在例如处理强度、数据强度和用户量方面具有不同特性。例如,客户端应用可以是向大量用户提供电子商务和其他服务的web门户。作为另一个示例,客户端可以照片或视频共享、处理或流传输应用,该应用向用户提供数据密集的服务。作为又一个示例,IaaS提供者的客户端可以是科学或工程建模应用,该应用向少数专业用户提供处理密集的服务。
[0029] 用于实现针对客户端应用的一定水平的服务质量(QoS)和用户满意度的容器架构中向客户端应用的系统资源分配可以被实现为确定针对客户端应用将被实例化的多个容器和针对每个被实例化的容器的在例如处理器和存储器分配方面的资源分配两者。即使该两种形式的资源分配的不同组合(即,容器的数量和针对每个容器的资源分配)在针对客户端应用的系统资源的总分配的方面可以是等同的(例如,在总的被分配的CPU和存储器资源方面),这两种形式的分配中的每个本身都是关键的。例如,对于服务于大量用户请求但是对于每个用户计算量轻的客户端应用,其被部署为大量的容器,每个容器占用相对少量的CPU和存储器资源,可能更加有效。另一方面,为少数专业用户提供处理密集的服务的科学或工程建模应用被实现为少量容器,每个容器被分配大量的CPU和存储器资源,可能更好。
[0030] 另外,针对特定客户端应用的资源需求可能会随时间而变化。例如,随着web门户获得普及,针对web门户的用户量可以随着时间的推移而缓慢上升。进一步地,在较短的时间尺度上,web门户的用户量可以在工作日和周末之间、白天和夜晚之间、一个月的不同日期之间波动,并且可以与某些事件相关。因此,被分配给应用的系统资源可能需要被实时动态调整以用于在保持QoS和用户满意度的同时减少过度分配。进一步地,资源分配的动态调整可以优选地是预测性的和主动的。换句话说,在预期服务量变化的情况下资源分配可以被调整,而不是在服务量的变化已经发生并被检测到之后进行自适应或响应调整。这样的问题后解决方案可能是不令人满意的,因为在资源分配的任何调整及时作出之前,用户体验可能已经被危害。
[0031] 在一个实现中,客户端在云中部署应用之前可以首先确定上文所描述的两种形式中的初始系统资源需求。然后,客户端可以向IaaS提供者发送针对规定系统资源需求的服务的请求。然后,IaaS提供者可以实例化被规定的数量的容器,并且每个容器被分配有被规定的数量的系统资源。为了保证QoS并减少随时间的过度分配,针对应用的系统资源分配以实时和预测的方式被调整。针对未来时间的资源需求的预测可以基于由各种机器学习算法训练的模型,诸如随机森林回归算法和支持向量机算法。
[0032] 图6中示出了IaaS系统中的该实现的示例。系统包括用于部署客户端应用的计算机集群或容器工作者502。系统进一步包括容器管理器计算机集群602、容器调度器604和计算机集群606,计算机集群606用于预测针对客户端应用的系统资源需求。容器管理器计算机集群602可以与调度器604和容器工作者集群502通信。调度器604可以与系统资源预测计算机集群606和容器管理器计算机集群602通信。系统资源预测计算机集群606可以进一步与容器工作者集群502通信。上文所描述的各种计算机之间的通信可以经由专用通信接口或者可以经由通用通信网络114。图6作为一个示例示出了容器工作者和系统资源预测计算机集群之间的通信可以经由通信网络114。
[0033] 系统资源预测计算机集群606,也称为预测器,负责基于机器学习算法预测在未来时间的针对客户端应用的资源需求。预测器606可以包含一个或多个计算机。这些计算机可以被专用于资源需求的预测建模功能。备选地,资源预测功能可以被封装在运行在计算机上的软件中,在该软件中,预测建模仅是其整体功能的一部分。在未来时间的针对每个应用的资源需求可以被单独地预测。对应地,预测器可以实现预测模型,其中每个模型基于与一个客户端应用相关联的训练数据的机器学习被开发用于一个客户端应用。
[0034] 预测器606可以随时间从容器工作者获得并记录运行时信息605,并使用所收集的和经处理的运行时信息作为用于机器学习算法的训练/测试数据。在一些实现中,输入数据可以被分成训练数据和验证(或测试)数据。
[0035] 运行时信息605可以包括但不限于CPU使用、存储器使用、用户量和服务量(例如,用户请求的数量)。被收集的信息可以与时间戳相关联(包括诸如一天中的某个时间、星期几、一月中的某天等的信息)。简要地向前看图7,该图示出了运行时信息可以从容器工作者1到N向预测器606(具有虚线边的箱)报告。运行时信息可以以运行时数据消息的形式(如
716、718和720所示)从容器工作者传被送到预测器。每个消息可以包含上文所描述的针对容器的运行时信息、相关联的时间戳和标识容器的标识符。运行时数据消息可以被放置在运行时消息队列702中。
[0036] 运行时数据消息队列702可以包括从队列1到队列L的多个单独的队列,每个队列针对一个客户端应用。与每个客户端应用的容器相关联的运行时数据消息可以被排队或聚合为群组。应用级别的运行时数据在客户端应用的所有容器上的聚合提供在特定时间的客户端应用的适当的整体资源使用评估。在一个实现中,运行时数据消息可以由容器标识,并且可以根据容器和应用之间的对应关系将它们聚合成每个针对客户端应用的群组。这种对应关系可以由预测器作为来自例如容器工作者的特殊消息获得。备选地,从容器工作者传送的运行时数据消息可能已经被应用标识,并且在这种情况下,根据包含在运行时数据消息中的应用标识符,运行时数据消息可以被直接地排队或聚合。
[0037] 然后,根据客户端应用1到L聚合的运行时数据消息可以由图7的运行时消息处理引擎704处理,以提取数据并将数据格式化为可以用于基于机器学习算法的预测建模中的形式。运行时消息处理引擎704可以是基于例如spark流传输处理。然后,经处理的数据可以经由数据库管理器712被存储在后端数据库714中。针对每个应用的经处理的运行时数据可以用作训练数据705并且输入到基于机器学习算法的预测建模器706中以用于开发每个针对一个客户端应用的预测模型。在未来时间707的针对每个应用的经预测的资源需求可以由预测建模器提供给容器调度器604(图6)。
[0038] 可以被用作针对每个客户端应用的训练数据705的经处理的运行时数据可以包括但不限于在给定时间间隔内的用户请求的数量、每个用户请求所需的CPU核心的数量和存储器的大小、用户请求时间戳和持续时间等。这些数据提供关于在特定时间的用户行为的信息,并且可以用于训练基于机器学习算法的针对客户端应用的预测模型。
[0039] 图8示出了图7的预测建模器706的示例实现。在该实现中,针对特定客户端应用的运行时数据可以作为训练数据705输入到预测建模器中。用户行为和对应资源需求被预测的未来时间707(包括例如时间、星期几、一月中的某天)可以被指定为对预测建模器706的另一输入。预测建模器706可以包括用于预处理训练数据和获得训练数据的子集808的单元806。训练数据的子集可以由预处理单元806基于未来时间707从训练数据705中选择,如下面将更详细描述的。训练数据的子集808可以用作针对特定客户端应用的预测模型810的实际训练数据。预测模型810可以基于例如随机森林回归(RFR)算法或支持向量机(SVM)算法被获得。特别地,预测模型810可以是基于特别修改的RFR算法并适于在IaaS上下文中预测用户行为,如下面将更详细描述的。
[0040] 训练数据预处理单元806对训练数据的子集的选择可以基于未来时间707。在一个实施例中,仅具有与未来时间潜在相关的时间戳的训练数据可以被选择并被包括在训练数据的子集808中。使用相关数据可以更准确地预测用户行为。例如,工作日的相同时间的运行时数据可能是强相关的。用户行为在周末的特定时间期间或在特定年度事件周围可能是类似的。进一步地,一周的相同天的类似时间也可能是相关的。例如,周六晚上8点的用户行为可能类似于周六晚上9点的用户行为。因此,在选择用于训练预测器的运行时数据的更相关子集时,可以考虑客户端应用的服务量的准周期性质(在用户请求的数量,CPU使用,存储器使用等方面)。机器学习中不相关的数据通常会导致过度拟合,并增加来自经训练的模型的预测的不准确性。例如,图9示出了针对客户端应用的用户请求的数量与时间之间的典型准周期关系。在由被标记为“输入”的箭头指示的时间处的运行时数据可以被选择为用于开发模型的训练数据,该模型用于预测在第3天期间由被标记为“目标”的箭头指示的时间处的用户请求的数量。这些被选择的时间可以包括例如在第1天期间的类似或相同的时间902,在第2天期间的类似或相同的时间904,以及在第3天期间的“目标”之前的类似时间
906。
[0041] 基于资源需求将被预测的未来时间的训练数据的被选择子集808现在可以用作开发图8中针对客户端应用的、基于修改的RFR算法的预测模型810时的训练数据。示例性实现在图10中被示出。简而言之,训练数据的子集808被输入到预测模型810中。随机数据点在框1030处被选择,以用于根据各种特征(诸如,一天中的某个时间,星期几和一个月中的某一天)开发资源使用的分类树。在步骤1060获得分类树时,考虑关于具有一天中的某个时间的特征的时间的时间延迟容差,针对特征的分裂阈值可以在框1040被确定。通过使用来自训练数据的不同组随机数据点重复上文的相同步骤,包括多个分类树的随机森林可以在框
1070被获得,如循环箭头1080所示。然后,包括各种分类特征的未来时间707可以被输入到随机森林1070中,并且在每棵树中资源使用被预测性地分类。分类树中具有最高投票的资源使用分类可以被确定为经预测的资源使用分类1090。
[0042] 更详细地,包含各种特征和资源使用数据的训练数据的子集808的示例在表1002中被示出。训练数据点P1,P2,...,PK由1012指示并且每个对应于被标记为“一天中的某个时间”1016,“星期几”1018和“一月中的某天”1020的一组特征。资源使用1022可以被分类为各种预定义的级别或分类C1,C2,......CQ。级别或分类的数量O可以通过在资源分配方面的针对预测器的期望分辨率被确定。每个数据点根据针对资源使用的预定义级别被分类。资源使用可以是运行时数据中的任何一个或组合,包括但不限于用户请求的数量、CPU使用和存储器使用。
[0043] 与任何其他典型RFR算法相似,包括大量分类树的森林可以从训练数据的子集808被建立。如框1030所示,分类树可以通过随机选择的数据点被开发。例如,表1032示出了数据点P2,P3和PK可以被随机选择用于建立一个特定的分类树。
[0044] 构建分类树的过程在图10的框1040和对应图示1042中被示出。为简单起见,仅训练数据的两个特征,例如“星期几”和“一天中的某个时间”被示出为1048和1046,分别沿水平轴和垂直轴。为了进一步简化,针对资源使用数据,仅两种分类(例如高使用或低使用)被假设。该两种分类分别由诸如1050的实心圆圈(称为第一分类)和诸如1052的空心圆圈(称为第二分类)表示。在开发分类树时,对应于两个特征的分类分裂阈值可以被确定,以通过分类最佳地分裂数据。在1042的示例中,第一分类的数据主要集中在垂直线1058的左侧,而第二分类的数据主要集中在垂直线1058的右侧,在中间两种分类之间有较小混合。因此,垂直线1050可以是用于实现第一和第二分类的最佳分裂的分类分裂阈值。
[0045] 分类树可以因此被建立。然后,输入特征“星期几”和“一天中的某个时间”的任何组合可以根据该树被预测性地分类:如果一天中的某个时间小于分裂阈值1058,则针对该输入特征组合的资源使用可以被预测为第一资源使用分类,而如果一天中的某个时间等于或大于分裂分类阈值1058,则针对该输入特征组合的资源使用可以被预测为第二资源使用分类。
[0046] 实际上,可以存在两个以上的特征,并且可以存在两个以上的资源使用分类(参见图10的表1032)。因此,数据可能需要以分层方式被分裂,从而产生在每个分级级别具有一个分类分裂阈值的多级分类树。进一步地,为了根据特征更好地分裂数据,比诸如1058的简单线更复杂的分类分裂阈值可以被使用。取决于针对各种分类的数据的分布,诸如1058的分类分裂阈值可以具有被确定为实现各种分类的数据的最佳分裂的任何定向。例如,如果第一分类的数据更集中在1042的上半部分而第二分类的数据更集中在1042的下半部分,则水平而不是垂直的分类分裂阈值线可以是最佳分类分裂阈值。
[0047] 在确定在分层分类树的任何级别处的最佳分类分裂阈值时,RFR算法可以搜索优化信息增益的分裂阈值。例如,信息增益可以是分裂之前和之后的信息的熵的减少量。
[0048] 在计算信息增益时,RFR算法可以被修改以包括关于例如一天中的某个时间特征的延迟容差。延迟容差可以被引入的基本原理是,在资源分配的特定上下文中,稍稍提前预测使用量的增加是可接受的,因为在服务量的实际上升之前增加资源分配有助于QoS而不会过度浪费系统资源。因此,假设在1042中由实心圆圈表示的第一分类是比由空心圆圈表示的分类更高的资源使用分类,一天中的某个时间的延迟容差可以被引入第一分类的数据点中。该延迟容差可以通过被添加到实心圆圈的诸如1054的容差栏来表示。在确定分裂阈值时,在优化信息增益时该栏被考虑。例如,利用1041中的延迟容差栏,当优化信息增益时,分裂阈值可以被确定向右侧移动(与不考虑延迟容差的情况相比),因为该栏权衡了实心圆圈,特别是在具有被混合的实心和空心圆圈区域中,更多向右侧移动。将分类分裂阈值向右移动将产生第一和第二分类的分裂,第一和第二分类具有更好的信息增益。这样,在不考虑延迟容差的情况下,将被分类到较低使用分类的在被混合的区域中的未来的一天中的某个时间相反可以被分类到较高使用分类。
[0049] 尽管上文的机器学习算法的实现基于RFR,但是其他机器学习算法(诸如SVM)可以被选择用于预测资源分配。训练数据的预处理和用于适应延迟容差的修改也可以沿着上文讨论的线在其他被选择的机器学习算法中被实现。
[0050] 现在返回到图6,一旦在未来时间的针对客户端应用的资源使用(诸如用户请求的数量、CPU使用和存储器使用)通过由上文的或图6中的经修改的RFR预测器开发的随机森林被预测,经预测的资源使用可以被传送到图6的容器调度器604。容器调度器604可以负责将预测器的资源使用输出转换成系统资源分配,系统资源分配包括要被实例化的多个容器和针对每个容器的CPU/存储器分配。备选地,将要添加或移除的多个容器以及CPU/存储器分配调整由调度器确定。
[0051] 现在保持参见图6,容器管理器计算机集群602(也称为容器管理器)可以包括一个或多个计算机。这些计算机可以被专用于容器管理功能。备选地,容器管理功能可以封装在运行在计算机上的软件中,在计算机中容器管理只是其整体功能的一部分。容器管理器可以与容器调度器通信以获得针对每个应用的资源分配(在容器的数量和被分配给每个容器的系统资源量方面)。容器管理器可以进一步与容器工作者通信以执行容器管理。进一步地,容器管理器可以与客户端108、110和112以及客户端的用户608通信。在一个实现中,容器管理器可以用作用于用户访问在容器工作者上运行的客户端应用的容器的网关。此外,容器可以用作用于客户端进行服务请求和上传应用的可执行映像的网关。
[0052] 作为示例,图11示出了容器管理器和容器工作者之间的交互。例如,容器管理代理702可以作为容器工作者和容器管理器之间的接口被安装在每个容器工作者上。容器管理器的功能可以包括但不限于服务部署1105、代理注册1112、服务发现1106、负载平衡1108和容器映像管理1110。具体地,容器管理器可以负责将容器部署和实例化到容器工作者上。容器管理器可以根据从容器调度器获得的资源分配信息来部署容器。容器管理器可以检查容器工作者中的资源使用,并为每个容器确定其主容器工作者,并使用由客户端上传并由容器管理器管理的对应应用映像来实例化容器。对应地,容器管理器的容器映像管理功能涉及获得由客户端开发的应用的可执行映像、存储映像,以及在实例化应用的容器时将映像传送到适当的容器工作者。
[0053] 进一步地,因为容器管理器可以是对针对所有客户端的用户流量的网关,因此客户端域名或用于由客户端的用户访问服务的名称地址(诸如网站地址)可以被注册在例如DNS服务器中,以指向容器管理器。换句话说,容器管理器可以充当针对客户端的代理。因此,当来自客户端的针对服务的请求被接受并且针对客户端应用的域名被给出时,容器管理器执行代理注册1112的功能。
[0054] 此外,容器管理器可以使用容器管理器内部的一些逻辑信道表示来跟踪所部署的容器的通信信道。在容器工作者上运行的容器管理代理1102可以维持由容器管理器使用的逻辑信道与容器工作者中使用的物理信道(诸如网络端口)之间的映射。虽然由容器管理器维持的逻辑信道可能不会改变,但是当容器工作者中的容器管理代理重新安排容器之间的资源时,特别是当新容器需要被实例化时,与现有容器相关联的物理信道可能会改变。容器管理器的服务发现功能1106可以负责跟踪容器工作者中的这种改变,使得用户请求可以被分派到正确的端口。
[0055] 容器管理器可以进一步执行负载平衡708的功能。具体地,因为容器管理器可以用作应用的用户访问应用的网关,因此容器管理器也可以方便地负责将针对应用的用户流量分派到应用的容器,并保持应用的容器之间的用户量平衡。
[0056] 最后再次返回图6,容器调度器604可以进一步经由通信网络114与其他IaaS平台612通信。在容器工作者集群502的系统资源由于服务激增临时不足以维持QoS的情况下,容器调度器604可以向其他IaaS平台之一发送请求以临时实例化那里的一些容器。其他通道可以被提供用于将容器管理器602管理的针对容器的应用映像传送到其他帮助IaaS平台。
[0057] 上文的针对容器的预测资源分配有助于维持高QoS。图12示出了上文的实现和传统的问题后解决方案之间在根据时间实际的用户请求的数量如何匹配资源分配的方面的比较。虚线表示资源分配,并且实线表示服务量(例如,用户请求的数量)。如图12的1202所示,传统的问题后解决方案例如在其检测到现有分配不足以支持服务请求时,在时间1204增加资源分配。因此,在资源分配增加之前,QoS已经被危害。然而,如1206所示,预测资源分配主动预测未来时间的资源需求,从而维持QoS的期望水平。
[0058] 在另一实现中,客户端应用可以处理例如两种类型的服务。第一种类型的服务可以是动态的并且服务于外部用户。例如,第一类型的服务可以被提供给外部用户以用于在线视频流传输,其通常以突发和随机方式进行。第二种类型的服务可以是静态的和常规的,并且可以提供用于内部系统请求,诸如每日报告生成。两种类型的服务可以被单独地标识和建模。例如,可以基于上文所描述的经修改的RFR算法对第一种类型的服务的资源需求进行建模,以用于预测未来时间的动态服务所需的资源。常规静态服务资源需求数据可以从经修改的RFR模型的训练数据中取出,以提高预测准确性并减少过度拟合。如图13所示,根据时间1304的针对应用的总资源分配1302可以包括针对静态服务的足够资源1306和针对经预测的动态服务量的资源1308。当异常高的总资源需求被偶尔预测到时,调度器可以依赖来自公共云的临时资源1310来维持QoS。
[0059] 上文所描述的方法、设备、处理、框架、电路和逻辑可以以许多不同方式并且以硬件和软件的许多不同组合来实现。例如,所有或部分实现可以是包括指令处理器的电路,诸如中央处理单元(CPU)、微控制器或微处理器;或者作为专用集成电路(ASIC)、可编程逻辑器件(PLD)或现场可编程门阵列(FPGA);或者作为包括分立逻辑或其他电路组件的电路,包括模拟电路组件、数字电路组件或两者;或其任何组合。作为示例,电路可以包括分立的互连硬件组件,或者可以被组合在单个集成电路裸片上,分布在多个集成电路裸片之间,或者在公共封装中的多个集成电路裸片的多芯片模块(MCM)中实现。
[0060] 相应地,电路可以存储或访问用于执行的指令,或者可以仅在硬件中实现其功能。指令可以被存储在除了瞬态信号之外的有形存储介质中,诸如闪存、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM);或者在磁盘或光盘上,诸如光盘只读存储器(CDROM)、硬盘驱动器(HDD)或其他磁盘或光盘;或者在另一个机器可读介质中或上。诸如计算机程序产品的产品可以包括存储介质和存储在介质中或介质上的指令,并且这些指令当由设备中的电路执行时可以使得设备实现上文所描述的或在附图中示出的任何处理。
[0061] 实现可以是分布式的。例如,电路可以包括多个不同的系统组件,诸如多个处理器和存储器,并且可以跨越多个分布式处理系统。参数、数据库和其他数据结构可以被单独地存储和控制,可以被合并到单个存储器或数据库中,可以以许多不同的方式在逻辑上和物理上被组织,并且可以以许多不同的方式被实现。示例实现包括链接列表、程序变量、散列表、数组,记录(例如,数据库记录)、对象和隐式存储机制。指令可以形成单个程序的部分(例如,子程序或其他代码部分),可以形成多个单独的程序,可以跨多个存储器和处理器分布,并且可以以许多不同的方式实现。示例实现包括独立程序,并且作为库的一部分,诸如动态链接库(DLL)之类的共享库。例如,库可以包含共享数据和一个或多个共享程序,程序包括指令,这些指令当被电路执行时执行上文所描述的或在附图中示出的任何处理。
[0062] 本文描述的原理可以以许多不同的形式体现。然而,并非所有描绘的组件都是必需的,并且一些实现可以包括附加组件。在不脱离本文所述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。附加的、不同的或更少的组件可以被提供。
[0063] 贯穿整个说明书中以单数或复数形式提及的“一个示例”、“示例”、“多个示例”、“一个实施例”、“实施例”、“示例实施例”等意味着结合实施例或示例描述的一个或多个特定特征、结构或特性被包括在本公开的至少一个实施例或一个示例中。因此,贯穿整个说明书中的多个地方以单数或复数形式出现的短语“在一个实施例中”、“在实施例中”、“在示例实施例中”、“在一个示例中”、“在示例中”等并不一定都指相同实施例或单个实施例。此外,特定特征、结构或特性可以在一个或多个实施例或示例中以任何合适的方式被组合。
[0064] 本文的说明书中使用的术语仅用于描述特定示例的目的,而不是限制性的。如本文所使用的,单数形式“一(a)”,“一个(an)”和“该(the)”旨在也包括复数形式,除非上下文另有明确说明。此外,如本文的说明书和贯穿整个所附权利要求中所使用的,除非上下文另有明确规定,否则“在……中”的含义包括“在……中”和“在……上”。还应理解,本文所用的术语“和/或”是指并包含一个或多个相关联的所列项目的任何和所有可能的组合。将进一步理解,术语“可以包括(may include)”、“包括(including)”、“包含(comprises)”、和/或“包含(comprising)”,当在本说明书中使用时,指定所述特征、操作、元素和/或组件的存在,但不排除其中一个或多个其他特征、操作、元件、组件和/或组的存在或添加。
[0065] 各种实施方式已经被具体描述。然而,许多其他实施方式也是可能的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈