一种部署容器实例的方法及装置与流程

文档序号:19418029发布日期:2019-12-14 01:07阅读:192来源:国知局
一种部署容器实例的方法及装置与流程

本申请涉及计算机领域,尤其涉及一种部署容器实例的方法及装置。



背景技术:

随着微服务与云化技术的快速发展,容器虚拟化技术(container)被广泛应用于云计算领域。与传统的硬件虚拟化技术(如:虚拟机)相比,容器虚拟化技术是基于操作系统虚拟化部署容器实例,实现了硬件资源的隔离。例如,基于控制组(controlgroups,cgroup)实现了处理器、内存、存储输入输出(inputandoutput,io)、网络io等隔离。然而,容器实例的存储io的隔离并不完善,存在较为严重的异步io邻位干扰故障。所谓异步io是指处理器先将数据缓存到操作系统的页缓存(pagecache),由内核线程周期性地将页缓存的数据刷入持久存储内。当多个容器实例为异步io密集型应用时,页缓存可能会被占满,其它容器实例无法进行异步io,导致异步io邻位干扰故障发生。而且,当容器实例部署在虚拟机上时,同一个物理主机上的虚拟机是共享物理主机的页缓存,这样容器实例的异步io不仅受到同一虚拟机上的容器实例异步io邻位干扰故障影响,还受到同一物理主机上的其他虚拟机异步io邻位干扰,这样产生了异步io叠加效应,使得容器实例的异步io邻位干扰故障加剧。因此,如何降低异步io邻位干扰故障的发生概率是一个亟待解决的问题。



技术实现要素:

本申请提供一种部署容器实例的方法及装置,解决了如何降低异步io邻位干扰故障的发生概率的问题。

为达到上述目的,本申请采用如下技术方案:

第一方面,提供了一种部署容器实例的方法,该方法可应用于控制节点,或者该方法可应用于可以支持控制节点实现该方法的通信装置,例如该通信装置包括芯片系统。控制节点可以是一台计算机设备或服务器。该方法包括:在控制节点获取到s个业务节点中每个业务节点上已部署的容器实例的异步io读写速率和s个业务节点的页缓存剩余容量之后,确定s个业务节点的io邻位干扰度,以及根据s个业务节点的io邻位干扰度确定系统io邻位干扰度平均值。对于每个业务节点可以根据如下方法确定:控制节点根据第i个业务节点的页缓存剩余容量、页缓存容量影响因子、第i个业务节点上已部署的容器实例的异步io读写速率和υ个部署参数,确定第i个业务节点的io邻位干扰度,部署参数用于指示第k个容器实例是否部署在第i个业务节点上,其中,i为整数,i∈[1,s],k为整数,k∈[1,υ],υ表示容器实例的个数。然后,控制节点根据s个业务节点的io邻位干扰度、系统io邻位干扰度平均值和s构建系统io邻位干扰度优化模型。当系统io邻位干扰度优化模型的取值为极值时,控制节点确定容器实例部署策略,容器实例部署策略用于指示部署υ个容器实例中每个容器实例的业务节点;控制节点向至少一个业务节点发送容器实例部署指示,容器实例部署指示包括需要部署的容器实例的标识。

本申请实施例提供的部署容器实例的方法,通过在求解时长内,动态预测每个业务节点的页缓存剩余容量,以及求解系统异步io邻位干扰度优化模型,调度容器实例,实现全局的异步io邻位干扰度最小,能够有效地降低某个业务节点的异步io邻位干扰度过高导致其他容器实例挂死现象,同时降低系统异步io邻位干扰故障扩散的风险。

在一种可能的设计中,控制节点可以根据第i个业务节点的页缓存剩余容量、页缓存容量影响因子、第i个业务节点上已部署的容器实例的异步io读写速率和υ个部署参数,采用如下公式,确定第i个业务节点的io邻位干扰度:

其中,ri表示第i个业务节点的io邻位干扰度,ci表示第i个业务节点的页缓存剩余容量,表示页缓存容量影响因子,aki表示第k个容器实例是否部署在第i个业务节点上,dki表示在第i个业务节点上部署的第k个容器实例的异步io读写速率,表示向下取整。

需要说明的是,当aki=1时,表示第k个容器实例部署在第i个业务节点上,当aki=0时,表示第k个容器实例不部署在第i个业务节点上。

在另一种可能的设计中,控制节点可以根据s个业务节点的io邻位干扰度,采用如下公式确定系统io邻位干扰度平均值:

其中,表示系统io邻位干扰度平均值。

在另一种可能的设计中,系统io邻位干扰度优化模型为:

其中,约束条件包括:

在另一种可能的设计中,当系统io邻位干扰度优化模型的取值为极值时,控制节点确定容器实例部署策略,包括:控制节点根据蚁群算法确定系统io邻位干扰度优化模型的极值,获取υ个容器实例的部署参数的取值。

第二方面,提供了一种预测容量的方法,该方法可应用于业务节点,或者该方法可应用于可以支持业务节点实现该方法的通信装置,例如该通信装置包括芯片系统。该业务节点可以是一台计算机设备或服务器。对于s个业务节点中每个业务节点均可以根据本实施例提供的方法预测容量。该方法包括:第i个业务节点根据求解时长和第i个业务节点的异步io读写速率确定第i个业务节点的页缓存剩余容量,第i个业务节点的异步io读写速率为已部署在第i个业务节点上的所有容器实例的异步io读写速率之和,i为整数,1≤i≤s,s表示控制节点控制的业务节点的个数;然后,第i个业务节点向控制节点发送在第i个业务节点上已部署的每个容器实例的异步io读写速率和第i个业务节点的页缓存剩余容量。

本申请实施例提供的预测容量的方法,对于每个业务节点在预先定义的求解时长内,动态预测业务节点的页缓存剩余容量,提升系统异步io邻位干扰度优化模型的求解精度,同时防止容器实例持续消耗页缓存造成的异步io邻位干扰故障扩散。

在一种可能的设计中,求解时长是从控制节点处获取的。

在另一种可能的设计中,第i个业务节点的异步io读写速率采用如下公式确定:

其中,di表示第i个业务节点的异步io读写速率,aki′表示第k个容器实例已部署在第i个业务节点上,dki表示第i个业务节点上已部署的第k个容器实例的异步io读写速率,k为整数,1≤k≤υ,υ表示容器实例的个数。

在另一种可能的设计中,第i个业务节点根据求解时长和第i个业务节点的异步io读写速率确定第i个业务节点的页缓存剩余容量,包括:第i个业务节点根据第一回归系数、第二回归系数、求解时长和第i个业务节点的异步io读写速率建立回归模型;第i个业务节点对第一回归系数的初始值和第二回归系数的初始值进行显著性检验,确定第一回归系数的取值和第二回归系数的取值,第一回归系数的初始值和第二回归系数的初始值是根据历史时刻的第i个业务节点的页缓存剩余容量确定的;第i个业务节点根据第一回归系数的取值、第二回归系数的取值、求解时长和第i个业务节点的异步io读写速率确定第i个业务节点的页缓存剩余容量。

在一种可能的设计中,回归模型为:m×di×t+n=ci,其中,m表示第一回归系数,di表示第i个业务节点的异步io读写速率,t表示求解时长,n表示第二回归系数,ci表示第i个业务节点的页缓存剩余容量。

在另一种可能的设计中,在第i个业务节点向控制节点发送在第i个业务节点上已部署的每个容器实例的异步io读写速率和第i个业务节点的页缓存剩余容量之后,方法还包括:第i个业务节点接收控制节点发送的容器实例部署指示,容器实例部署指示包括部署在第i个业务节点上的容器实例的标识;第i个业务节点根据容器实例部署指示部署容器实例的标识对应的容器实例。

第三方面,本申请还提供了一种通信装置,用于实现上述第一方面描述的方法。通信装置为控制节点或支持控制节点实现该第一方面描述的方法的通信装置,例如该通信装置包括芯片系统。控制节点可以是一台计算机设备或服务器。例如,该部署容器实例的装置包括:接收单元、处理单元和发送单元。所述接收单元,用于获取s个业务节点中每个业务节点上已部署的容器实例的异步输入输出io读写速率和s个业务节点的页缓存剩余容量。所述处理单元,用于根据第i个业务节点的页缓存剩余容量、页缓存容量影响因子、第i个业务节点上已部署的容器实例的异步io读写速率和υ个部署参数,确定第i个业务节点的io邻位干扰度,部署参数用于指示第k个容器实例是否部署在第i个业务节点上,其中,i为整数,i∈[1,s],k为整数,k∈[1,υ],υ表示容器实例的个数。所述处理单元,还用于根据s个业务节点的io邻位干扰度确定系统io邻位干扰度平均值。所述处理单元,还用于根据s个业务节点的io邻位干扰度、系统io邻位干扰度平均值和s构建系统io邻位干扰度优化模型。当系统io邻位干扰度优化模型的取值为极值时,所述处理单元,还用于确定容器实例部署策略,容器实例部署策略用于指示部署υ个容器实例中每个容器实例的业务节点。所述发送单元,用于向至少一个业务节点发送容器实例部署指示,容器实例部署指示包括需要部署的容器实例的标识。

对于部署容器实例的方法的具体实现方式同第一方面中相应的描述,这里不再赘述。

第四方面,本申请还提供了一种通信装置,用于实现上述第二方面描述的方法。通信装置为业务节点或支持业务节点实现该第二方面描述的方法的通信装置,例如该通信装置包括芯片系统。该业务节点可以是一台计算机设备或服务器。对于s个业务节点中每个业务节点均可以根据本实施例提供的方法预测容量。例如,预测容量的装置包括:处理单元和发送单元。所述处理单元,用于根据求解时长和第i个业务节点的异步输入输出io读写速率确定所述第i个业务节点的页缓存剩余容量,所述第i个业务节点的异步io读写速率为已部署在所述第i个业务节点上的所有容器实例的异步io读写速率之和,i为整数,1≤i≤s,s表示控制节点控制的业务节点的个数。所述发送单元,用于向所述控制节点发送在所述第i个业务节点上已部署的每个容器实例的异步io读写速率和所述第i个业务节点的页缓存剩余容量。

对于预测容量的方法的具体实现方式同第二方面中相应的描述,这里不再赘述。

需要说明的是,上述第三方面和第四方面的功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。例如,收发器,用于完成接收单元和发送单元的功能,处理器,用于完成处理单元的功能,存储器,用于处理器处理本申请的方法的程序指令。处理器、收发器和存储器通过总线连接并完成相互间的通信。具体的,可以参考第一方面所述的方法中的控制节点的行为的功能和第二方面所述的方法中的业务节点的行为的功能。

第五方面,本申请还提供了一种计算机设备,用于实现上述第一方面或第二方面描述的方法。所述计算机设备为控制节点或支持控制节点实现该第一方面描述的方法的通信装置,例如该通信装置包括芯片系统,或者,所述通信装置为业务节点或支持业务节点实现该第一方面描述的方法的通信装置,例如该通信装置包括芯片系统。例如所述通信装置包括处理器,用于实现上述第一方面或第二方面描述的方法的功能。所述通信装置还可以包括存储器,用于存储程序指令和数据。所述存储器与所述处理器耦合,所述处理器可以调用并执行所述存储器中存储的程序指令,用于实现上述第一方面或第二方面描述的方法中的功能。所述通信装置还可以包括通信接口,所述通信接口用于该通信装置与其它设备进行通信。示例性地,若所述通信装置为控制节点,该其它设备为业务节点。若所述通信装置为业务节点,该其它设备为控制节点。

部署容器实例的方法同第一方面中相应的描述,预测容量的方法同第二方面中相应的描述,这里不再赘述。

第六方面,本申请还提供了一种计算机可读存储介质,包括:计算机软件指令;当计算机软件指令在通信装置中运行时,使得通信装置执行上述第一方面或第二方面所述的方法。

第七方面,本申请还提供了一种包含指令的计算机程序产品,当计算机程序产品在通信装置中运行时,使得通信装置执行上述第一方面或第二方面所述的方法。

第八方面,本申请提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中网络设备或终端设备的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。

第九方面,本申请还提供了一种通信系统,所述通信系统包括第三方面描述的控制节点或支持控制节点实现该第一方面描述的方法的通信装置,以及第四方面描述的业务节点或支持业务节点实现该第二方面描述的方法的通信装置;

或所述通信系统包括第五方面描述的终端设备或支持终端设备实现该第一方面描述的方法的通信装置,以及第五方面描述的网络设备或支持网络设备实现该第二方面描述的方法的通信装置。

另外,上述任意方面的设计方式所带来的技术效果可参见第一方面和第二方面中不同设计方式所带来的技术效果,此处不再赘述。

本申请中,控制节点、业务节点和通信装置的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

附图说明

图1为本申请实施例提供的一种分布式系统的简化示例图;

图2为本申请提供的系统逻辑示例图;

图3为本申请实施例提供的一种部署容器实例的方法的流程图;

图4为本申请实施例提供的一种系统异步io邻位干扰度优化模型求解流程图;

图5为本申请提供的一种通信装置组成示意图;

图6为本申请提供的一种计算机设备的组成示意图。

具体实施方式

本申请说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

为了更好理解本申请提供的技术方案,下面对本申请涉及的术语和技术概念进行简单说明。

容器虚拟化技术是一种服务器资源共享方式,基于操作系统部署虚拟化的容器实例,实现了硬件资源的隔离,能够提升资源使用率和业务部署效率。在切换运行环境后,能够保证应用软件可靠地运行。例如,从数据中心的某台物理机到私有云或者公有云上的某台虚拟机。一台运行着三个容器实例的服务器,只需要一个操作系统,而每个容器实例都可以与其他容器实例共享同一个操作系统内核。操作系统中被容器实例共享的部分是只读的,如果需要写入,每个容器实例都可以挂载独立的服务。这也就是说,容器实例比虚拟机要轻量级很多,它消耗的资源相较于虚拟机也少得多。

在一些应用场景中,容器实例可以部署在物理主机上,也可以部署在虚拟机上。那么,当一个物理主机上部署了多个异步io密集型应用的容器实例时,可能出现一部分容器实例的异步io占满页缓存,导致其他容器实例无法进行异步io,产生异步io邻位干扰故障。在另一些实施例中,当容器实例部署在虚拟机上时,同一个物理主机上的虚拟机是共享物理主机的页缓存,这样一个容器实例的异步io不仅受到同一虚拟机上的容器实例异步io邻位干扰故障影响,还受到同一物理主机上的其他虚拟机的异步io邻位干扰,这样产生了异步io叠加效应,使得容器实例的异步io邻位干扰故障加剧。因此,如何降低异步io邻位干扰故障的发生概率是一个亟待解决的问题。

下面结合附图对本申请实施例的实施方式进行详细描述。

图1为本申请实施例提供的一种分布式系统的简化示例图。如图1所示,该系统架构可以包括:s个业务节点101和一个控制节点102。其中,s为整数,s≥1。s个业务节点101可以称为一个集群。业务节点101和控制节点102可以是集成于同一个设备上的不同的逻辑节点,也可以是分布于不同位置的设备,可以通过网络连接,也可以直接连接,本申请实施例对此不作限定,只要是实现业务节点和控制节点的功能都可以。在一些实施例中,s个业务节点101中每个业务节点101可以是一个单独的服务器,服务器上部署有与业务相关的容器实例。控制节点102也可以是一个单独的服务器,控制业务节点。

s个业务节点上部署有多个异步io密集型应用的容器实例。图2为本申请提供的系统逻辑示例图。对于s个业务节点中每个业务节点101均可以包括数据监控与上报模块1011、容量预测模块1012和容器实例部署模块1013。

数据监控与上报模块1011用于监控已部署的容器实例的异步io读写速率,并将已部署的容器实例的异步io读写速率和该业务节点的页缓存剩余容量上报给控制节点。同时,还可以接收控制节点发送的求解时长。

容量预测模块1012用于预测该业务节点的求解时长内的页缓存剩余容量。

容器实例部署模块1013用于管理该业务节点上部署的容器实例的生命周期(如:重建、暂停、删除等)。

控制节点102可以包括模型管理模块1021、模型求解模块1022和容器实例部署指示模块1023。

模型管理模块1021用于监控业务节点的页缓存剩余容量和容器实例的异步io读写速率;配置系统异步io邻位干扰度优化模型的参数(如:预先定义的求解时长和页缓存容量影响因子);确定业务节点的异步io邻位干扰度和系统异步io邻位干扰度平均值;根据s个业务节点的异步io邻位干扰度、系统异步io邻位干扰度平均值和s构建系统异步io邻位干扰度优化模型;

模型求解模块1022用于求解系统异步io邻位干扰度优化模型,得到容器实例部署策略,容器实例部署策略用于指示部署容器实例的业务节点。

容器实例部署指示模块1023用于至少一个业务节点发送容器实例部署指示,指示包括需要部署的容器实例的标识。

从上述对节点的阐述可知,本申请实施例主要通过以下三个方面实现防止容器实例的异步io邻位干扰故障隔离扩散:

1)对于每个业务节点在预先定义的求解时长内,动态预测业务节点的页缓存剩余容量,提升了系统异步io邻位干扰度优化模型的求解精度,同时防止容器实例持续消耗页缓存造成的异步io邻位干扰故障扩散。

2)控制节点根据s个业务节点的页缓存剩余容量和每个业务节点上已部署的容器实例的异步io读写速率构建系统异步io邻位干扰度优化模型,求取系统异步io邻位干扰度优化模型的最优解,得到所有容器实例的最优部署方案,实现页缓存的均衡分配,防止异步io邻位干扰故障扩散。

3)求解时长可以是系统维护人员定义的,是可控的求解时间。控制节点在求解时长内按需求解容器实例部署策略,从而,能够降低异步io邻位干扰影响。

从而,通过在求解时长内,动态预测每个业务节点的页缓存剩余容量,以及求解系统异步io邻位干扰度优化模型,调度容器实例,实现全局的异步io邻位干扰度最小,能够有效地降低某个业务节点的异步io邻位干扰度过高导致其他容器实例挂死现象发生,降低了异步io邻位干扰故障扩散的风险。

本申请实施例提供的部署容器实例的方法可以适用于防止发生容器实例的异步io邻位干扰故障的应用场景。例如,公有云场景或私有云场景。涵盖容器实例部署在物理主机上和容器实例部署在虚拟机上。在物理主机场景下可以解决多个容器实例竞争同一物理主机的页缓存,而导致的异步io邻位干扰故障扩散问题。在虚拟机场景下,不仅可以解决同一虚拟机上多个容器实例的异步io邻位干扰故障扩散问题,还可以降低同一物理主机上多个虚拟机的异步io邻位干扰故障对容器实例的异步io干扰故障扩散风险。

接下来,结合附图对本申请实施例提供的部署容器实例的方法和预测容量的方法进行详细说明。这里以第i个业务节点为例对预测容量的方法进行阐述。i为整数,i∈[1,s],s表示控制节点控制的业务节点的个数。第i个业务节点可以是s个业务节点中的任意一个节点。对于s个业务节点中的每个业务节点均可以根据以下阐述的预测容量的方法对该业务节点的页缓存剩余容量进行预测。

图3为本申请实施例提供的一种部署容器实例的方法的流程图,如图3所示,该方法可以包括:

s301、第i个业务节点根据求解时长和第i个业务节点的异步io读写速率确定第i个业务节点的页缓存剩余容量。

在一些实施例中,第i个业务节点的异步io读写速率为已部署在第i个业务节点上的所有容器实例的异步io读写速率之和。

示例的,可以采用如下公式(1)确定第i个业务节点的异步io读写速率:

其中,di表示第i个业务节点的异步io读写速率,aki′表示第k个容器实例已部署在第i个业务节点上,dki表示第i个业务节点上已部署的第k个容器实例的异步io读写速率,k为整数,1≤k≤υ,υ表示容器实例的个数。

需要说明的是,这里的υ个容器实例包括已部署在业务节点上的容器实例和未部署的容器实例中至少一种,控制节点可以对υ个容器实例进行重新部署,从而,降低异步io邻位干扰故障的发生概率。

例如,假设υ=3,表示容器实例的个数为3,s=3,表示存在3个业务节点。在一些可能的设计中,假设将第1个容器实例部署在第1个业务节点上,将第2个容器实例部署在第2个业务节点上,将第3个容器实例部署在第3个业务节点上。aki可以表示第k个容器实例是否部署在所述第i个业务节点上。当aki=1时,表示第k个容器实例部署在第i个业务节点上,当aki=0时,表示第k个容器实例不部署在第i个业务节点上。aki′的取值可以包括a11′=1、a22′=1和a33′=1。

需要说明的是,求解时长是从控制节点处获取的。求解时长可以是系统维护人员配置的。在一些实施例中,求解时长可以是预先定义的,所谓预先定义可以理解为标准或者协议中预先定义的。

由于业务节点上的容器实例的异步io是时刻在变化的,因此,业务节点的页缓存剩余容量也在不断的变化,所以为了提高求解容器实例部署方案的准确度,同时降低求解过程中的容器实例的异步io邻位干扰故障扩散风险,本申请实施例事先对业务节点可用的页缓存剩余容量进行预测,根据预测值计算业务节点原始可用的页缓存的大小。

由于业务节点的页缓存的可用容量和业务节点上所有容器实例的异步io读写速率与时长有关,属于单调递减关系,即随着时间的增加,容器实例的异步io读写速率越大,则业务节点的页缓存的可用容量越小,因此可用回归关系检测评估它们之间的关系,然后做假设检验,观察回归模型是否满足假设检验条件。

在一种可能的设计中,第i个业务节点可以通过该业务节点的异步io读写速率与该业务节点页缓存使用量的历史数据,训练并建立异步io读写速率与页缓存剩余容量的线性回归模型,然后预测在预先定义的求解时长后,第i个业务节点的页缓存剩余容量。预测可以是指根据预先定义的求解时长,动态预测业务节点的页缓存剩余可用容量。

具体的,第i个业务节点可以先根据第一回归系数、第二回归系数、求解时长和第i个业务节点的异步io读写速率建立回归模型。回归模型可以采用如下公式(2)表示:

m×di×t+n=ci(2)

其中,m表示第一回归系数,di表示第i个业务节点的异步io读写速率,t表示求解时长,n表示第二回归系数,ci表示第i个业务节点的页缓存剩余容量。

然后,第i个业务节点对第一回归系数的初始值和第二回归系数的初始值进行显著性检验(significancetest),确定第一回归系数的取值和第二回归系数的取值。其中,第一回归系数的初始值和第二回归系数的初始值是根据历史时刻的第i个业务节点的页缓存剩余容量确定的。

显著性检验就是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断总体的真实情况与原假设是否有显著性差异。或者说,显著性检验要判断样本与对总体所做的假设之间的差异是纯属机会变异,还是由所做的假设与总体真实情况之间不一致所引起的。显著性检验是针对总体所做的假设做检验,其原理就是“小概率事件实际不可能性原理”来接受或否定假设。

假设检验是推断统计中的一项重要内容。在假设检验中常见到p值(p-value,probability,pr)。p值是进行检验决策的另一个依据。p值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的p值,一般以p<0.05为有统计学差异,p<0.01为有显著统计学差异,p<0.001为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于0.05、0.01、0.001。实际上,p值不能赋予数据任何重要性,只能说明某事件发生的几率。

在一些实施例中,第i个业务节点可以对第一回归系数的初始值和第二回归系数的初始值进行显著性检验,确定显著性检验的最大概率(p值)。

当p值大于0.05,第i个业务节点调整第一回归系数的初始值和第二回归系数的初始值,对第一回归系数的调整值和第二回归系数的调整值再进行显著性检验。

当p值小于或等于0.05,第i个业务节点确定第一回归系数的取值和第二回归系数的取值。

随后,第i个业务节点根据第一回归系数的取值、第二回归系数的取值、求解时长和第i个业务节点的异步io读写速率确定第i个业务节点的页缓存剩余容量。具体的,将第一回归系数的取值、第二回归系数的取值、求解时长和第i个业务节点的异步io读写速率代入公式(2)中,得到第i个业务节点的页缓存剩余容量。

s302、第i个业务节点向控制节点发送在第i个业务节点上已部署的每个容器实例的异步io读写速率和第i个业务节点的页缓存剩余容量。

s303、控制节点获取s个业务节点中每个业务节点上已部署的容器实例的异步io读写速率和s个业务节点的页缓存剩余容量。

在控制节点获取到s个业务节点中每个业务节点上已部署的容器实例的异步io读写速率和s个业务节点的页缓存剩余容量之后,确定s个业务节点的io邻位干扰度。对于s个业务节点中每个业务节点可以根据s304的阐述确定业务节点的io邻位干扰度。

s304、控制节点根据第i个业务节点的页缓存剩余容量、页缓存容量影响因子、第i个业务节点上已部署的容器实例的异步io读写速率和υ个部署参数,确定第i个业务节点的io邻位干扰度。

其中,υ表示容器实例的个数。部署参数用于指示第k个容器实例是否部署在第i个业务节点上。k为整数,k∈[1,υ]。第k个容器实例可以是指υ个容器实例中的任意一个容器实例。可以为部署参数配置不同的取值,表示第k个容器实例是否部署在第i个业务节点上。例如,若第k个容器实例部署在第i个业务节点上,部署参数的取值为1;若第k个容器实例未部署在第i个业务节点上,部署参数的取值为0。

页缓存容量影响因子可以是系统维护人员配置的。页缓存容量影响因子的取值可以是0到1之间的数值。

在一些实施例中,控制节点可以根据第i个业务节点的页缓存剩余容量、页缓存容量影响因子、第i个业务节点上已部署的容器实例的异步io读写速率和υ个部署参数,采用如下公式(3),确定第i个业务节点的io邻位干扰度:

其中,ri表示第i个业务节点的io邻位干扰度,ci表示第i个业务节点的页缓存剩余容量,表示页缓存容量影响因子,aki表示第k个容器实例是否部署在第i个业务节点上(部署参数),dki表示在第i个业务节点上部署的第k个容器实例的异步io读写速率,表示向下取整。

例如,当aki=1时,表示第k个容器实例部署在第i个业务节点上,当aki=0时,表示第k个容器实例不部署在第i个业务节点上。

在控制节点根据s304获取到s个业务节点的io邻位干扰度之后,执行s305。

s305、控制节点根据s个业务节点的io邻位干扰度确定系统io邻位干扰度平均值。

在一些实施例中,控制节点可以根据s个业务节点的io邻位干扰度,采用如下公式(4)确定系统io邻位干扰度平均值:

其中,表示系统io邻位干扰度平均值。

s306、控制节点根据s个业务节点的io邻位干扰度、系统io邻位干扰度平均值和s构建系统io邻位干扰度优化模型。

系统io邻位干扰度优化模型的优化目标是系统中业务节点的全局io邻位干扰度最低。

在一些实施例中,系统io邻位干扰度优化模型可以定义为所有业务节点的异步io邻位干扰度的方差。方差越小,表示系统内的业务节点的异步io邻位干扰度越均衡,发生异步io邻位干扰故障扩散的风险越低。

示例的,系统io邻位干扰度优化模型可以采用如下公式(5)表示:

其中,系统io邻位干扰度优化模型的约束条件包含两个部分。

第一、第i个业务节点上放置的所有容器实例的异步io所使用的页缓存容量之和小于第i个业务节点的页缓存剩余容量。采用公式表示,如下公式(6)所示:

其中,表示业务节点的页缓存容量影响因子。可调节算法的收敛速率,页缓存容量影响因子越小表示业务节点预留的页缓存越多,算法找到全局近似最优解的时间越长,同时部分容器实例的存储io突发增加,而导致异步io邻位干扰故障扩散风险越小。

第二,每个容器实例只能放置在一个业务节点上。采用公式表示,如下公式(7)所示:

s307、控制节点确定容器实例部署策略。

容器实例的部署属于装箱问题,即属于非确定性多项式(non-deterministicpolynomial,np)难问题。目前装箱问题主要采用启发式算法寻找近似最优解。蚁群优化(antcolonyoptimization,aco)算法是一种模拟昆虫王国中蚂蚁群体智能行为的仿生优化算法,它具有较强的鲁棒性、优良的分布式计算机制、易与其它方法相结合等优点。aco算法能够利用正反馈机制,较快的找到np优化问题的最优近似解。例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。后经进一步研究发现,蚁群在寻找食物的过程中,蚂蚁会在其经过的路径上释放一种可以称之为“信息素(pheromone)”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了。因此,本申请实施例提出基于启发式蚁群优化算法解决容器实例放置问题。也就是说,求解一种最优的容器实例部署策略,将υ个容器实例分配给s个业务节点,使得系统异步io邻位干扰度最低。当控制节点根据蚁群算法确定系统io邻位干扰度优化模型的极值,获取υ个容器实例的部署参数的取值。

首先,对本申请实施例中采用的蚁群优化算法的相关参数进行说明。

系统异步io邻位干扰度优化模型的适应度函数如下公式(8)所示:

其中,r表示业务节点的异步io邻位干扰度向量。

表示第t次迭代蚂蚁h将第k个容器实例放置在第i个业务节点的概率,则蚂蚁在搜索容器过程中的概率转移函数定义如下公式(9)。

其中,τki(t)表示第t次迭代第k个容器实例在第i个节点上的信息素。采用公式(10)表示,如下所示:

蚁群优化算法初次迭代时,τki(0)=a,a表示一个常数,ρ表示挥发系数,1-ρ表示信息素残留因子,ρ∈[0,1)。在最大最小蚁群算法(max-minantsystem,mmas)中,信息素需要设定上下界,因此,设τki(t)∈[τmin,τmax],τmax的初始值为τki(0),g下限因子,且g>1。表示本次迭代中第k个容器实例在第i个节点上的信息素增量,采用公式(11)表示,如下所示:

ηki(t)表示第k个容器实例放置在第i个业务节点上的启发函数。它表示蚂蚁选择第k个容器实例放置在第i个业务节点的期望程度。采用公式(12)表示,如下所示:

α示信息启发因子,反映了蚂蚁在运动过程中所累积的信息在蚂蚁运动时所起的作用。

β表示期望启发因子,反映了蚂蚁在运动过程中启发信息在蚂蚁选择路径中的受重视程度。

allowedh表示本次迭代中蚂蚁h还未放置的容器实例的集合。

abest表示系统异步io邻位干扰度优化模型最优解集。f(abest)根据公式(8)计算,mmas中,信息素增量直接等于最优解对应的适应度函数值,但在本蚁群优化算法中,信息素增量等于最优解对应的适应度函数值除以信息素,这样是为了避免算法过早的陷入局部最优而无法找到全局最优近似解集。

qk表示第k个容器实例对页缓存资源的请求占第i个业务节点的页缓存剩余资源的比例,从公式(12)可以看出,蚂蚁优先选择对页缓存资源的请求较大的容器实例进行放置。

bk(t)表示第t次迭代位于第k个容器实例的蚂蚁数量。

tabuh(t)表示第t次迭代蚂蚁h的禁忌表,即已放置的容器实例。

c表示容器实例的集合。

图4为本申请实施例提供的一种系统异步io邻位干扰度优化模型求解流程图。

s401、初始化蚁群优化算法的参数。

初始化蚂蚁变量h=0、蚂蚁数量nant、放置矩阵a=0、迭代变量t=0、迭代次数nrun、信息启发因子α、期望启发因子β、挥发系数ρ、下限因子g、信息素函数τki(0)=a,a表示一个常数、启发函数ηki(t)、信息素上下界[τmin,τmax]。初始化容器实例集合c、页缓存资源请求qk、业务节点的页缓存剩余资源ci、求解时间计数器l。

蚁群优化算法一共要进行nrun次迭代,每次迭代中,所有蚂蚁都需要完成υ个容器实例分配给到s个业务节点的任务。因此,蚁群优化算法采用了三层for循环,第一层用于迭代次数的循环,在本算法中一共要循环nrun次;第二层用于蚂蚁的循环,本算法一共有nant只蚂蚁,因此需要进行nant次循环;第三层用于υ个容器实例分配的循环,本算法一共有υ个容器实例,因此需要循环υ次,每一次循环,都将当前容器实例按照筛选条件分配给某一个业务节点,并在放置矩阵中记录蚂蚁的分配策略。

s402、随机选择第i个业务节点,放置蚂蚁h在第i个业务节点上,然后蚂蚁h开始搜索容器实例。

s403、判断容器实例集合c是否为空。

如果容器实例集合c非空,则转到s404;否则转到s407。

s404、蚂蚁h搜索还未放置的容器实例,根据筛选条件放置到第i个业务节点上。并更新还未放置的容器实例集合allowedh。

s405、判断还未放置的容器实例是否为空。

若还未放置的容器实例集合allowedh为空,则重新随机选择第i个业务节点,转到s402;否则转到s406。

s406、采用轮盘赌法将容器实例放置在第i个业务节点上,并更新放置矩阵。

蚂蚁h根据公式(12)更新ηki(t)并根据公式(9)采用轮盘赌法从还未放置的容器实例集合allowedh中选择第k个容器实例放置在第i个业务节点上,更新蚂蚁h放置矩阵a,从容器实例集合c中删除第k个容器实例,更新第i个业务节点的资源,转到s403。

s407、更新最优适应度函数值、迭代次数、计算时间、放置矩阵。

若h=0,则abest=a;否则比较f(abest)与f(a),若f(abest)>f(a),则abest=a。重置业务节点的页缓存剩余资源ci,放置矩阵a=0,容器实例集合c,启发函数。更新蚂蚁变量h=h+1,若h<nant,则转到s402;否则转到s408。

根据公式(10)、(11)更新信息素函数τki(t),并判断τki(t)是否越界,若τki(t)<τmin,则τki(t)=τmin;若τki(t)>τmax,则τki(t)=τmax。更新t=t+1。

更新程序运行累加时间l=l+lt,lt为本轮程序运行时间。

s408、判断迭代次数是否超过阈值。

若t<nrun,则重置h=0并转到s409;否则转到s410。

s409、判断计算时间是否超过阈值。

若t<nrun并且l<t0,则重置h=0并转到s402;否则转到s410。

s410、输出容器实例放置策略与最优适应度函数值。

在一些实施例中,容器实例放置策略可以采用最优解集abest表示。示例的,如下最优解集。

从上述最优解集可知,将5个容器实例放置到3个业务节点上,每个容器实例放置到一个业务节点上。第1个容器实例放置到第1个业务节点上,则矩阵中的部署参数a11的取值为1,其他部署参数a12和a13的取值为0。第2个容器实例放置到第2个业务节点上,则矩阵中的部署参数a22的取值为1,其他部署参数a21和a23的取值为0。第3个容器实例放置到第1个业务节点上,则矩阵中的部署参数a31的取值为1,其他部署参数a32和a33的取值为0。第4个容器实例放置到第3个业务节点上,则矩阵中的部署参数a43的取值为1,其他部署参数a41和a42的取值为0。第5个容器实例放置到第2个业务节点上,则矩阵中的部署参数a52的取值为1,其他部署参数a51和a53的取值为0。

从而,通过启发式算法寻找近似全局最优解,使得容器实例放置方案下所有业务节点的页缓存使用量相近,不会出现部分业务节点的页缓存被占满而导致异步io邻位故障扩散。

当系统io邻位干扰度优化模型的取值为极值时,控制节点确定容器实例部署策略。容器实例部署策略用于指示部署υ个容器实例中每个容器实例的业务节点。可以理解的,容器实例部署策略包括了每个容器实例部署到的那个业务节点的标识。

s308、控制节点向至少一个业务节点发送容器实例部署指示。

在一些实施例中,容器实例可能是部署在s个业务节点中的部分业务节点上的,所以控制节点向至少一个需要部署容器实例的业务节点发送容器实例部署指示。容器实例部署指示包括需要部署的容器实例的标识。

s309、第i个业务节点接收控制节点发送的容器实例部署指示。

容器实例部署指示包括部署在第i个业务节点上的容器实例的标识。

s310、第i个业务节点根据容器实例部署指示部署容器实例的标识对应的容器实例。

本申请实施例提供的预测容量的方法,通过动态预测业务节点的页缓存剩余容量,能够较大程度提高系统异步io邻位干扰度优化模型的求解准确度,同时防止算法求解过程中容器实例持续消耗业务节点的页缓存,造成的异步io邻位干扰故障扩散。

本申请实施例提供的部署容器实例的方法,通过对业务节点的全局异步io邻位干扰度优化,能够防止业务节点的页缓存耗尽,而导致的容器实例的存储io挂死故障扩散。另外,通过优化集群中所有业务节点的平均异步io邻位干扰度,使得业务节点的页缓存使用量全局均衡,可以防止虚拟机之间的异步io邻位干扰故障扩散,对容器实例的异步io的影响。例如公有云场景下租户的虚拟机集群部署io密集型容器实例应用。

与传统技术中的异步io邻位干扰故障隔离方案相比,本申请实施例提供的方案对内核版本与cgroup版本无任何限制要求,不需要修改操作系统内核,同时可以解决虚拟机的异步io邻位干扰叠加效应。

与传统技术中的虚拟机异步io邻位干扰故障的叠加效应方案相比,本申请实施例提供的方案通过对系统io邻位干扰度优化,能够防止单个物理节点上多个容器实例共享主机os的页缓存。而造成的异步io邻位干扰故障扩散。

上述本申请提供的实施例中,分别从控制节点、业务节点、以及控制节点和业务节点之间交互的角度对本申请实施例提供的方法进行了介绍。可以理解的是,各个网元,例如控制节点、业务节点为了实现上述本申请实施例提供的方法中的各功能,控制节点和业务节点包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对控制节点、业务节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图5示出了上述和实施例中涉及的通信装置的一种可能的组成示意图,该通信装置能执行本申请各方法实施例中任一方法实施例中控制节点或业务节点所执行的步骤。该通信装置可以包括:接收单元501、处理单元502和发送单元503。

当所述通信装置为控制节点或支持控制节点实现实施例中提供的方法的通信装置,例如该通信装置可以是芯片系统。

其中,接收单元501,用于支持通信装置执行本申请实施例中描述的方法。例如,接收单元501,用于执行或用于支持通信装置执行图3所示的方法中的s303。

处理单元502,用于执行或用于支持通信装置执行图3所示的方法中的s304~s307,图4所示的方法中的s401~s410。

发送单元503,用于执行或用于支持通信装置执行图3所示的方法中的s308。

当所述通信装置为业务节点或支持业务节点实现实施例中提供的方法的通信装置,例如该通信装置可以是芯片系统。

其中,接收单元501,用于支持通信装置执行本申请实施例中描述的方法。例如,接收单元501,用于执行或用于支持通信装置执行图3所示的方法中的s309。

处理单元502,用于执行或用于支持通信装置执行图3所示的方法中的s301和s310。

发送单元503,用于执行或用于支持通信装置执行图3所示的方法中的s302。

需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本申请实施例提供的通信装置,用于执行上述任意实施例的方法,因此可以达到与上述实施例的方法相同的效果。

如图6所示为本申请实施例提供的通信装置600,用于实现上述方法中控制节点的功能。该通信装置600可以是控制节点,也可以是控制节点中的装置。其中,该通信装置600可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。或者,通信装置600用于实现上述方法中业务节点的功能。该通信装置600可以是业务节点,也可以是业务节点中的装置。其中,该通信装置600可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。

通信装置600包括至少一个处理器601,用于实现本申请实施例提供的方法中控制节点或业务节点的功能。示例性地,处理器601可以用于在预先定义的求解时长内,动态预测业务节点的页缓存剩余容量,以及根据s个业务节点的页缓存剩余容量和每个业务节点上已部署的容器实例的异步io读写速率构建系统异步io邻位干扰度优化模型,求取系统异步io邻位干扰度优化模型的最优解,得到所有容器实例的最优部署方案,实现页缓存的均衡分配,防止异步io邻位干扰故障扩散等等,具体参见方法示例中的详细描述,此处不做赘述。

通信装置600还可以包括至少一个存储器602,用于存储程序指令和/或数据。存储器602和处理器601耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器601可能和存储器602协同操作。处理器601可能执行存储器602中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。

通信装置600还可以包括通信接口603,用于通过传输介质和其它设备进行通信,从而用于通信装置600中的装置可以和其它设备进行通信。示例性地,若通信装置为控制节点,该其它设备为业务节点。若通信装置为业务节点,该其它设备为控制节点。处理器601利用通信接口603收发数据,并用于实现图3对应的实施例中所述的控制节点或业务节点所执行的方法。

本申请实施例中不限定上述通信接口603、处理器601以及存储器602之间的具体连接介质。本申请实施例在图6中以通信接口603、处理器601以及存储器602之间通过总线604连接,总线在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、终端或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideodisc,dvd))、或者半导体介质(例如,ssd)等。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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