通过评估微服务对容器的自动化编排的制作方法
未命名
08-03
阅读:75
评论:0

1.本公开一般涉及基于容器的微服务,并且更具体地涉及通过评估微服务的节点内特征和节点间特征并且然后评估容器编排(container orchestration)的结果来自动编排用于微服务的容器。
背景技术:
2.现在使用容器平台来包装应用,使得应用可以访问主机的操作系统上的一组特定资源。在微服务架构中,应用被进一步分解成各种分立服务,每个分立服务被包装在单独的容器中。好处是容器是可缩放的和短暂的。换句话说,托管在容器中的应用或服务的实例根据需要来来去去。
3.然而,可缩放性是操作上的挑战。容器编排都是关于管理容器的生命周期,尤其是在大型动态环境中。容器编排控制使许多任务自动化,诸如例如容器的供应和部署、添加或移除容器以跨主机基础设施均匀地分散应用负载、如果主机中的资源短缺或如果主机死机则将容器从一个主机迁移到另一个主机、在容器之间分配资源等。
4.当到了将新容器部署到集群中的时间时,容器编排工具基于预定义的约束条件(例如处理器、存储器、存储、网络资源等的可用性)调度部署,并且寻找最合适的主机来放置容器。容器也可根据与其它主机的接近度来放置。
5.集群是具有至少一个控制器节点和若干工作者节点的一组节点,其可以是物理或虚拟机。每个节点具有其自己的操作系统环境。控制器管理应用实例在节点上的调度和部署,并且控制器节点运行的完全的一组服务被称为控制面。调度器根据资源和定义的策略约束将节点分配给荚(pod)。荚是基本调度单元,其包括保证共同位于主机上并且能够共享资源的一个或多个容器。在集群内为每个荚分配唯一的ip地址,允许应用无冲突地使用端口。
6.容器编排工具(诸如,例如kubernetes、docker swarm等)是用于自动部署、缩放和管理跨节点集群的容器化应用的组件。容器编排工具将构成应用的容器分组为逻辑单元以便于管理和发现。多集群容器编排环境还可以管理容器化的应用的集群,其可以跨越公共、私有和混合云。
7.微服务是一起工作的一组荚,例如多层应用的一层。微服务是软件开发的架构和组织方法,其中软件包括通过定义明确的应用编程接口(api)通信的小型独立服务。微服务架构使得应用更容易缩放和更快地开发,从而实现创新并加速新特征的上市时间。利用微服务架构,应用被构建为独立的组件,其作为服务运行每个应用进程。这些服务使用轻量api经由明确定义的接口来通信。针对业务能力建立服务,并且每个服务执行单个功能。因为服务是独立运行的,所以每个服务可以被更新、部署和缩放以满足对应用的特定功能的需求。
技术实现要素:
8.根据一个示例性实施例,提供了一种用于自动执行基于容器的微服务的容器缩放和迁移的计算机实现的方法。计算机从多个不同的微服务中的每个相应微服务提取第一组特征。计算机使用训练的预测模型和从每个相应微服务提取的第一组特征来预测在未来时间点多个不同的微服务中的每个相应微服务所需的容器的数量。计算机根据在未来时间点每个相应微服务所需的容器的数量基于与每个相应微服务对应的容器的当前数量的预测的变化,向多个不同的微服务中的每个相应微服务分配缩放标签和缩放值。计算机基于向每个相应微服务分配的缩放标签和缩放值,自动调整与多个不同的微服务中的每个相应微服务对应的容器的当前数量。根据其它示例性实施例,提供了一种用于自动执行基于容器的微服务的容器缩放和迁移的计算机系统和计算机程序产品。
附图说明
9.图1是其中可以实现示例性实施例的数据处理系统的网络的图形表示;
10.图2是其中可以实现示例性实施例的数据处理系统的图;
11.图3是示出其中可以实现示例性实施例的云计算环境的图;
12.图4是示出根据示例性实施例的云计算环境的抽象层的示例的图;
13.图5是示出根据示例性实施例的容器编排系统的示例的图;
14.图6是示出根据示例性实施例的预测表的示例的图;
15.图7是示出根据示例性实施例的容器迁移过程的示例的图;
16.图8是示出根据示例性实施例的容器迁移标识表的示例的图;以及
17.图9a-9b是示出根据示例性实施例的用于预测基于容器的微服务的容器缩放和迁移的过程的流程图。
具体实施方式
18.本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),该计算机可读程序指令用于使处理器执行本发明的各方面。
19.计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
20.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机
或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
21.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如smalltalk、c++等)和过程编程语言(例如“c”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
22.在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
23.这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
24.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
25.附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的顺序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
26.现在参考附图,并且特别地,参考图1-5,提供了可以实现示例性实施例的数据处理环境的图。应当理解,图1-5仅意味着示例,而不是要断言或暗示关于其中可以实现不同实施例的环境的任何限制。可以对所描述的环境进行许多修改。
27.图1描述了其中可以实现示例性实施例的数据处理系统的网络的图形表示。网络数据处理系统100是其中可以实现示例性实施例的计算机、数据处理系统和其它设备的网络。网络数据处理系统100包括网络102,其是用于提供在网络数据处理系统100内连接在一起的计算机、数据处理系统和其它设备之间的通信链路的介质。网络102可以包括连接,诸如,例如有线通信链路、无线通信链路、光纤电缆等。
28.在所描述的示例中,服务器104和服务器106连同存储108一起连接到网络102。服务器104和服务器106可以是例如具有到网络102的高速连接的服务器计算机。另外,服务器104和服务器106通过评估微服务的节点内特征和节点间特征并且然后评估容器编排的结果来提供针对在客户端计算节点设备上运行的微服务的容器编排服务(即,基于节点内特征评估来放大(scaling up)或缩小(scaling down)计算节点内的容器,以及基于节点间特征评估来在节点之间迁移容器)。此外,应当注意,服务器104和服务器106可以各自表示一个或多个云环境中的多个服务器。可替换地,服务器104和服务器106可各自表示一个或多个数据中心中的服务器集群。
29.客户端110、客户端112和客户端114也连接到网络102。客户端110、112和114是服务器104和服务器106的客户端计算节点设备。在该示例中,客户端110、112和114是具有到网络102的有线通信链路的网络计算机。然而,应当注意,客户端110、112和114可以表示具有到网络102的有线或无线通信链路的其它类型的数据处理系统,诸如例如台式计算机、膝上型计算机、手持式计算机、智能电话、智能车辆、智能电视、智能电器等。用户可以利用客户端设备来经由关键性能指标仪表板查看由服务器104和服务器106执行的容器编排的影响。
30.存储108是能够以结构化格式或非结构化格式存储任何类型的数据的网络存储设备。另外,存储装置108可以表示多个网络存储设备。此外,存储108可以存储多个不同的客户端计算节点设备的标识符和网络地址、多个不同的微服务的标识符、多个容器的标识符、节点内特征数据、节点间特征数据、关于容器编排操作的影响的信息、定义的时间段的历史微服务工作负载数据等。此外,存储108可以存储其他类型的数据,诸如认证或凭证数据,其可以包括例如用户名、密码和与系统管理员和用户相关联的生物测定数据。
31.另外,应当注意,网络数据处理系统100可以包括任何数量的附加服务器、客户端、存储设备和未示出的其他设备。位于网络数据处理系统100中的程序代码可以存储在计算机可读存储介质上,并下载到计算机或其它数据处理设备以供使用。例如,程序代码可以存储在服务器104上的计算机可读存储介质上,并且通过网络102下载到客户端110以便在客户端110上使用。
32.在所描述的示例中,网络数据处理系统100可以被实现为许多不同类型的通信网络,诸如,例如因特网、内联网、广域网(wan)、局域网(lan)、电信网络或其任意组合。图1仅旨在作为示例,而不是作为对不同示例性实施例的架构限制。
33.如本文所用,当用于提及项目时,“若干”是指一个或多个项目。例如,“若干不同类型的通信网络”是一个或多个不同类型的通信网络。类似地,在用于指项目时,“一组”表示一个或多个项目。
34.此外,术语“至少一个”当与项目列表一起使用时,意味着可以使用所列项目中的一个或多个项目的不同组合,并且可能仅需要列表中的每个项目中的一个项目。换句话说,“至少一个”是指项目的任意组合,并且可以使用来自列表的项目的数量,但是不是列表中的所有项目都是必需的。项目可以是特定对象、事物或类别。
35.例如,但不限于,“项目a、项目b或项目c中的至少一个”可以包括项目a、项目a和项目b、或项目b。该示例还可以包括项目a、项目b、和项目c或项目b和项目c。在一些说明性示例中,“至少一个”可以是例如但不限于2个项目a;1个项目b;和10个项目c;4个项目b和7个项目c;或其它合适的组合。
36.现在参考图2,根据示例性实施例描绘了数据处理系统的图。数据处理系统200是诸如图1中的服务器104的计算机的示例,其中可以设置实现示例性实施例的容器编排过程的计算机可读程序代码或指令。在该示例中,数据处理系统200包括通信结构202,其提供处理器单元204、存储器206、持久存储208、通信单元210、输入/输出(i/o)单元212和显示器214之间的通信。
37.处理器单元204用于执行可加载到存储器206中的软件应用和程序的指令。处理器单元204可以是一个或多个硬件处理器设备的集合,或者可以是多核处理器,这取决于特定的实现。
38.存储器206和持久存储208是存储设备216的示例。如本文所使用的,计算机可读存储设备或计算机可读存储介质是能够存储信息的任何硬件,该信息诸如例如但不限于数据、功能形式的计算机可读程序代码和/或基于瞬时或持久的其他合适的信息。此外,计算机可读存储设备或计算机可读存储介质不包括传播介质,诸如瞬态信号。在这些示例中,存储器206可以是例如随机存取存储器(ram),或任何其他合适的易失性或非易失性存储设备,诸如闪存。取决于特定的实现,持久存储208可以采取各种形式。例如,持久存储208可以包括一个或多个设备。例如,持久存储208可以是盘驱动器、固态驱动器、可重写光盘、可重写磁带或上述的一些组合。持久存储208使用的介质可以是可移除的。例如,可移动硬盘驱动器可以用于持久存储208。
39.在该示例中,持久存储208存储机器学习组件218。然而,应当注意,即使机器学习组件218被示为驻留在持久存储208中,在替换的示例性实施例中,机器学习组件218可以是数据处理系统200的单独组件。例如,机器学习组件218可以是耦合到通信结构202的硬件组件或硬件和软件组件的组合。在另一可替换示例性实施例中,机器学习组件218的第一组组件可以位于数据处理系统200中,并且机器学习组件218的第二组组件可以位于第二数据处理系统中,诸如例如图1中的服务器106。
40.机器学习组件218通过评估多个不同的微服务的节点内特征和节点间特征并且然后评估容器编排的结果来控制自动编排用于多个不同的微服务的容器的过程。机器学习组件218可以在没有被明确编程来学习的情况下进行学习。机器学习组件218可基于输入到机器学习组件218中的训练数据来学习。机器学习组件218可以使用各种类型的机器学习算法来学习。各种类型的机器学习算法包括监督学习、半监督学习、无监督学习、特征学习、稀疏字典学习、异常检测、关联规则或其他类型的学习算法中的至少一个。机器学习模型的示例包括人工神经网络、决策树、支持向量机、贝叶斯网络、遗传算法和其他类型的模型。例如,可以使用历史微服务工作量数据来训练这些机器学习模型。
41.微服务220表示特定的基于容器的微服务的标识符。然而,应当注意,微服务220可以表示多个不同的微服务的标识符,机器学习组件218针对该多个不同的微服务执行容器
编排服务(诸如容器缩放和容器迁移)。微服务220在位于计算节点222上的容器224上运行。容器224表示位于计算节点222的每个计算节点上的多个容器的标识符。计算节点222表示多个计算节点(例如图1中的客户端110、112和114)的标识符,计算节点222为容器224运行微服务220而提供资源(例如处理器、存储器、存储、网络设备等)。
42.机器学习组件218利用微服务特征提取器组件226来提取与计算节点222的每个相应计算节点相对应的特征(例如,特性、属性、性能、特质、参数等)。所提取的特征包括节点内特征228和节点间特征230。
43.节点内特征228包括诸如与在当前时间段期间在计算节点222上运行的微服务220相对应的容器的数量、与在当前时间段期间在计算节点222上运行的微服务220相对应的容器的数量的利用率和工作负载容量、与在先前时间段期间在计算节点222上先前运行的微服务220相对应的容器的数量、与在先前时间段期间在计算节点222上运行的微服务220相对应的容器的数量的利用率和工作负载容量、在当前时间段期间对微服务220的应用编程接口请求的数量、在先前时间段期间对微服务220的应用编程接口请求的数量等信息。节点间特征230包括诸如微服务220和其他微服务之间的依赖性(例如,微服务220对多个不同的微服务中的一个或多个其他微服务进行应用编程接口调用)、微服务220和其他微服务之间的关系(例如,微服务220和一个或多个其他微服务使用同一应用或对应于同一应用)、容器224的地理位置(例如,运行对应于微服务220的容器224的每个特定计算节点在地理上所处的位置)、对应于每个计算节点222的延迟参数和网络带宽的信息。
44.机器学习组件218分析所提取的节点内特征228和节点间特征230,以确定和生成最优容器编排策略,诸如计算节点222内的容器缩放(即,容器的放大或缩小)以及在某些计算节点222之间的容器迁移,以提高微服务性能并减少网络延迟。机器学习组件218指导编排组件232实现所确定的最优容器编排策略。
45.此外,机器学习组件218确定容器编排对一组关键性能指标的影响,该关键性能指标诸如例如容器缩放和迁移的成本、网络延迟、微服务安全性等。机器学习组件218利用关键性能指标仪表板组件234来生成并显示容器编排对一组关键性能指标的影响结果。关键性能指标仪表板组件234经由仪表板(例如,交互式图形用户界面)在诸如显示器214的显示设备上向用户显示影响的结果。
46.结果,数据处理系统200作为专用计算机系统来操作,其中数据处理系统200中的机器学习组件218使得能够自动编排容器以提高微服务性能并降低网络延迟。特别地,与当前可用的不具有机器学习组件218的通用计算机系统相比,机器学习组件218将数据处理系统200变换成专用计算机系统。
47.在这个示例中,通信单元210经由网络(例如图1中的网络102)提供与其它计算机、数据处理系统和设备的通信。通信单元210可以通过使用物理和无线通信链路提供通信。物理通信链路可以利用例如导线、电缆、通用串行总线或任何其它物理技术来建立用于数据处理系统200的物理通信链路。无线通信链路可以利用例如短波、高频、超高频、微波、无线保真(wi-fi)、技术、全球移动通信系统(gsm)、码分多址(cdma)、第二代(2g)、第三代(3g)、第四代(4g)、4g长期演进(lte)、高级lte、第五代(5g)或任何其它无线通信技术或标准来建立用于数据处理系统200的无线通信链路。
48.输入/输出单元212允许与可以连接到数据处理系统200的其它设备输入和输出数
据。例如,输入/输出单元212可以提供用于通过键盘、小键盘、鼠标、麦克风和/或一些其它合适的输入设备的用户输入的连接。显示器214提供向用户显示信息的机制,并且可以包括触摸屏能力,以允许用户通过例如用户接口或输入数据进行屏幕上的选择。
49.用于操作系统、应用和/或程序的指令可以位于存储设备216中,其通过通信结构202与处理器单元204通信。在该说明性示例中,指令以功能形式位于持久存储208上。这些指令可以被加载到存储器206中以便由处理器单元204运行。不同实施例的过程可以由处理器单元204使用计算机实现的指令来执行,该指令可以位于诸如存储器206的存储器中。这些程序指令被称为程序代码、计算机可用程序代码或计算机可读程序代码,其可以由处理器单元204中的处理器读取和运行。在不同的实施例中,程序指令可以被体现在不同的物理计算机可读存储设备上,例如存储器206或持久存储208。
50.程序代码236以功能形式位于计算机可读介质238上,其可选择性地移除并且可以加载到或传送到数据处理系统200以便由处理器单元204运行。程序代码236和计算机可读介质238形成计算机程序产品240。在一个示例中,计算机可读介质238可以是计算机可读存储介质242或计算机可读信号介质244。
51.在这些说明性示例中,计算机可读存储介质242是用于存储程序代码236的物理或有形存储设备,而不是传播或传输程序代码236的介质。计算机可读存储介质242可以包括例如光盘或磁盘,其被插入或放置到作为持久存储208的一部分的驱动器或其他设备中,以便传送到作为持久存储208的一部分的存储设备(诸如硬盘驱动器)上。计算机可读存储介质242也可以采取持久存储的形式,例如连接到数据处理系统200的硬盘驱动器、拇指驱动器或闪存。
52.可替换地,程序代码236可以使用计算机可读信号介质244被传送到数据处理系统200。计算机可读信号介质244可以是例如包含程序代码236的传播数据信号。例如,计算机可读信号介质244可以是电磁信号、光信号或任何其他合适类型的信号。这些信号可以通过通信链路传输,例如无线通信链路、光纤电缆、同轴电缆、电线或任何其他合适类型的通信链路。
53.此外,如本文所使用的,“计算机可读介质238”可以是单数或复数。例如,程序代码236可以位于单个存储设备或系统形式的计算机可读介质238中。在另一个示例中,程序代码236可以位于分布在多个数据处理系统中的计算机可读介质238中。换句话说,程序代码236中的一些指令可以位于一个数据处理系统中,而程序代码236中的其它指令可以位于一个或多个其它数据处理系统中。例如,程序代码236的一部分可位于服务器计算机中的计算机可读介质238中,而程序代码236的另一部分可位于一组客户端计算机中的计算机可读介质238中。
54.为数据处理系统200示出的不同组件不意味着对可以实现不同实施例的方式提供架构限制。在一些说明性示例中,一个或多个组件可以结合在另一组件中或以其它方式形成另一组件的一部分。例如,在一些说明性示例中,存储器206或其部分可以被并入处理器单元204中。不同的示例性实施例可以在包括除了或代替为数据处理系统200示出的那些组件的数据处理系统中实现。图2中所示的其它组件可以与所示的说明性示例不同。可以使用能够运行程序代码236的任何硬件设备或系统来实现不同的实施例。
55.在另一示例中,总线系统可以用于实现通信结构202,并且可以包括一个或多个总
线,诸如系统总线或输入/输出总线。当然,总线系统可以使用任何合适类型的架构来实现,该架构提供在附接到总线系统的不同组件或设备之间的数据传输。
56.应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,示例性实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。云计算是一种服务递送模型,用于实现对可配置计算资源的共享池的方便的按需网络访问,该可配置计算资源诸如例如网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务,其可以利用最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
57.该特性可以包括例如按需自助服务、广泛的网络访问、资源池、快速弹性和测量的服务。按需自助服务允许云消费者单方面地自动按需提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。广泛的网络访问提供了在网络上可用并且通过标准机制访问的能力,该标准机制促进了由诸如移动电话、膝上型计算机和个人数字助理等异构的薄或厚客户端平台的使用。资源池化允许将提供者的计算资源池化以使用多租户模型来服务于多个消费者,其中根据需求动态地分配和重新分配不同的物理和虚拟资源。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在更高抽象级指定位置,例如国家、州或数据中心。快速弹性提供了可以快速和弹性地提供的能力,在一些情况下自动地快速向外扩展和快速向内扩展。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。测量服务允许云系统通过在适合于服务类型的某一抽象级别上利用计量能力来自动控制和优化资源使用,该服务类型诸如存储、处理、带宽和活动用户帐户。可以监测、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明度。
58.服务模型可以包括例如软件即服务(saas)、平台即服务(paas)和基础设施即服务(iaas)。软件即服务是提供给消费者的使用在云基础设施上运行的提供者的应用的能力。可通过瘦客户端接口,诸如web浏览器(例如,基于web的电子邮件)从各种客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至单独应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。平台即服务是提供给消费者的能力,以将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。基础设施即服务是提供给消费者的能力,以提供消费者能够部署和运行任意软件的处理、存储、网络和其它基本计算资源,该任意软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、所部署的应用的控制,以及可能对选择的联网组件(诸如主机防火墙)的有限控制。
59.部署模型可以包括例如私有云、社区云、公共云和混合云。私有云是仅为组织操作的云基础设施。私有云可以由组织或第三方管理,并且可以存在于场所内或场所外。社区云是由若干组织共享的云基础设施,并且支持具有共享关注点的特定社区,该关注点例如是任务、安全要求、策略和合规性考虑。社区云可以由组织或第三方管理,并且可以存在于场所内或场所外。公共云是可用于一般公众或大型工业群体的云基础设施,并且由销售云服务的组织拥有。混合云是由两个或更多云组成的云基础设施,诸如例如私有云、社区云和公
共云,它们保持为唯一实体,但是通过标准化或私有技术绑定在一起,该标准化或私有技术实现数据和应用可移植性,诸如例如用于云之间的负载平衡的云突发。
60.云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
61.现在参考图3,描绘了示出其中可以实现示例性实施例的云计算环境的图。在该说明性示例中,云计算环境300包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点310的集合,本地计算设备诸如例如个人数字助理或智能电话320a、台式计算机320b、膝上型计算机320c和/或汽车计算机系统320n。云计算节点310可以是例如图1中的服务器104和服务器106。本地计算设备320a-320n可以是例如图1中的客户端110-114。
62.云计算节点310可以彼此通信,并且可以物理地或虚拟地分组到一个或多个网络中,诸如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境300提供基础设施、平台和/或软件作为服务,对于这些服务,云消费者不需要在诸如本地计算设备320a-320n的本地计算设备上维护资源。应当理解,本地计算设备320a-320n的类型仅旨在说明,并且云计算节点310和云计算环境300可以例如使用web浏览器通过任何类型的网络和/或网络可寻址连接与任何类型的计算机化设备通信。
63.现在参考图4,根据示例性实施例描绘了说明抽象模型层的图。在该说明性示例中示出的功能抽象层的集合可以由云计算环境提供,诸如图3中的云计算环境300。应当预先理解,图4中示出的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描述的,提供了下面的层和相应的功能。
64.云计算环境400的抽象层包括硬件和软件层402、虚拟化层404、管理层406和工作负载层408。硬件和软件层402包括云计算环境的硬件和软件组件。硬件组件可以包括例如大型机410、基于risc(精简指令集计算机)架构的服务器412、服务器414、刀片服务器416、存储设备418以及网络和联网组件420。在一些示例性实施例中,软件组件可以包括例如网络应用服务器软件422和数据库软件424。
65.虚拟化层404提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器426;虚拟存储428;虚拟网络430,包括虚拟专用网络;虚拟应用和操作系统432;以及虚拟客户端434。
66.在一个示例中,管理层406可以提供以下描述的功能。资源供应436提供了计算资源和其他资源的动态采购,这些资源被用于执行云计算环境内的任务。计量和定价438在云计算环境内利用资源时提供成本跟踪,以及针对这些资源的消耗的记账或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户440为消费者和系统管理员提供对云计算环境的访问。服务级别管理442提供云计算资源分配和管理,使得满足所需的服务级别。服务级别协议(sla)规划和履行444根据sla为预期未来需求的云计算资源提供预先安排和采购。
67.工作负载层408提供了可以利用云计算环境的功能的示例。可以由工作负载层408提供的示例工作负载和功能可以包括映射和导航446、软件开发和生命周期管理448、虚拟教室教育递送450、数据分析处理452、交易处理454和微服务容器编排管理456。
68.计算当今集中在云平台上,并且诸如例如公司、商业、企业、组织、机构、代理等的大多数实体在云基础设施上以微服务的形式提供其供应。这些提供是部署托管在容器内的
微服务的最佳实践。然而,由编排器(orchestrator)执行部署。当前的编排器规定单向供应,其缺乏微服务容器的自动缩放和优化的接近度。示例性实施例利用机器学习组件,该机器学习组件具有智能以基于用户可配置的上下文向编排器通知关于微服务容器的自动缩放和最佳邻近度对准。换言之,示例性实施例向编排器提供了用于计算节点之间的容器的自动缩放和优化迁移的智能,并且然后评估自动容器缩放和迁移干预。
69.当前的容器编排工具(诸如例如kubernetes、docker swarm等)由静态用户定义的策略驱动,并且不够智能,不足以做出高效的容器缩放决策或容器的最优迁移。示例性实施例考虑到这些当前容器编排工具在运行时间执行容器的放大或缩小而不预期未来的负载,并且不执行容器的自动迁移以减少网络延迟。为了解决这些问题,示例性实施例使用机器学习来预测容器缩放和最优容器迁移,并然后评估这些干预。示例性实施例的机器学习组件分析和评估微服务的节点内特征和节点间特征,以便以自动化方式确定高效的容器编排。
70.例如,示例性实施例经由主动预测、基于微服务相似性分析的容器的自动迁移、以及机器学习组件对容器缩放和迁移的干预的自动评估来执行计算节点上的容器的自动缩放的同步和优化编排。示例性实施例提取和分析与微服务相对应的节点内特征和节点间特征。示例性实施例利用所提取的节点内特征来主动地预测满足未来微服务负载所需的容器的数量(即,缩放容器的数量)。示例性实施例利用所提取的节点间特征来评估微服务之间的相似性,以识别要迁移哪些容器来减少网络延迟。
71.因此,示例性实施例提供了一个或多个技术解决方案,其通过自动执行容器编排以满足预测的未来微服务工作负载需求来克服技术问题。因此,这些一个或多个技术方案在基于容器的微服务的领域中提供了技术效果和实际应用。
72.现在参考图5,根据示例性实施例描绘了示出容器编排系统的示例的图。容器编排系统500可以在诸如图1中的网络数据处理系统100的数据处理系统的网络中实现。容器编排系统500是用于通过评估多个不同的微服务的节点内特征和节点间特征并且然后评估容器编排的结果来自动编排用于多个不同的微服务的容器的硬件和软件组件的系统。
73.在该示例中,容器编排系统500包括机器学习组件502、微服务特征提取器组件504、编排器组件506、关键性能指标仪表板组件508、计算节点510和计算节点512。然而,应当注意,容器编排系统500仅旨在作为示例,而不是作为对示例性实施例的限制。换句话说,容器编排系统500可以包括比所示的组件更多或更少的组件。例如,一个或多个组件可以被组合成一个组件,组件可以被分成两个或更多个组件,可以添加未示出的组件,等等。此外,计算节点510和计算节点512可以各自表示多个计算节点。
74.计算节点510和512是提供给主机容器516、518、520、522、524、526、528和530的实际基础结构。计算节点510和计算节点512运行微服务514。微服务514是基于容器的微服务。而且,微服务514可以表示由机器学习组件502管理的多个不同的微服务中的一个相应微服务。
75.微服务514是集中于执行单个商业任务的松散耦合的服务,并且可以在水平和垂直方向上缩放。以这样的方式包含微服务514,即微服务514可以提供关于工作负载管理的有效计算。微服务514也是容错和自修复的(即,执行故障管理)。此外,微服务514能够进行批处理和实时处理,并且是响应性的、弹性的和有弹力的。所有这些属性使微服务514成为
跨计算节点移植以高度可用的优秀候选。
76.在该示例中,计算节点510使用荚532的容器516和容器518以及使用荚534的容器520和容器522来运行微服务514的一部分。计算节点512使用荚536的容器524和容器526以及使用荚538的容器528和容器530来运行微服务514的另一部分。
77.机器学习组件502自动确定用于与微服务514相对应的动态容器编排的策略。机器学习组件502利用关于节点内特征(诸如图2中的节点内特征228)的数据,以针对微服务514的预测的未来工作负载主动预测计算节点510和计算节点512中的每一个内所需的容器的数量(即,容器的数量的放大或缩小)。机器学习组件502还利用关于节点间特征(诸如图2中的节点间特征230)的数据,以基于微服务514和多个不同的微服务中的一个或多个其它微服务之间的关系和依赖性在计算节点510和计算节点512之间迁移容器,以减少或最小化网络中的延迟。在该示例中,机器学习组件502包括预测模块549、迁移模块542和评估器模块544。
78.机器学习组件502利用微服务信息提取器组件504来标识、采集和提取节点内特征数据和节点间特征数据,其表示与微服务514相关的所有所需信息。节点内特征数据可以包括例如为微服务514运行的容器的数量、每定义的时间间隔用于确定微服务514的工作负载的应用编程接口请求的数量、每定义的时间间隔对应于微服务514的每个容器的利用率和工作负载容量等。节点间特征数据可以包括例如当微服务514调用另一微服务时微服务514与一个或多个其他微服务之间的依赖性、当同一应用使用这些特定微服务时微服务514与一个或多个其他微服务之间的关系、与微服务514的容器516-530相对应的计算节点510和512的地理位置、与计算节点510和512相对应的连接的网络带宽和延迟、计算节点510和512的成本和配置等。
79.机器学习组件502利用预测模块540来根据所预测的微服务514的未来工作负载来预测计算节点510和512内的容器的放大和缩小。预测模块540使用基于节点内特征数据的时间序列预测模型来预测所需容器的数量,以匹配微服务514的预测的未来工作负载。例如,预测模块540可以利用自回归积分移动平均(arima)作为预测模型。arima是对时间序列数据进行建模以进行预测(即,用于预测时间序列中的未来点)的方式。arima模型是其中因变量被稳定的特定类型的回归模型。自变量是因变量的所有滞后和/或误差的滞后,因此在原理上直接扩展arima模型以结合由首要关键性能指标和其他外生变量(exogenous variables)提供的信息。本质上,预测模块540将一个或多个回归量(regressor)添加到以下预测方程:
[0080][0081]
其中“yt”等于当前时间段的容器的数量,“yt-1”等于先前时间段的容器的数量,“xt”等于当前时间段的应用编程接口(api)请求的数量,并且“xt-1”等于先前时间段的api请求的数量。上面的预测方程表示在当前时间段“t”所需的容器的当前数量,其被预测为先前时间段“t-1”的容器数量以及在当前时间段“t”和先前时间段“t-1”的api请求的数量的函数。该预测方程是通用实施例,使得可以容易地包括新的输入参数,诸如例如先前时间段“t-2”、“t-3”等的容量、利用率和滞后值。可以使用典型的机器学习优化算法(例如,梯度下降)来训练预测模型,以提高预测精度并减少误差。
[0082]
预测模块540使用上述训练的预测模型来预测微服务514所需的容器的数量。预测模块540通过与容器的当前数量进行比较来识别缩放标签和缩放值。作为说明性示例,计算节点510中的容器的当前数量是4,预测的未来工作负载所需的容器的预测数量是7。因此,在该示例中,缩放标签是“放大(up)”,并且缩放值是3(即,通过添加3个新容器来对4个容器的当前数量放大到等于计算节点510中的总共7个容器,以满足微服务514的预测的未来工作负载)。类似地,缩放标签可以是“缩小(down)”,并且缩放值可以是1(即,通过移除1个容器来对4个容器的当前数量缩小到等于计算节点510中的3个总容器,以满足微服务514的预测的未来工作负载)。基于缩放标签和值,编排器组件506根据需要移除容器或添加新的容器。
[0083]
换句话说,如果预测的容器值高于当前容器值,则需要放大。相反,如果预测的容器值低于当前容器值,则按需缩小。应当注意,预测模块540针对多个不同的微服务中的每个相应微服务重复该预测过程,并且分配对应的容器缩放标签和值。之后,预测模块540将所有缩放标签和值发送到编排器组件506,其根据需要移除不必要的容器或生成新的容器。然而,应当注意,缩放标签可以是“否”并且缩放值为0,指示特定计算节点的容器的当前数量不需要改变。预测模块540还计算与缩放相关联的成本,该成本将由评估器模块544使用。
[0084]
在编排器组件506基于预测模块540的输出来执行容器的当前数量的缩放之后,机器学习组件502利用迁移模块542来优化在对应于微服务514的计算节点和对应于多个其他微服务的容器之间的容器的迁移。换句话说,迁移模块542标识哪些容器需要被迁移以及迁移到网络内的何处(即,迁移到哪些计算节点)。例如,迁移模块542标识具有大于定义的网络延迟阈值水平的网络延迟的微服务。迁移模块542还标识彼此最相似的那些微服务(例如,基于所提取的节点间特征数据彼此具有定义的相似性的那些微服务)。迁移模块542随后指示编排器组件506将与具有所定义的相似性的微服务相对应的容器迁移到同一计算节点以减少网络延迟。迁移模块542还计算与迁移相关联的成本和微服务安全性,其也可由评估器模块544使用。
[0085]
编排器组件506定义如何使用容器编排策略来部署、监测以及配置容器。在运行时间期间,取决于微服务工作负载,编排器组件506基于由机器学习组件502的预测模块540和迁移模块542生成以及从其接收的容器编排策略来放大或缩小计算节点上的容器并在计算节点之间迁移容器。
[0086]
评估器模块544评估由预测模块540和迁移模块542执行的容器缩放和迁移干预。评估器模块544可以利用例如因果推断调节方程来测量每个干预的影响,诸如容器缩放如何影响成本和网络延迟以及容器迁移如何影响成本、网络延迟和微服务安全。例如,e(关键性能指标/干预)是对执行某种类型的干预(例如,容器缩放和/或容器迁移)的条件的关键性能指标(例如,成本、延迟、安全性等)影响。
[0087]
评估器模块544使用以下两个方程评估预测模块540的关键性能指标影响:
[0088]
成本增量值=e(成本/缩放前)-e(成本/缩放后);以及
[0089]
延迟增量值=e(延迟/缩放前)-e(延迟/缩放后),其中,成本和延迟增量值根据预测模块540的预测来测量自动的容器缩放的影响。
[0090]
评估器模块544使用以下三个方程评估迁移模块542的关键性能指标影响:
[0091]
成本增量值=e(成本/迁移前)-e(成本/迁移后);
[0092]
延迟增量值=e(延迟/迁移前)-e(延迟/迁移后);以及
[0093]
安全性增量值=e(安全性/迁移前)-e(安全性/迁移后),其中,成本、延迟和安全性增量值根据迁移模块542的微服务相似性分析来测量自动的容器迁移的影响。
[0094]
关键性能指标仪表板组件508生成并显示关键性能指标仪表板,用户利用该关键性能指标仪表板来可视化由评估器模块544生成的输出(即,相应地对应于预测模块540和迁移模块542的不同增量值)。结果,用户可监测预测模块540和迁移模块542的容器编排干预对于一组所选关键性能指标的影响,该关键性能指标例如为容器缩放和迁移成本、网络延迟、微服务安全等。
[0095]
现在参考图6,根据示例性实施例描绘了示出预测表的示例的图。预测表600可以在预测模块中实现,诸如,例如图5中的预测模块540。预测表600包括x轴时间线602和y轴数量的容器604。
[0096]
时间线602是用户定义的时间窗口并且是可调整的。换言之,时间线602的单位可以是例如小时、天、周、月等,其取决于用户希望预测模块以什么时间窗口进行分析而由用户来定义,以使用时间序列预测模型来进行未来微服务工作负载的预测。容器的数量604指示微服务当前需要的容器数量,直到时间线602的单元“24”,并且此后指示微服务所需的容器的预测数量(即,预测606)。预测表600还示出了与预测606相对应的预测置信度下界608和预测置信度上界610。
[0097]
现在参考图7,根据示例性实施例描绘了示出容器迁移过程的示例的图。容器迁移过程700可以在迁移模块中实现,诸如,例如图5的迁移模块542。在该示例中,容器迁移过程700由计算节点a 702和计算节点b 704之间的迁移模块执行。然而,应当注意,迁移模块可以在任何数量的计算节点之间执行容器迁移过程700。
[0098]
同样在该示例中,计算节点a 702包括容器706和容器708,并且计算节点b 704包括容器710和容器712。然而,应当注意,计算节点a 702和计算节点b 704可以包括任何数量的容器。此外,在该示例中,由应用1 714使用容器706,而由应用716使用容器708和712。
[0099]
此外,在该示例中,在容器706和710之间存在延迟瓶颈718。结果,迁移模块确定容器710需要从计算节点b 704迁移到计算节点a 702,以减少由延迟瓶颈718引起的网络延迟。因此,迁移模块引导编排器组件(例如图5中的编排器组件506)来执行容器710到计算节点a 702的迁移720。此外,在容器708和应用2 716之间存在延迟瓶颈722。结果,迁移模块确定容器708需要从计算节点a 702迁移到计算节点b 704,以减少由延迟瓶颈722引起的网络延迟。因此,迁移模块指示编排器组件执行容器708到计算节点b 704的迁移724。
[0100]
现在参考图8,根据示例性实施例描绘了示出容器迁移标识表的示例的图。容器迁移标识表800可在迁移模块中实现,例如图5的迁移模块542。
[0101]
在该示例中,容器迁移标识表800包括微服务802、依赖性804、关系806、计算节点808、网络延迟810和共享数据属性812。微服务802识别每个相应的微服务。依赖性804标识某些微服务之间的依赖性。关系806基于应用来标识某些微服务之间的关系。换句话说,在应用级连接不同的微服务。计算节点808标识网络中与特定微服务相关联的特定计算节点。网络延迟810标识与每个特定微服务相关联的网络延迟的量。共享数据属性812标识由特定微服务访问的信息。经由包含静态和可变数据两者的共享数据库来适应不同的微服务之间的数据共享,并且不同的微服务从共享数据库访问所需数据。
[0102]
在该示例中,容器迁移标识表800示出三个微服务:ms-a、ms-b和ms-x。容器迁移标识表800还示出了它们各自的依赖性、应用、节点和网络延迟。迁移模块使用依赖性804、关系806中的应用信息、以及在相应微服务中访问和访问出相应微服务的共享数据属性812信息来标识两个微服务之间的相似性。
[0103]
迁移模块可以利用相似性计算814(诸如,例如余弦相似性)来确定微服务相似性。在该示例中,迁移模块计算微服务a(ms-a)和微服务b(ms-b)的相似性为相似性(ms-a,ms-b)=0.95。换句话说,ms-a和ms-b具有95%的相似性,其在容器迁移标识表800上被指示为“相似”。此外,迁移模块计算ms-b与微服务x(ms-x)的相似性计算为相似性(ms-b,ms-x)=0.30。换句话说,ms-b和ms-x仅具有30%的相似性。容器迁移标识表800还指示ms-a应从节点a迁移到节点c以减少网络延迟。
[0104]
现在参考图9a-9b,根据示例性实施例示出了图示用于预测基于容器的微服务的容器缩放和迁移的过程的流程图。图9a-9b所示的过程可以在诸如图1中的服务器104或图2中的数据处理系统200的计算机中实现。例如,图9a-9b所示的过程可以在图2中的机器学习组件218中实现。
[0105]
该过程开始于计算机训练预测模型以形成训练的预测模型,该预测模型用于基于在定义的时间段期间满足每个相应微服务的工作负载所需的容器的历史数量来预测与在网络中的多个计算节点上运行的多个不同的微服务中的每个相应微服务对应的多个容器的缩放(步骤902)。计算机从多个不同的微服务中的每个相应微服务提取第一组特征(步骤904)。第一组特征选自包括以下各项的组:对应于在当前时间段期间在多个计算节点上运行的多个不同的微服务中的每个相应微服务的第一数量的容器;与在当前时间段期间在多个计算节点上运行的多个不同的微服务中的每个相应微服务对应的第一数量的容器的利用率和工作负载容量中的至少一个;对应于在先前时间段期间在多个计算节点上先前运行的多个不同的微服务中的每个相应微服务的第二数量的容器;与在先前时间段期间在多个计算节点上运行的多个不同的微服务中的每个相应微服务对应的第二数量的容器的利用率和工作负载容量中的至少一个;在当前时间段期间针对每个相应微服务的第一数量的应用编程接口请求;以及在当前时间段期间针对每个相应微服务的第二数量的应用编程接口请求。
[0106]
计算机使用训练的预测模型和从每个相应微服务提取的第一组特征来预测多个不同的微服务中的每个相应微服务在未来时间点所需的容器的数量(步骤906)。计算机根据在未来时间点每个相应微服务所需的容器的数量,基于与每个相应微服务对应的容器的当前数量的预测的变化,向多个不同的微服务中的每个相应微服务分配缩放标签和缩放值(例如,按一、二、三等的值放大或缩小)(步骤908)。计算机基于分配给每个相应微服务的缩放标签和缩放值,自动调整与多个不同的微服务中的每个相应微服务相对应的容器的当前数量(步骤910)。调整容器的当前数量包括以下中的一者:不对容器的当前数量进行调整,针对具有所分配的指示在未来时间点需要增加的缩放标签和缩放值的特定微服务生成一个或多个附加容器;以及针对具有所分配的指示在未来时间点需要减少的缩放标签和缩放值的特定微服务移除一个或多个当前容器。
[0107]
计算机使用因果推理调节来确定调整与多个不同的微服务中的每个相应微服务对应的容器的当前数量对关于多个计算节点中具有调整的数量的容器的这些计算节点(例
如,具有放大的数量的容器的计算节点和具有缩小的数量的容器的计算节点)的容器缩放成本和网络延迟的第一组关键性能指标所具有的第一影响(步骤912)。计算机从多个不同的微服务中的每个相应微服务提取第二组特征(步骤914)。第二组特征选自包括以下各项的组:关于特定微服务之间的依赖性的信息(例如,哪些特定微服务对多个不同的微服务中的其他微服务进行应用编程接口调用);关于特定微服务之间的关系的信息(例如,哪些应用使用相同微服务);关于与对应于多个不同的微服务中的每个相应微服务的多个容器中的每个容器相对应的地理位置的信息(例如,其中运行对应于多个不同的微服务中的相同微服务的多个容器的每个特定计算节点在地理上被定位);以及对应于多个计算节点中的每个相应节点的网络带宽和延迟参数。计算机基于从每个相应微服务提取的第二组特征来确定多个不同的微服务中的特定微服务之间的微服务相似性程度(步骤916)。
[0108]
计算机识别在多个计算节点中的第一组计算节点上运行的具有高于网络延迟阈值水平的网络延迟值的第一组容器(步骤918)。计算机基于在某些微服务之间确定的微服务相似性程度,确定多个计算节点中的运行第二组容器的第二组计算节点,该第二组容器与在第一组计算节点上运行的第一组容器具有高于容器相似性阈值水平的容器相似性程度,该第一组容器具有高于在第一组计算节点上运行的网络延迟阈值水平的网络延迟值(步骤920)。计算机识别第一组容器和第二组容器中的特定容器,这些特定容器共享相同的容器相似性程度(步骤922)。
[0109]
计算机将共享相同的容器相似性程度的这些特定容器迁移到相同的计算节点,以减少网络的延迟(步骤924)。计算机使用因果推理调节来确定在两个计算节点之间迁移这些特定容器对关于两个计算节点的容器迁移成本、网络延迟和微服务安全性的第二组关键性能指标所具有的第二影响(步骤926)。计算机在关键性能指标仪表板内显示调整与多个不同的微服务中的每个相应微服务对应的容器的当前数量对第一组关键性能指标所具有的第一影响和在两个计算节点之间迁移这些特定容器对第二组关键性能指标所具有的第二影响(步骤928)。此后,该过程终止。
[0110]
因此,本发明的示例性实施例提供了一种用于通过评估微服务的节点内特征和节点间特征并且然后评估容器编排的结果来自动编排容器的计算机实现的方法、计算机系统和计算机程序产品。出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
技术特征:
1.一种计算机实现的方法,用于自动执行基于容器的微服务的容器缩放和迁移,所述计算机实现的方法包括:由计算机从多个不同的微服务中的每个相应微服务提取第一组特征;由所述计算机使用训练的预测模型和从每个相应微服务提取的所述第一组特征来预测在未来时间点所述多个不同的微服务中的每个相应微服务所需的容器的数量;由所述计算机根据在未来时间点每个相应微服务所需的容器的数量基于与每个相应微服务对应的容器的当前数量的预测的变化,向所述多个不同的微服务中的每个相应微服务分配缩放标签和缩放值;以及由所述计算机基于向每个相应微服务分配的所述缩放标签和所述缩放值,自动调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量。2.根据权利要求1所述的计算机实现的方法,还包括:由所述计算机从所述多个不同的微服务中的每个相应微服务提取第二组特征;以及由所述计算机基于从每个相应微服务提取的所述第二组特征来确定所述多个不同的微服务中的特定微服务之间的微服务相似性程度。3.根据权利要求2所述的计算机实现的方法,还包括:由所述计算机识别在多个计算节点中的第一组计算节点上运行的具有高于网络延迟阈值水平的网络延迟值的第一组容器;以及由所述计算机基于所确定的在所述特定微服务之间的所述微服务相似性程度来确定所述多个计算节点中运行第二组容器的第二组计算节点,所述第二组容器与在所述第一组计算节点上运行的具有高于所述网络延迟阈值水平的所述网络延迟值的所述第一组容器具有高于容器相似性阈值水平的容器相似性程度。4.根据权利要求3所述的计算机实现的方法,还包括:由所述计算机识别所述第一组容器和所述第二组容器中的共享相同的容器相似性程度的特定容器;以及由所述计算机将共享相同的容器相似性程度的这些特定容器迁移到相同的计算节点以减少网络的延迟。5.根据权利要求4所述的计算机实现的方法,还包括:由所述计算机使用因果推断调节来确定调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量对关于所述多个计算节点中具有调整的数量的容器的这些计算节点的第一组关键性能指标所产生的第一影响;由所述计算机使用所述因果推断调节来确定在两个计算节点之间迁移这些特定容器对关于所述两个计算节点的第二组关键性能指标所产生的第二影响;以及由所述计算机在关键性能指标仪表板内显示调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量对所述第一组关键性能指标所产生的第一影响和在两个计算节点之间迁移这些特定容器对所述第二组关键性能指标所产生的第二影响。6.根据权利要求1所述的计算机实现的方法,还包括:由所述计算机训练预测模型,所述预测模型用于基于在定义的时间段期间满足每个相应微服务的工作负载所需的容器的历史数量来预测与在网络中的多个计算节点上运行的多个不同的微服务中的每个相应微服务对应的多个容器的缩放,以形成所述训练的预测模
型。7.根据权利要求6所述的计算机实现的方法,其中,所述预测模型是自回归积分移动平均模型。8.根据权利要求1所述的计算机实现的方法,其中,所述第一组特征是从包括以下各项的组中选择的:与在当前时间段期间在多个计算节点上运行的所述多个不同的微服务中的每个相应微服务对应的第一数量的容器,与在所述当前时间段期间在所述多个计算节点上运行的所述多个不同的微服务中的每个相应微服务对应的所述第一数量的容器的利用率和工作负载容量中的至少一个,与在先前时间段期间在所述多个计算节点上先前运行的所述多个不同的微服务中的每个相应微服务对应的第二数量的容器;与在所述先前时间段期间在所述多个计算节点上运行的所述多个不同的微服务的每个相应微服务对应的所述第二数量的容器的利用率和工作负载容量中的至少一个,在所述当前时间段期间用于每个相应微服务的第一数量的应用编程接口请求,以及在所述当前时间段期间用于每个相应微服务的第二数量的应用编程接口请求。9.根据权利要求2所述的计算机实现的方法,其中,所述第二组特征是从包括以下各项的组中选择的:关于特定微服务之间的依赖性的信息、关于特定微服务之间的关系的信息、关于与对应于所述多个不同的微服务中的每个相应微服务的多个容器中的每个容器对应的地理位置的信息、以及与多个计算节点中的每个相应节点对应的网络带宽和延迟参数。10.根据权利要求1所述的计算机实现的方法,其中,调整容器的当前数量包括以下中的一个:针对具有指示在所述未来时间点需要增加的被分配的缩放标签和缩放值的特定微服务生成一个或多个附加容器,以及针对具有指示在所述未来时间点需要减少的被分配的缩放标签和缩放值的特定微服务移除一个或多个当前容器。11.一种计算机系统,用于自动执行基于容器的微服务的容器缩放和迁移,所述计算机系统包括:总线系统;连接到所述总线系统的存储设备,其中,所述存储设备存储程序指令;以及连接到所述总线系统的处理器,其中,所述处理器执行所述程序指令以:从多个不同的微服务中的每个相应微服务提取第一组特征;使用训练的预测模型和从每个相应微服务提取的所述第一组特征来预测在未来时间点所述多个不同的微服务中的每个相应微服务所需的容器的数量;根据在未来时间点每个相应微服务所需的容器的数量基于与每个相应微服务对应的容器的当前数量的预测的变化,向所述多个不同的微服务中的每个相应微服务分配缩放标签和缩放值;以及基于向每个相应微服务分配的所述缩放标签和所述缩放值,自动调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量。12.根据权利要求11所述的计算机系统,其中,所述处理器进一步执行所述程序指令以:从所述多个不同的微服务中的每个相应微服务提取第二组特征;以及基于从每个相应微服务提取的所述第二组特征来确定所述多个不同的微服务中的特定微服务之间的微服务相似性程度。
13.根据权利要求12所述的计算机系统,其中,所述处理器进一步执行所述程序指令以:识别在多个计算节点中的第一组计算节点上运行的具有高于网络延迟阈值水平的网络延迟值的第一组容器;以及基于所确定的在所述特定微服务之间的所述微服务相似性程度来确定所述多个计算节点中运行第二组容器的第二组计算节点,所述第二组容器与在所述第一组计算节点上运行的具有高于所述网络延迟阈值水平的所述网络延迟值的所述第一组容器具有高于容器相似性阈值水平的容器相似性程度。14.根据权利要求13所述的计算机系统,其中,所述处理器进一步执行所述程序指令以:识别所述第一组容器和所述第二组容器中的共享相同的容器相似性程度的特定容器;以及将共享相同的容器相似性程度的这些特定容器迁移到相同的计算节点以减少网络的延迟。15.根据权利要求14所述的计算机系统,其中,所述处理器进一步执行所述程序指令以:使用因果推断调节来确定调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量对关于所述多个计算节点中具有调整的数量的容器的这些计算节点的第一组关键性能指标所产生的第一影响;使用所述因果推断调节来确定在两个计算节点之间迁移这些特定容器对关于所述两个计算节点的第二组关键性能指标所产生的第二影响;以及在关键性能指标仪表板内显示调整与所述多个不同的微服务的每个相应微服务对应的容器的当前数量对所述第一组关键性能指标所产生的第一影响和在两个计算节点之间迁移这些特定容器对所述第二组关键性能指标所产生的第二影响。16.一种计算机程序产品,用于自动执行针对基于容器的微服务的容器缩放和迁移,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由计算机执行以使所述计算机执行以下方法:由所述计算机从多个不同的微服务中的每个相应微服务提取第一组特征;由所述计算机使用训练的预测模型和从每个相应微服务提取的所述第一组特征来预测在未来时间点所述多个不同的微服务中的每个相应微服务所需的容器的数量;由所述计算机根据在未来时间点每个相应微服务所需的容器的数量基于与每个相应微服务对应的容器的当前数量的预测的变化,向所述多个不同的微服务中的每个相应微服务分配缩放标签和缩放值;以及由所述计算机基于向每个相应微服务分配的所述缩放标签和所述缩放值,自动调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量。17.根据权利要求16所述的计算机程序产品,还包括:由所述计算机从所述多个不同的微服务中的每个相应微服务提取第二组特征;以及由所述计算机基于从每个相应微服务提取的所述第二组特征来确定所述多个不同的微服务中的特定微服务之间的微服务相似性程度。
18.根据权利要求17所述的计算机程序产品,还包括:由所述计算机识别在多个计算节点中的第一组计算节点上运行的具有高于网络延迟阈值水平的网络延迟值的第一组容器;以及由所述计算机基于所确定的在所述特定微服务之间的所述微服务相似性程度来确定所述多个计算节点中运行第二组容器的第二组计算节点,所述第二组容器与在所述第一组计算节点上运行的具有高于所述网络延迟阈值水平的所述网络延迟值的所述第一组容器具有高于容器相似性阈值水平的容器相似性程度。19.根据权利要求18所述的计算机程序产品,还包括:由所述计算机识别所述第一组容器和所述第二组容器中的共享相同的容器相似性程度的特定容器;以及由所述计算机将共享相同的容器相似性程度的这些特定容器迁移到相同的计算节点以减少网络的延迟。20.根据权利要求19所述的计算机程序产品,还包括:由所述计算机使用因果推断调节来确定调整与所述多个不同的微服务中的每个相应微服务对应的容器的当前数量对关于所述多个计算节点中具有调整的数量的容器的这些计算节点的第一组关键性能指标所产生的第一影响;由所述计算机使用所述因果推断调节来确定在两个计算节点之间迁移这些特定容器对关于所述两个计算节点的第二组关键性能指标所产生的第二影响;以及由所述计算机在关键性能指标仪表板内显示调整与所述多个不同的微服务的每个相应微服务对应的容器的当前数量对所述第一组关键性能指标所产生的第一影响和在两个计算节点之间迁移这些特定容器对所述第二组关键性能指标所产生的第二影响。
技术总结
提供了执行用于基于容器的微服务的容器缩放和迁移。从多个不同的微服务中的每个相应微服务提取第一组特征。使用训练的预测模型和从每个相应微服务提取的第一组特征来预测多个不同的微服务中的每个相应微服务在未来时间点所需的容器的数量。根据在未来时间点每个相应微服务所需的容器的数量,基于与每个相应微服务对应的容器的当前数量的预测的变化,向多个不同的微服务中的每个相应微服务分配缩放标签和缩放值。基于分配给每个相应微服务的缩放标签和缩放值来调整与多个不同的微服务中的每个相应微服务相对应的容器的当前数量。中的每个相应微服务相对应的容器的当前数量。中的每个相应微服务相对应的容器的当前数量。
技术研发人员:S
受保护的技术使用者:国际商业机器公司
技术研发日:2021.10.21
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:电动卡车的制作方法 下一篇:使用生理数据检测非预期用户界面行为的制作方法