首页> 中国专利> 一种面向微服务架构的容器级弹性资源供给系统及方法

一种面向微服务架构的容器级弹性资源供给系统及方法

摘要

本发明涉及一种面向微服务架构的容器级弹性资源供给系统及方法,包括:数据采集器、性能建模器、前馈控制器、响应时间预测器和容器调度器。本发明解决已有方法难以适用突发负载模式,存在用户服务质量难以保障的不足。

著录项

  • 公开/公告号CN105631196A

    专利类型发明专利

  • 公开/公告日2016-06-01

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN201510974291.9

  • 发明设计人 吴恒;郝庭毅;宋云奎;张文博;

    申请日2015-12-22

  • 分类号G06F19/00(20110101);

  • 代理机构11251 北京科迪生专利代理有限责任公司;

  • 代理人成金玉;孟卜娟

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2023-12-18 15:46:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-17

    授权

    授权

  • 2016-06-29

    实质审查的生效 IPC(主分类):G06F19/00 申请日:20151222

    实质审查的生效

  • 2016-06-01

    公开

    公开

说明书

技术领域

本发明涉及一种面向微服务架构的容器级弹性资源供给系统及方法,属于互联网 和资源管理领域,特别是突发负载场景下的容器资源弹性供给问题。

背景技术

微服务架构(Microservice)体现了互联网应用的设计思想,其核心理念是细粒度 模块划分、服务化接口封装、轻量级通信交互,具有以下两点优势:(1)模块自治性强,能很 好满足互联网应用变化快,模块独立更新的需求;(2)模块扩展性好,能很好满足互联网应 用用户量难预测,资源动态分配的需求。其中,前者涉及的是应用开发和设计范畴;后者强 调的是应用运行和维护问题,也是本文关注的重点。根据Gartner报告,微服务本身具有良 好的扩展性,正逐渐成为构造互联网应用的主流架构模式,但从运行和维护的视角来看,应 对典型的互联网突变负载(Flash-crowds)场景,保障应用服务质量(QualityofService) 依旧面临挑战(服务质量是指应用软件对时间要求的满足程度,响应时间是其重要的度量 指标之一,比如用户服务质量为5秒,即表示用户从请求发起到请求响应的时间间隔不应超 过5秒),比如Netflix,Facebook,Twitter等。

近年来,轻量级容器技术应运而生,其本质是模拟进程运行环境,具有资源占用 少、应用启动快等特点,正逐步成为支撑微服务运行的主流架构平台。容器具有秒级资源供 给的特点,可很好的满足互联网应用负载突变对实时资源供给的需求。然而,已有方法或受 限于物理机灵活性不够,资源难以弹性供给;或受限于虚拟机资源的供给分钟级时效性,通 常只能适用于周期变化(Time-of-day)的负载模式。随着互联化技术的快速发展和深入应 用,如何应对突变负载(Flash-crowds)依然面临挑战,如京东采用容器作为2015年“618”限 时抢购活动,用户访问数增长率高于预期,导致部分应用构件出现“无响应”、“卡顿”等现 象。

已有工作主要面向物理机和虚拟机场景实现资源的弹性供给。一些文献针对物理 资源难以快速供给的特点,或采用容量规划,以服务质量作为约束条件,估算应用的峰值资 源需求;或采用准入控制机制,根据资源供给量反推应用可承受的峰值负载,通过拒绝服务 策略来保障应用的服务质量。如LudmilaCherkasova等人提出的基于准入控制机制,建立 会话与吞吐量的损失模型,推演资源的供给需求。又如RobertssonA等人提出的基于线性 模型的资源需求方程组,在保障应用质量的提前下估算资源需求的峰值,从而达到资源按 需供给的目的。一些文献考虑虚拟机性能开销因素,采用模型驱动的方法刻画虚拟化环境 下应用的资源需求变化,并以此作为资源提供的依据。这些方法通常采用增强学习 (ReinforcementLearning)、统计学习(StatisticalLearning)等机制进行模型参数训 练。如KarlssonM等人提出基于性能隔离的方法分析每个服务实例的资源需求,分别对每 种服务构建性能变化模型,从而进行自适应资源供给;一些文献考虑虚拟机之间相互性能 干扰问题,采用机器学习(StatisticalMachineLearning)、模糊控制(FuzzyControl)、 概率论(ProbabilityTheory)等方法刻画出虚拟机之间相互性能干扰对应用资源供给的 影响,并以此作为应用资源供给的依据。如P等人提出的基于机器学习的方式,通过 历史数据集合对应用模型的性能参数进行规则训练,并根据得到的资源供给规则进行资源 动态调整。然而,由于虚拟机资源供给需要分钟级,因此上述方法通常只适用于负载随时间 周期性变化(Time-of-day)的应用场景。

发明内容

本发明技术解决问题:克服现有技术的不足,提供一种面向微服务架构的容器级 资源供给方法,解决了已有方法难以适用突发负载模式,存在用户服务质量难以保障的不 足。

本发明技术解决方案:一种面向微服务架构的容器级弹性资源供给系统,包括数 据采集器、性能建模器、响应时间预测器、前馈控制器和容器调度器,其中:

数据采集器,周期性监测容器CPU、内存、磁盘I/O、网络I/O系统资源,以及每秒用 户请求数;另外,数据采集器负责建立“负载-偏好资源利用率”,因为容器的资源偏好具有 差异性,比如I/O密集型容器,其磁盘传输、网络传输等资源利用率可能要高于CPU的利用 率,又如计算密集型容器,其CPU和内存的利用率可能较磁盘IO要偏高些。具体而言,数据采 集器周期性取得CPU利用率、内存利用率、磁盘I/O、网络I/O这个四个参数中的最高值,并将 其定义为偏好资源利用率,然后构造“负载-偏好资源利用率”;

性能建模器,根据数据采集器得到的数据,通过Jackson开环网络中的性能方程及 流量方程进行建模。在偏好资源利用率已知条件下,构建微服务架构下“负载-响应时间”的 关联方程;

响应时间预测器,“负载-响应时间”关联方程存在未知变量,只有确定该未知变 量,方能计算出响应时间。因此,采用卡尔曼滤波,将未知变量作为预测矩阵,将已知变量作 为观测矩阵,通过对未知变量进行赋值,估算响应时间,并将估算值与监测值得方差及均 值传递给前馈控制器;

前馈控制器,分析残差的方差及均值,通过模糊逻辑得到滤波参数(“负载-响应时 间”关联方程中未知变量的取值)的校准值,其目的是修正未知变量,使得估算的响应时间 更加准确;

容器调度器,根据响应时间预测值是否违背应用服务质量,按需进行容器级资源 的供给。

所述性能建模器中,通过Jackson开环网络构建微服务架构下“负载-响应时间”的 关联关系方程具体如下:

uj=u0jj×∑iji×Tji)(1)

B=d+ΣjTj1-uj---(2)

其中,j是应用构件,i是应用构件实例,j,i的关系可描述为:用户请求将会流经多 个应用构件j1...jn,每个应用构件j都含有多个实例i1...im;每个实例都运行在容器中;uj∈[0,1)是应用构件j的偏好资源利用率;u0j是指当应用构件j在零负载情况下的偏好资源 利用率;γji是指应用构件j的第i个容器的并发数,即每秒到达的请求数,满足泊松到达过 程;Tji是指应用构件j的第i个容器的服务处理时间;Tj是指应用构件j的平均服务处理时 间;d是指服务总延迟时间;B是指服务总响应时间;τj是服务j的负载与资源利用率的相关 系数;uj,u0jji,B是通过监测获取的,τj是根据历史数据给出的经验值;

方程(1)代表偏好资源利用率等于应用构建本身的开销加上有负载时的额外开 销;方程(2)代表响应时间等于总延迟加上总服务处理时间,其中,服务处理时间等于应用 构建的平均服务时间与未使用的偏好资源利用率的反比;从而可以从“负载-偏好资源利用 率”得到“负载-响应时间”的性能方程。

所述响应时间预测器具体过程。

(1)对于方程(1)和方程(2),总延迟和应用构件的平均服务处理时间是难以预测 的,是未知数;偏好资源利用率、应用构件本身的资源开销、负载是可以观测得到的,是已知 数;

(2)通过卡尔曼滤波算法,将未知数作为预测矩阵;已知数作为观测矩阵;

(3)通过给未知数进行赋值,得到响应时间的预测值。

卡尔曼的滤波方程如下:

X(k)=H(k)X(k-1)+Qk(3)

Z(k)=H(k)X(k)+Rk(4)

其中X(k)是预测矩阵,其值为格式请调整代表服务处理时间与服务流 总延迟的矩阵;Z(k)为观测矩阵,其值为格式请调整代表应用实例的 资源利用率、负载与响应时间的矩阵;Q(k)是过程激励噪声协方差矩阵,其符合Q(k)~N(0, Q),R(k)是测量噪声协方差矩阵,其符合R(k)~N(0,R)的高斯分布。

所述前馈控制器具体过程,用以修正卡尔曼滤波中的未知数,提高响应时间预测 的准确性。

(1)由于突发负载具有不确定性,所以,需要调节卡尔曼滤波器的噪声方差阵。

(2)噪声方差阵是符合高斯分布的矩阵,可表示为标准差的一阶方程;而滤波器计 算过程中的残差(观测矩阵真实值与预测值的差),该差值代表滤波器对测量值的依赖程 度,其值增大时,代表负载在突发变化,滤波器预测的准确性在下降,而该值又与噪声方差 阵的标准差有关,所以,可以通过分析残差的方差与均值,调整噪声方差阵的变化,从而保 证滤波器预测的准确性。

通过TS模糊逻辑构建三角形隶属度函数,将其和常规卡尔曼滤波器的误差曲线进 行横向对比,从而推断该组数据的可行性及有效性。再将每次实验结果与前一次实验结果 进行纵向对比,以确定效果更好的线性组合。最后经过100组仿真实验,确定了FLAC的规则 输出数据,这里仅列举两个重要的FLAC规则:

当且仅当残差方差属于小,残差均值属于零时,T=P(r)×0.3+0.8,U=-P(r)× 0.2+1.9

当且仅当残差方差属于大,残差均值属于小时,T=-P(r)×0.5+0.6,U=P(r)× 0.1+1.4

所述容器调度器具体过程。

(1)响应时间是否违背应用服务质量是容器调度的标准;

(2)当响应时间违约时,对每个应用构件的服务时间预测值所占响应时间的比例 中权重较高者进行扩展;当响应时间不违约时,如果宿主机的总资源利用率超过75%,则对 其中资源占用较高的容器进行迁移;当响应时间不违约时,如果某个应用构件的应用实例 的资源利用率小于额定值,则进行收缩。

本发明的容器资源供给方法包括以下步骤:

步骤S01:周期性监测采集每个容器的CPU、内存、磁盘I/O、网络I/O等系统资源使 用参数以及每秒用户请求数;每个容器由于服务类型的不同,其资源偏好也不同;数据采集 阶段最终将生成“负载-偏好资源利用率”数据对,作为其输出;

步骤S02:根据步骤S01中产生的数据对,通过Jackson开环网络中的性能方程及流 量方程进行建模,刻画微服务架构下“负载-响应时间”的关联关系;

步骤S03:将步骤S02中的“负载-响应时间”关系方程中的未知数作为卡尔曼滤波 器的预测值,已知数作为卡尔曼滤波器的观测值,分别构建预测方程及观测方程;

步骤S04:按照步骤S03卡尔曼滤波器计算过程中将产生预测值与观测值的残差, 残差是调整卡尔曼滤波器预测准确性的重要参数;以残差的均值及方差作为TS模糊函数的 输入,卡尔曼滤波器的噪声矩阵为输出;

步骤S05:根据步骤S03中得出的响应时间的预测值是否违背了应用的服务质量为 依据,对容器进行调度,从而保证用户应用的服务质量。

本发明与现有技术相比的优点在于:

(1)本发明提出了基于容器的应用弹性供给框架,利用容器轻量级特点,提高了资 源供给的实效性。

(2)本发明提出了利用模糊自适应卡尔曼滤波快速收敛的特点,提高了突变负载 的预测准确性和资源供给的有效性,解决了已有方法无法在突发负载的场景下,保障用户 服务质量的问题。

附图说明

图1为本发明方法实现流程图。

图2为本发明方法中容器调度策略流程图。

具体实施方式

为使本发明更加容易理解,结合一个实例对本发明作进一步阐述,但该实例不构 成对本发明的任何限制。

如图1所示:本发明具体实施步骤如下:

步骤S01:定义偏好资源为CPU、内存、磁盘读写、网络通信中容器运行时所占比例 相对较高的资源;本实施例中的数据采集器,将对每个容器中的偏好资源与用户请求数量 进行采集,并形成“偏好资源-负载”的数据对作为其输出;偏好资源是指每个容器由于服务 类型不同,所以其偏好的资源类型也不同,计算密集型的偏好资源可能是CPU利用率或者内 存利用率,I/O密集型的偏好资源可能是磁盘I/O或者网络I/O。

步骤S02:以步骤S01中的“偏好资源-负载”的数据对作为输入,通过Jackson开环 网络性能方程及流量方程,刻画负载与响应时间的关联关系;

这里,Jackson开环网络与微服务架构的关系是指:(1)微服务架构中应用构件是 相互独立的,模块之间通过消息总线进行通信,没有状态信息存在,满足Jackson网络排队 模型下,节点(应用构件即节点)相互独立,满足指数分布的约束;(2)微服务架构下应用构 件之间通过消息进行交互,满足Jackson网络是开环,节点输入符合泊松分布的假设;(3)应 用构件在处理请求后,可选择进入下一个节点或者离开网络。

用户请求会在节点中跳转,经过相关应用构件的处理,最后响应给用户。当某个应 用构件存在多个实例时候,采用轮循调度(Round-RobinScheduling)策略。为了区分同一 应用构件的不同实例,定义:j是应用构件,i是应用构件实例。j,i三者的关系可描述为:用 户请求将会流经多个应用构件j1...jn,每个应用构件j都含有多个实例i1...im;,每个实例 都运行在容器中。由于应用构件的资源偏好不同(如CPU集型、I/O集型),导致容器出现的偏 好资源不同,定义偏好资源为容器CPU、内存、磁盘I/O中利用率最高的资源;uj∈[0,1)是应 用构件j的偏好资源利用率;u0j是指当应用构件j在零负载情况下的偏好资源利用率;γji是指应用构件j的第i个容器的并发数,即每秒到达的请求数,满足泊松到达过程;Tji是指应 用构件j的第i个容器的服务处理时间;Tj是指应用构件j的平均服务处理时间;d是指用户 请求流f的总网络传输时间;B是指服务流f的响应时间;τj是服务j的负载与资源利用率的 相关系数。根据Jackson网络流量方程及网络性能方程有:

uj=u0jj×∑iji×Tji)(1)

B=d+ΣjTj1-uj---(2)

其中,uj,u0jji,B是通过监测获取的,τj是根据历史数据给出的经验值,Tji,d是 难以监测的,需要通过预测进行估算。所谓弹性供给,是指响应时间B在相对固定的取值区 间的前提下,应用的资源需求。可见,Tji,d是进行弹性伸缩的关键要素。

步骤S03:将步骤S02中的“负载-响应时间”关系方程中的未知数作为卡尔曼滤波 器的预测值,已知数作为卡尔曼滤波器的观测值,分别构建预测方程及观测方程;

这里,卡尔曼的原始滤波方程如下:

X(k)=H(k)X(k-1)+Qk(3)

Z(k)=H(k)X(k)+Rk(4)

其中X(k)是预测矩阵,其值为代表服务处理时间与服务流总延迟的 矩阵;Z(k)为观测矩阵,其值为代表应用实例的资源利用率、负载与响 应时间的矩阵;Qk是过程激励噪声协方差矩阵,Rk是测量噪声协方差矩阵,其符合Rk~N(0, R)的高斯分布,一般认为应将这两个噪声矩阵设置为零均值白噪声,但是负载变化往往是 不确定的,如负载突发峰值情况的出现,所以为了使系统的弹性资源调度具有实时性,过程 激励噪声协方差矩阵以及测量噪声协方差矩阵应该随时间自适应的调整,现将噪声矩阵设 为:

Qk=TQ(5)

Rk=UR(6)

其中,T,U为时变的调整值,可得到预测方程如下:

X(k|k-1)=H(k)X(k-1)---(7)

Z(k)=H(k)X(k)---(8)

其中是各个服务处理时间与请求总延迟时间的预测值,是资源 利用率灯观测参数的预测值,可以将的预测值带入公式(1)和(2),得出滤波器 对响应时间的预测值。定义为残差r,代表系统模型依赖测量值的程度,其值 越大则系统模型对测量值的依赖越大,这时说明系统负载可能处于突升或者突降的状态, 滤波器无法对服务处理时间和总延迟进行准确预测,需要更改滤波模型。

步骤S04:将步骤S02中的“负载-响应时间”关系方程中的未知数作为卡尔曼滤波 器的预测值,已知数作为卡尔曼滤波器的观测值,分别构建预测方程及观测方程;

判断滤波器是否需要更新的依据就是监测残差,理想情况下残差为零均值白噪 声,即滤波器可以完美自适应,如果残差不为零均值白噪声,则说明滤波器预测出现误差。 由于残差方差、残差均值与Q和R有关,可以通过估计残差方差与均值,然后进行模糊推理, 最后调整U和T的值,已达到使卡尔曼滤波算法适应时变结构的目的。

所以,设计一个模糊函数(FLAC)来不断监视残差和均值的变化,然后根据模糊规 则调整T和U,以改变噪声矩阵,从而对卡尔曼滤波器的方误差矩阵进行调整,使其一直执行 最优估计,以满足时变需求。

采用TS模糊逻辑系统,对残差方差及均值建立三角形隶属度函数及模糊规则。例 如,如果残差方差越来越大,均值也渐渐远离零,则应该减小过程激励噪声T并增加测量噪 声U。从而建立模糊逻辑规则表,表中的零代表T和U不需要变化,小代表增加T减小U,大代表 减小T增加U,中代表同时增加T和U。

根据以上原则并将其和常规卡尔曼滤波器的误差曲线进行横向对比,从而推断该 组数据的可行性及有效性。再将每次实验结果与前一次实验结果进行纵向对比,以确定效 果更好的线性组合。最后经过100组仿真实验,确定了FLAC的规则输出数据,这里仅列举两 个重要的FLAC规则:

当且仅当残差方差属于小,残差均值属于零时,T=P(r)×0.3+0.8,U=-P(r)× 0.2+1.9

当且仅当残差方差属于大,残差均值属于小时,T=-P(r)×0.5+0.6,U=P(r)× 0.1+1.4

根据上述FLAC规则动态调整滤波器的参数以保障预测结果的有效性。

步骤S05:根据步骤S03中得出的响应时间的预测值是否违背了应用的服务质量为 依据,对容器进行调度,从而保证用户应用的服务质量;

根据负载及资源使用情况,对容器进行实时调度,以保障平稳的输出响应时间。定 义卡尔曼滤波算法中的噪声参变量为全局变量T和U;定义服务实例中资源使用量的最大 值、最小值及最大响应时间;定义卡尔曼滤波函数EKF,用于预测响应时间;定义FLAC为模糊 函数,用于对T和U发送前馈控制信息,自适应调节EKF的模型参数;定义ResponseTime函数, 以EKF的预测输出值为参数,计算响应时间;定容器迁移函数Migrate、容器扩展函数 Expand、容器收缩函数Contract。首先根据卡尔曼滤波函数计算响应时间预测值及残差均 值和方差,然后将这两个值带入模糊逻辑函数,对卡尔曼滤波函数参数进行前馈调节,最后 计算出应用的响应时间。根据响应时间是否违约有以下三种容器调度策略,见图2:

(1)容器迁移,其产生的主要原因是容器本身的资源使用并没有达到资源限制上 限,而是因为宿主机的资源总量将要到达限制上限阈值,此时并不需要对容器进行扩展。只 需要将部分容器迁移至其他节点即可。容器迁移过程大致如下,首先将容器持久化成镜像, 这一步将保存当前的应用状态,在集群其他节点上根据镜像生成容器,原有的容器将会被 控制器删除。容器迁移时,本策略将迁移资源利用率最小的容器,并判断主机资源利用率是 否小于阈值,如果仍然高于阈值,则继续迁移资源利用率最小的容器,直到满足条件。

(2)容器扩展,其产生的主要原因是响应时间违背服务质量,此时进行容器迁移并 不能解决问题,为保障该容器的平均响应时间,必须对该容器进行扩展。容器扩展的过程大 致如下,容器将持久化成镜像,在其他节点上根据该镜像生成容器,通过负载均衡等方式完 成扩展。容器扩展时,将平均服务时间较高的几个容器扩展至2倍,其余容器实例数增加一 个。

(3)容器收缩,其产生的主要原因是应用的各个实例的资源使用情况都低于估计 值,此时需要裁剪该应用的实例数量。容器收缩时,将低于阈值的容器实例数减少一个,如 果容器实例数只有一个,则不作处理。

本发明未详细阐述部分属于本领域公知技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号