CN112199150A - 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 - Google Patents
一种基于微服务调用依赖感知的在线应用动态扩缩容方法 Download PDFInfo
- Publication number
- CN112199150A CN112199150A CN202010809999.XA CN202010809999A CN112199150A CN 112199150 A CN112199150 A CN 112199150A CN 202010809999 A CN202010809999 A CN 202010809999A CN 112199150 A CN112199150 A CN 112199150A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- capacity
- module
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000008602 contraction Effects 0.000 title claims abstract description 19
- 230000008447 perception Effects 0.000 title claims abstract description 9
- 238000012544 monitoring process Methods 0.000 claims abstract description 32
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 101001095088 Homo sapiens Melanoma antigen preferentially expressed in tumors Proteins 0.000 claims abstract 2
- 102100037020 Melanoma antigen preferentially expressed in tumors Human genes 0.000 claims abstract 2
- 230000009467 reduction Effects 0.000 claims description 36
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 claims description 4
- 238000007405 data analysis Methods 0.000 claims description 3
- YHXISWVBGDMDLQ-UHFFFAOYSA-N moclobemide Chemical compound C1=CC(Cl)=CC=C1C(=O)NCCN1CCOCC1 YHXISWVBGDMDLQ-UHFFFAOYSA-N 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明设计了采用MAPE模式的基于微服务调用依赖感知的在线应用动态扩缩容方法,将整个系统分为监控模块、分析模块、规划模块、执行模块四个部分,监控模块首先读取运行数据,所述运行数据包括区分为集群资源使用数据和服务调用相关数据,分析模块发现并选定待扩容或缩容的对象,规划模块计算所需扩缩容容器数目,最后由执行模块调整指定的容器集合中的副本数实现微服务水平扩缩容。这一系统能够通过分析微服务间调用依赖关系及延迟,与历史数据对比,计算并判断当前微服务运行状态及服务能力在请求流量变化时,基于微服务间调用依赖关系及应用延迟等信息,分析微服务服务能力,并对指定微服务进行扩缩容,在保障服务质量同时提升资源使用率。
Description
技术领域
本发明涉及微服务架构领域,尤其涉及一种基于微服务调用依赖感知的在线应用动态扩缩容方法。
背景技术
在互联网中活跃着的大量应用与服务中,在线应用占有很大一部分比重。其中很多面向用户的应 用对延迟十分敏感,如网页搜索,在线票务系统,电商系统等。这些应用的用户流量往往随时间显现 出周期性或突发性波动。流量波动也就是工作负载波动,影响着应用所需资源进而影响服务质量。在 降低资源利用率的同时满足用户对延迟的要求,是在线服务优化的重要方向。微服务架构的提出和广 泛应用,得益于其灵活的部署、水平扩缩容能力,为这一问题带来了新的挑战和可能的解决方案。
微服务被认为是一种新的软件架构,用于构建部署在云上的高度模块化、松散耦合的应用程序集 合。微服务架构将传统的单体服务解耦成多个微服务组件,服务组件之间利用轻量级通信方式,如 http、rpc进行通信,各服务组件能够独立的开发、部署和运行。微服务的特点是体量小,强独立性 和松耦合性,有利于开发人员的持续集成和部署。
单个微服务体量较小,使用传统的物理机或虚拟机部署方式不利于体现微服务架构自身的灵活性 优势。现有的解决方案中,微服务往往以容器形式部署在云上,以Dokcer为代表的容器技术提供了 轻量级的运行环境隔离解决方案。容器是一个标准的软件单元,它将代码及其所有依赖项打包,从而 使应用程序能够从一个计算环境快速可靠地运行到另一个计算环境。Docker容器映像是一个轻量级 的、独立的、可执行的软件包,包含运行应用程序所需的一切:代码、运行时、系统工具、系统库和 设置。以kubernetes为代表的容器编排引擎为容器的自动化部署、自动扩缩容、编排提供产品级解 决方案。
上述技术的支持使得开发者能够较为容易的在云上部署以微服务架构组织的应用。应用在运行过 程中,其负载特性会动态变化。特别是对在线应用而言,随着用户请求量的变化,应用所需资源也会 随之动态变化,在线应用部署在集群中,需要随用户请求量等特征的变化进行动态扩缩容。对于微服 务而言,由于容器的轻量、灵活等特点,能够很好的实现水平扩缩容。水平扩缩容是指根据微服务对 资源的需决定添加或删除容器实例,以提升性能或降低资源使用率。如何在流量不断变化过程中,对 微服务进行动态扩缩容,根据所需资源情况调整容器实例数目,是微服务架构的一个研究方向。
对于用微服务架构组织的在线应用动态扩缩容问题,目前已有一些研究成果和技术方案,如基于 阈值的方法、预测未来资源使用量变化,引入时序预测方法。
但现有技术往往对单个微服务执行扩缩容判断和操作,很少将微服务应用看做一个整体,考虑其 中的调用依赖关系对扩缩容方法的影响。
微服务的特点是体量小、低耦合,与此同时,微服务与微服务之间有着较为复杂的调用依赖关系。 调用依赖使得微服务与上下游服务在服务质量与资源利用率上互相影响。
本发明旨在解决微服务架构下,在线应用如何根据所感知到的微服务调用依赖关系进行动态扩缩 容,以保证用户延迟和提升资源使用率。
发明内容
为了解决目前微服务扩缩容系统的一些弊端,我们提出一种基于微服务调用依赖感知的在线应用 动态扩缩容方法,微服务调度编排领域中的常见的MAPE模式,即整个系统分为监控模块、分析模块、 规划模块、执行模块四个部分:
所述监控模块首先读取运行数据,所述运行数据包括区分为集群资源使用数据和服务调用相关数 据;其中,所述集群资源使用数据利用kubernetes集群监控和数据采集方式获取,使用node_export 结合prometheus来采集,在kubernetes集群每个节点部署node_export,用于将节点中容器运行数 据以http形式上报,由所述prometheus抓取数据,存储到时序数据库里并对外提供查询api;所述 服务调用相关数据,采用服务链路跟踪方式获取,用于探测服务调用链,通过选用与所述kubernetes 集群紧密结合的服务网格工具,将通过边车容器获取的服务运行数据保存在内置的所述prometheus 中,通过所述prometheus服务所述api,指定时间间隔和指标统计方式获取服务请求QPS、服务请求 延迟信息,通过内置的可观察性工具kiali-api,获取微服务结点信息以及节点间流量信息,分析出 微服务间调用关系和调用流量,并每隔一定的时间间隔,将所获取以上所述信息,传入分析模块进行 数据分析;
所述分析模块可以分为两个分析步骤:首先分析微服务通过监控模块中获取的监控信息发现应用 中存在的可能需要扩容瓶颈微服务或服务能力过剩可能需要缩容的微服务,之后对选定的微服务扩容 或缩容;
分析所述瓶颈微服务利用微服务间调用依赖关系进行,对监控模块中获取的多个微服务节点信息 和节点间流量相结合,分析出各所述微服务间调用关系,并进行拓扑排序,最终得到调用关系图及调 用流量比例,并以数值指标来定义各所述微服务是否为瓶颈微服务;分析所述微服务是否能力过剩通 过两个条件实现,首先为当前延迟不低于一段定时历史时间内的历史延迟,其次为请求流量有相应降 低,通过另一个数值指标反应器流量降低情况,当所述另一个数值指标达到特定阈值时认为当前服务 为可能能力过剩需要进行缩容操作;
找到所述需要可能需要扩容瓶颈微服务或服务能力过剩可能需要缩容的微服务后,建立预测模块 利用时序预测方法预测微服务扩缩容数量,所述预测模块输入为之前一段历史使用量数据时间的微服 务资源使用量组成的一组时序数据,预测模块输出为未来一段时期的时序数据,所述预测模块得到的 结果为一个时序序列,表示未来一段时间资源使用量,并选取预测序列中的最大值,表示所述未来一 段时间微服务可能达到的资源使用量最大值,作为主要指标传递给规划模块;
规划模块根据资源使用情况预测结果的未来一段时间微服务可能达到的资源使用量最大值,通过 特定算法计算所需扩缩容容器数目,所述规划模块中得到的输入信息是指定微服务在所述未来一段时 间分钟内可能达到的资源使用量最大值,输出此时指定微服务是否需要扩缩容,以及具体扩缩容数量 至执行模块;
执行模块使用kubernetes接口,根据规划模块输入的是否需要扩缩容,以及具体扩缩容数量进 行动态扩缩容,每个所述微服务定义为kubernetes集群中一个服务作为一个提供资源接入点的抽象 对象,可以与指定的容器集合相关联,所述指定的容器集合根据一个容器镜像启动一个或多个容器实 例,每个容器实例启动时申请指定数量的资源,容器实例数量被称为副本数,调整指定的容器集合中 的副本数即可实现微服务水平扩缩容,Kubernetes对外提供命令行以及api接口修改副本数目。
所述服务链路跟踪方式为服务网格方式获取或日志打点方式,所述服务网格工具为Istio或 ZipKin、pinpoint调用链监控工具。
所述指定时间间隔和指标统计方式包括avg、p90或p95等。
所述时间间隔为30s。
所述数值指标定义为α,用于指示当前微服务是否为应用瓶颈,α计算方式为:
f1=latp90(1min)-∑downstream(latp90(1min)*percent)
f2=latp90(60min)-∑downstream(latp90(60min)*percent)
α=f1/f2
α>threshold(1.2)
其中f表示将监控到的服务延迟数据与下游服务延迟剥离后,将服务延迟与下游服务延迟与请求 比例乘积和作差,f1为当前自身延迟,f2为历史自身延迟。
所述当前延迟不低于一段定时历史时间内的历史延迟的判断方法为利用所述数值指标α<1,定 义指标β表示请求流量变化值,
α≤1&β<0.8
β为当前1min请求流量与历史1h平均流量比值,当β小于0.8时,认为当前服务为可能能力过剩需要 进行缩容操作。
所述微服务资源使用量为cpu使用量,所述历史使用量数据时间长度为2h,预测结果的所述未 来一段时间为未来20min,所述预测模块的输入通过所述监控模块查询获取历史值,所述预测算法为 XGBoost算法、Arima模型、RNN模型或LSTM模型。
所述特定算法具体为:在kubernetes集群中由resources limit配置指定资源使用量的限制量, 通过监控接口确定微服务当前实例数为n,n为正整数,将预测值平均到n个实例与所述实例启动时 所指定的资源使用量的限制量进行比较,达到某个扩容阈值时,进行扩容;将预测值平均到n-1个实 例时,资源使用量与限制量相比低于某个缩容阈值时,进行缩容,所述扩容与缩容设置阈值不同,若 计算出的所述所需扩缩容容器数目与现有实例数不等,则将微服务信息与计算出的所需扩缩容容器数 目传递给执行模块进行实际扩缩容操作。
所述扩容阈值设置为80%,所述缩容阈值设置为75%。
所述无状态服务使用deployment。
与传统的推荐系统的方法相比,本申请的扩容缩容方法具有以下优势:
1.本发明提出一种遵循MAPE(监控、分析、规划、执行)模式的基于微服务间调用依赖关系感知 的在线应用动态扩缩容方法。支持在请求流量变化时,基于微服务间调用依赖关系及应用延迟等信息, 分析微服务服务能力,并对指定微服务进行扩缩容。以保障服务质量同时提升资源使用率。
2.本发明提出一种判断微服务是否为瓶颈服务以及是否服务能力过剩的方法。能够通过分析微服 务间调用依赖关系及延迟,与历史数据对比,计算并判断当前微服务运行状态及服务能力,进而支持 对指定微服务进行扩缩容的操作。
附图说明
图1整体流程图;
图2调用关系示意图;
图3扩缩容数量规划算法图:
具体实施方式
以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限 于此实施例。
一种基于微服务调用依赖感知的在线服务动态扩缩容方法。所述方法遵循在微服务调度编排领域 中的常见的MAPE模式,即监控(monitor)、分析(analyze)、规划(plan)、执行(execute)。其中监控 模块主要用于获取资源使用情况、微服务请求流量、微服务延迟、微服务间调用依赖关系等信息。分 析模块根据微服务间调用关系与延迟情况分析微服务性能瓶颈,进一步根据瓶颈微服务的历史资源使 用信息预测未来一段时间资源使用情况。规划模块根据资源使用情况预测结果计算所需扩缩容容器数 目。执行模块根据计算结果执行扩缩容行为。所述方法通过以上步骤实现在用户流量实时变化时,准 确定位性能瓶颈微服务,执行相应扩缩容操作,图1为方法流程图。
监控模块
本发明所需要的应用运行数据包括:资源利用率(cpu、内存使用率),微服务请求调用延迟、请 求流量、微服务间调用关系。可以区分为集群资源使用数据和服务调用相关数据,前者可以利用 kubernetes集群监控和数据采集方式获取,后者则需要使用能够探测服务调用链的方法。
对于集群资源使用数据,使用node_export结合prometheus来采集。在kubernetes集群每个节 点部署node_export,用于将节点中容器运行数据以http形式上报。由prometheus抓取数据,存储 到时序数据库里并对外提供查询api。
对于服务调用相关数据,本发明采用服务网格方式获取。也可使用日志打点方式等其他服务链路 跟踪方式。服务网格是一种应用程序无感知的服务间通信基础设施,通过在每个容器边部署一种特殊 的“边车”(sidecar)容器,代理和控制服务间通信从而帮助解决服务发现、流量控制等问题,同时 监控和记录服务请求指标。本发明选用与kubernetes集群紧密结合的服务网格工具istio,istio 将通过“边车”容器获取的服务运行数据保存在内置的prometheus中。通过prometheus服务api, 可以获取服务请求QPS、服务请求延迟信息,可指定时间间隔和指标统计方式(avg,p90,p95等)。 通过内置的可观察性工具kialiapi,可以获取微服务结点信息以及节点间流量信息,获取部分信息 简单示例:
表1微服务节点信息示例
Service(微服务名) | id | Trafficin | Trafficout |
adservice | bd8cbaea90bd81009701a348380ad00f | 11.22 | 11.22 |
cartservice | c7698824b77b61f6a163e0232b1ce2f5 | 26.13 | 26.13 |
frontend | 4d5ba701c3c996e71835e87ea0615217 | 27.31 | 27.31 |
表2节点间流量信息示例
id | source | target | traffic |
e9abd9b0d3ae6b39c6a132a01e419066 | 4d5ba701c3c996e71835e87ea0615217 | bd8cbaea90bd81009701a348380ad00f | 10.53 |
b88b9a1503a302db0a06527518b5345b | 4d5ba701c3c996e71835e87ea0615217 | c7698824b77b61f6a163e0232b1ce2f5 | 23.6 |
通过上述信息,可以分析出微服务间调用关系和调用流量。监控模块每隔一定的时间间隔(默认30s),获取以上所述信息,传入分析模块进行数据分析。
分析模块
分析模块可以分为两个分析步骤。首先解决需要对哪个微服务进行扩缩容的问题,通过监控模块 中获取的监控信息发现应用中可能存在的瓶颈微服务(可能需要扩容)或服务能力过剩的微服务(可能 需要缩容)。之后对选定的微服务解决应怎样扩缩容的问题,本发明中使用短期时序预测的方法,根 据对资源使用量的预测值和当前值判断应该扩缩容的数目。
其中分析微服务瓶颈时,我们考虑微服务间调用依赖关系。对监控模块中获取的微服务节点信息 和节点间流量相结合,分析出微服务间调用关系,并进行拓扑排序。最终得到调用关系图及调用流量 比例,图2展示对微服务示例应用hipster-shop使用上述方法进行节点间调用关系和拓扑分析得到 的调用关系。
判断当前微服务是否为应用瓶颈可以理解为判断当前微服务是否服务能力不足。在在线应用中, 服务能力不足的主要表现为延迟过高。本发明中定义指标α指示当前微服务是否为应用瓶颈,α计算 方式由下述中公式给出。
f1=latp90(1min)-∑downstream(latp90(1min)*percent)
f2=latp90(60min)-∑downstream(latp90(60min)*percent)
α=f1/f2
α>threshold(1.2)
为了准确表示当前应用自身延迟,将监控到的服务延迟数据与下游服务延迟剥离,即将服务延迟 与下游服务延迟与请求比例乘积和作差,记做f。通过自身延迟判断服务质量时,本发明不使用固定 SQA的方法,而是采用更为灵活的比较方法,将微服务当前自身延迟与历史延迟的比较来判断当前服 务延迟是否不满足预期。当前自身延迟记做f1,历史自身延迟记做f2,α定义为1h(历史)内自身延 迟除以1min(当前)内自身延迟p90结果。当α大于某个阈值,默认为1.2时,认为当前服务为应用瓶 颈,可能需要进行扩容操作。
将微服务能力过剩转换为可观察指标,应当体现为微服务当前延迟处于较低水平,即当前资源可 以满足应用需求。在此前提之下,若微服务请求流量低于历史水平,则当前微服务可能能力过剩,即 当前所占用资源超出所需资源。
判断微服务是否能力过剩,首先应满足当前延迟不低于历史延迟,本发明中表述为α<=1。其次 满足请求流量有相应降低。我们定义指标β表示请求流量变化值,β为当前1min请求流量与历史1h 平均流量比值。当β小于某个阈值,默认为0.8时,认为当前服务为可能能力过剩需要进行缩容操作。 所述计算公式表示如下:
α≤1&β<0.8
前文所述为寻找应用中的瓶颈微服务和能力过剩微服务方法。在找到这些待操作的微服务之后, 需要一个短期预测方法来预测未来一段时间微服务所需资源,来决定微服务扩缩容数量。可以看做是 一个时序预测问题,预测模块输入为之前一段时间微服务资源使用量(此处为cpu使用量)组成的一组 时序数据,预测模块输出为短期的未来时序数据。本方法中取预测所需历史历史使用量数据时间长度 为2h,预测结果为未来20min资源使用量。预测模块的输入也需要通过监控模块查询获取历史值。
时序预测方法往往被分为两类传统方法和机器学习方法,传统方法包括arima、holt-winter模 型,对平稳序列和周期性较强序列有较好的预测结果,适用于对待预测特征有较清晰的理解的情况。 机器学习方法往往将时序预测问题转换为一类回归问题,构建监督学习模型进行训练和预测。以RNN、 LSTM为代表的的循环神经网络方法能够取得较好的预测效果,但其模型训练所需时间较长。XGBoost 是GBDT方法的工程实现,作为一种提升树模型在算法竞赛和工程中被广泛使用,在速度和效率上都 有较好的表现。本方法兼顾训练时间与准确性,选用XGBoost作为预测算法。
预测模块得到的结果为一个时序序列,表示未来一段时间资源使用量。为了保证服务质量,既用 户感知延迟不上升。我们选取预测序列中的最大值,表示未来20分钟微服务可能达到的资源使用量 最大值,记做v,作为主要指标传递给规划模块,进行下一步规划。
规划模块
规划模块根据资源使用情况预测结果计算所需扩缩容容器数目。规划模块中得到的输入信息是指 定微服务在未来20分钟内可能达到的资源使用量最大值。需要输出的值为此时该模块是否需要扩缩 容,以及具体扩缩容数量。此处结合阈值控制方法部分思想,规划模块输入为特定微服务所有实例资 源使用量和,通过监控接口可以得知微服务当前实例数为n。将预测值平均到n个实例,与实例启动 时所指定的限制资源使用量(在kubernetes集群中由resources limit配置指定)进行比较,达到 某个阈值(设置为80%)时,进行扩容。将预测值平均到n-1个实例时,资源使用量与限制量相比低于 某个阈值(设置为75%)时,进行缩容。此处扩容与缩容设置阈值不同的原因是为了避免小范围数据波动时无效扩缩容操作。上述方法具体计算过程可表示为图3的伪代码模式。
若计算出N与现有实例数不等,则将微服务信息与计算结果N传递给执行模块进行实际扩缩容操 作。
执行模块
以docker为代表的容器技术,是一种轻量级的虚拟化方案。其优势在于可以根据预先打包好的 容器镜像,快速自动化部署容器。容器编排工具kubernetes通过特定配置文件(yaml)中指明的部署 编排方式,自动化进行容器创建、部署,抽象成服务提供对内对外访问接口并解决服务发现、负载均 衡等问题。每个微服务可以看做kubernetes集群中一个服务(service)。Service是一个提供资源接 入点的抽象对象,可以与指定的容器集合(无状态服务中通常使用deployment)相关联。Deployment 往往根据一个容器镜像启动一个或多个容器实例,每个容器实例启动时申请指定数量的资源,容器实 例数量被称为副本数。调整deployment中的副本数即可实现微服务水平扩缩容。Kubernetes对外提 供命令行以及api接口修改副本数目。本发明中执行模块使用是上述kubernetes接口,指定实例数 进行动态扩缩容。
Claims (10)
1.一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述方法整体架构采用MAPE模式,即整个系统分为监控模块、分析模块、规划模块、执行模块四个部分:
所述监控模块首先读取运行数据,所述运行数据包括区分为集群资源使用数据和服务调用相关数据;其中,所述集群资源使用数据利用kubernetes集群监控和数据采集方式获取,使用node_export结合prometheus来采集,在kubernetes集群每个节点部署node_export,用于将节点中容器运行数据以http形式上报,由所述prometheus抓取数据,存储到时序数据库里并对外提供查询api;所述服务调用相关数据,采用服务链路跟踪方式获取,用于探测服务调用链,通过选用与所述kubernetes集群紧密结合的服务网格工具,将通过边车容器获取的服务运行数据保存在内置的所述prometheus中,通过所述prometheus服务所述api,指定时间间隔和指标统计方式获取服务请求QPS、服务请求延迟信息,通过内置的可观察性工具kialiapi,获取微服务结点信息以及节点间流量信息,分析出微服务间调用关系和调用流量,并每隔一定的时间间隔,将所获取以上所述信息,传入分析模块进行数据分析;
所述分析模块可以分为两个分析步骤:首先分析微服务通过监控模块中获取的监控信息发现应用中存在的可能需要扩容瓶颈微服务或服务能力过剩可能需要缩容的微服务,之后对选定的微服务扩容或缩容;
分析所述瓶颈微服务利用微服务间调用依赖关系进行,对监控模块中获取的多个微服务节点信息和节点间流量相结合,分析出各所述微服务间调用关系,并进行拓扑排序,最终得到调用关系图及调用流量比例,并以数值指标来定义各所述微服务是否为瓶颈微服务;分析所述微服务是否能力过剩通过两个条件实现,首先为当前延迟不低于一段定时历史时间内的历史延迟,其次为请求流量有相应降低,通过另一个数值指标反应器流量降低情况,当所述另一个数值指标达到特定阈值时认为当前服务为可能能力过剩需要进行缩容操作;
找到所述需要可能需要扩容瓶颈微服务或服务能力过剩可能需要缩容的微服务后,建立预测模块利用时序预测方法预测微服务扩缩容数量,所述预测模块输入为之前一段历史使用量数据时间的微服务资源使用量组成的一组时序数据,预测模块输出为未来一段时期的时序数据,所述预测模块得到的结果为一个时序序列,表示未来一段时间资源使用量,并选取预测序列中的最大值,表示所述未来一段时间微服务可能达到的资源使用量最大值,作为主要指标传递给规划模块;
规划模块根据资源使用情况预测结果的未来一段时间微服务可能达到的资源使用量最大值,通过特定算法计算所需扩缩容容器数目,所述规划模块中得到的输入信息是指定微服务在所述未来一段时间分钟内可能达到的资源使用量最大值,输出此时指定微服务是否需要扩缩容,以及具体扩缩容数量至执行模块;
执行模块使用kubernetes接口,根据规划模块输入的是否需要扩缩容,以及具体扩缩容数量进行动态扩缩容,每个所述微服务定义为kubernetes集群中一个服务作为一个提供资源接入点的抽象对象,可以与指定的容器集合相关联,所述指定的容器集合根据一个容器镜像启动一个或多个容器实例,每个容器实例启动时申请指定数量的资源,容器实例数量被称为副本数,调整指定的容器集合中的副本数即可实现微服务水平扩缩容,Kubernetes对外提供命令行以及api接口修改副本数目。
2.如权利要求1所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述服务链路跟踪方式为服务网格方式获取或日志打点方式,所述服务网格工具为Istio或ZipKin、pinpoint调用链监控工具。
3.如权利要求2所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述指定时间间隔和指标统计方式包括avg、p90或p95等。
4.如权利要求3所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述时间间隔为30s。
5.如权利要求4所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述数值指标定义为α,用于指示当前微服务是否为应用瓶颈,α计算方式为:
f1=latp90(1min)-∑downstream(latp90(1min)*percent)
f2=latp90(60min)-∑downstream(latp90(60min)*percent)
α=f1/f2
α>threshold(1.2)
其中f表示将监控到的服务延迟数据与下游服务延迟剥离后,将服务延迟与下游服务延迟与请求比例乘积和作差,f1为当前自身延迟,f2为历史自身延迟。
7.如权利要求6所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述微服务资源使用量为cpu使用量,所述历史使用量数据时间长度为2h,预测结果的所述未来一段时间为未来20min,所述预测模块的输入通过所述监控模块查询获取历史值,所述预测算法为XGBoost算法、Arima模型、RNN模型或LSTM模型。
8.如权利要求7所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述特定算法具体为:在kubernetes集群中由resources limit配置指定资源使用量的限制量,通过监控接口确定微服务当前实例数为n,n为正整数,将预测值平均到n个实例与所述实例启动时所指定的资源使用量的限制量进行比较,达到某个扩容阈值时,进行扩容;将预测值平均到n-1个实例时,资源使用量与限制量相比低于某个缩容阈值时,进行缩容,所述扩容与缩容设置阈值不同,若计算出的所述所需扩缩容容器数目与现有实例数不等,则将微服务信息与计算出的所需扩缩容容器数目传递给执行模块进行实际扩缩容操作。
9.如权利要求8所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述扩容阈值设置为80%,所述缩容阈值设置为75%。
10.如权利要求9所述的一种基于微服务调用依赖感知的在线应用动态扩缩容方法,其特征在于:所述无状态服务使用deployment。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010809999.XA CN112199150A (zh) | 2020-08-13 | 2020-08-13 | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010809999.XA CN112199150A (zh) | 2020-08-13 | 2020-08-13 | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112199150A true CN112199150A (zh) | 2021-01-08 |
Family
ID=74006124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010809999.XA Pending CN112199150A (zh) | 2020-08-13 | 2020-08-13 | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112199150A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988398A (zh) * | 2021-04-26 | 2021-06-18 | 北京邮电大学 | 一种微服务动态伸缩及迁移方法和装置 |
CN113032157A (zh) * | 2021-05-31 | 2021-06-25 | 睿至科技集团有限公司 | 一种服务器自动智能扩缩容方法及系统 |
CN113110914A (zh) * | 2021-03-02 | 2021-07-13 | 西安电子科技大学 | 一种基于微服务架构的物联网平台构建方法 |
CN113194029A (zh) * | 2021-05-08 | 2021-07-30 | 上海道客网络科技有限公司 | 自动识别和隔离服务网格边车故障的方法、系统、介质和设备 |
CN113342463A (zh) * | 2021-06-16 | 2021-09-03 | 北京百度网讯科技有限公司 | 计算机程序模块的容量调整方法、装置、设备和介质 |
CN113485830A (zh) * | 2021-07-01 | 2021-10-08 | 广东电网有限责任公司 | 一种电网监控系统微服务自动扩容方法 |
CN113535396A (zh) * | 2021-07-14 | 2021-10-22 | 的卢技术有限公司 | 一种云端应用无服务架构实现系统及方法 |
CN113568741A (zh) * | 2021-07-19 | 2021-10-29 | 咪咕文化科技有限公司 | 分布式系统的服务扩缩容方法、装置、设备及存储介质 |
CN113673822A (zh) * | 2021-07-15 | 2021-11-19 | 微梦创科网络科技(中国)有限公司 | 一种弹性调度方法及系统 |
CN114185734A (zh) * | 2021-11-26 | 2022-03-15 | 北京百度网讯科技有限公司 | 一种监控集群的方法、装置及电子设备 |
CN114428666A (zh) * | 2022-01-27 | 2022-05-03 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 一种基于cpu和内存占用率的智能弹性伸缩方法及系统 |
CN114615168A (zh) * | 2022-03-22 | 2022-06-10 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114650297A (zh) * | 2022-02-14 | 2022-06-21 | 浙江大学 | 一种多微服务调用环境下自适应自动缩放方法及系统 |
CN114726735A (zh) * | 2022-04-15 | 2022-07-08 | 海南大学 | 一种服务扩缩容方法及其系统 |
CN114944993A (zh) * | 2021-02-08 | 2022-08-26 | 中国电信股份有限公司 | 微服务的扩缩容方法和装置 |
CN115016952A (zh) * | 2022-08-10 | 2022-09-06 | 中邮消费金融有限公司 | 一种基于服务调用端的动态扩缩容方法及系统 |
CN115499511A (zh) * | 2022-11-18 | 2022-12-20 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种基于时空图神经网络负载预测的微服务主动伸缩方法 |
CN116643844A (zh) * | 2023-05-24 | 2023-08-25 | 方心科技股份有限公司 | 面向电力超算云资源自动扩展的智能化管理系统及方法 |
CN116893865A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 微服务实例调整方法、装置、电子设备及可读存储介质 |
WO2024002190A1 (zh) * | 2022-06-30 | 2024-01-04 | 中兴通讯股份有限公司 | 基于监控器的容器调整方法、设备及存储介质 |
WO2024045016A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 一种节点的配置方法、装置以及系统 |
CN117707523A (zh) * | 2024-02-05 | 2024-03-15 | 中铁四局集团有限公司 | 一种自定义组态可视化管理方法及管理应用平台 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180027080A1 (en) * | 2016-07-22 | 2018-01-25 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
CN110990159A (zh) * | 2019-12-25 | 2020-04-10 | 浙江大学 | 一种基于历史数据分析的容器云平台资源配额预测方法 |
CN111130908A (zh) * | 2019-12-31 | 2020-05-08 | 中信百信银行股份有限公司 | 基于调用流量分析预测的微服务动态聚合拆分系统 |
-
2020
- 2020-08-13 CN CN202010809999.XA patent/CN112199150A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180027080A1 (en) * | 2016-07-22 | 2018-01-25 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
CN110990159A (zh) * | 2019-12-25 | 2020-04-10 | 浙江大学 | 一种基于历史数据分析的容器云平台资源配额预测方法 |
CN111130908A (zh) * | 2019-12-31 | 2020-05-08 | 中信百信银行股份有限公司 | 基于调用流量分析预测的微服务动态聚合拆分系统 |
Non-Patent Citations (2)
Title |
---|
MEINA SONG,ETC: ""An Auto Scaling System for API Gateway Based on Kubernetes"", 《IEEE》 * |
徐琛杰 等: "" 面向微服务系统的运行时部署优化"", 《计算机应用与软件》 * |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114944993A (zh) * | 2021-02-08 | 2022-08-26 | 中国电信股份有限公司 | 微服务的扩缩容方法和装置 |
CN113110914A (zh) * | 2021-03-02 | 2021-07-13 | 西安电子科技大学 | 一种基于微服务架构的物联网平台构建方法 |
CN112988398B (zh) * | 2021-04-26 | 2022-08-26 | 北京邮电大学 | 一种微服务动态伸缩及迁移方法和装置 |
CN112988398A (zh) * | 2021-04-26 | 2021-06-18 | 北京邮电大学 | 一种微服务动态伸缩及迁移方法和装置 |
CN113194029A (zh) * | 2021-05-08 | 2021-07-30 | 上海道客网络科技有限公司 | 自动识别和隔离服务网格边车故障的方法、系统、介质和设备 |
CN113032157A (zh) * | 2021-05-31 | 2021-06-25 | 睿至科技集团有限公司 | 一种服务器自动智能扩缩容方法及系统 |
CN113032157B (zh) * | 2021-05-31 | 2021-08-24 | 睿至科技集团有限公司 | 一种服务器自动智能扩缩容方法及系统 |
CN113342463B (zh) * | 2021-06-16 | 2024-01-09 | 北京百度网讯科技有限公司 | 计算机程序模块的容量调整方法、装置、设备和介质 |
CN113342463A (zh) * | 2021-06-16 | 2021-09-03 | 北京百度网讯科技有限公司 | 计算机程序模块的容量调整方法、装置、设备和介质 |
CN113485830A (zh) * | 2021-07-01 | 2021-10-08 | 广东电网有限责任公司 | 一种电网监控系统微服务自动扩容方法 |
CN113535396B (zh) * | 2021-07-14 | 2023-08-15 | 西藏宁算科技集团有限公司 | 一种云端应用无服务架构实现系统及方法 |
CN113535396A (zh) * | 2021-07-14 | 2021-10-22 | 的卢技术有限公司 | 一种云端应用无服务架构实现系统及方法 |
CN113673822A (zh) * | 2021-07-15 | 2021-11-19 | 微梦创科网络科技(中国)有限公司 | 一种弹性调度方法及系统 |
CN113673822B (zh) * | 2021-07-15 | 2023-08-11 | 微梦创科网络科技(中国)有限公司 | 一种弹性调度方法及系统 |
CN113568741A (zh) * | 2021-07-19 | 2021-10-29 | 咪咕文化科技有限公司 | 分布式系统的服务扩缩容方法、装置、设备及存储介质 |
CN113568741B (zh) * | 2021-07-19 | 2024-05-10 | 咪咕文化科技有限公司 | 分布式系统的服务扩缩容方法、装置、设备及存储介质 |
CN114185734A (zh) * | 2021-11-26 | 2022-03-15 | 北京百度网讯科技有限公司 | 一种监控集群的方法、装置及电子设备 |
CN114185734B (zh) * | 2021-11-26 | 2023-11-14 | 北京百度网讯科技有限公司 | 一种监控集群的方法、装置及电子设备 |
CN114428666A (zh) * | 2022-01-27 | 2022-05-03 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 一种基于cpu和内存占用率的智能弹性伸缩方法及系统 |
CN114650297A (zh) * | 2022-02-14 | 2022-06-21 | 浙江大学 | 一种多微服务调用环境下自适应自动缩放方法及系统 |
CN114650297B (zh) * | 2022-02-14 | 2023-03-10 | 浙江大学 | 一种多微服务调用环境下自适应自动缩放方法及系统 |
CN114615168A (zh) * | 2022-03-22 | 2022-06-10 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114615168B (zh) * | 2022-03-22 | 2024-05-17 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114726735A (zh) * | 2022-04-15 | 2022-07-08 | 海南大学 | 一种服务扩缩容方法及其系统 |
WO2024002190A1 (zh) * | 2022-06-30 | 2024-01-04 | 中兴通讯股份有限公司 | 基于监控器的容器调整方法、设备及存储介质 |
CN115016952B (zh) * | 2022-08-10 | 2022-10-28 | 中邮消费金融有限公司 | 一种基于服务调用端的动态扩缩容方法及系统 |
CN115016952A (zh) * | 2022-08-10 | 2022-09-06 | 中邮消费金融有限公司 | 一种基于服务调用端的动态扩缩容方法及系统 |
WO2024045016A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 一种节点的配置方法、装置以及系统 |
CN115499511B (zh) * | 2022-11-18 | 2023-03-24 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种基于时空图神经网络负载预测的微服务主动伸缩方法 |
CN115499511A (zh) * | 2022-11-18 | 2022-12-20 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种基于时空图神经网络负载预测的微服务主动伸缩方法 |
CN116643844B (zh) * | 2023-05-24 | 2024-02-06 | 方心科技股份有限公司 | 面向电力超算云资源自动扩展的智能化管理系统及方法 |
CN116643844A (zh) * | 2023-05-24 | 2023-08-25 | 方心科技股份有限公司 | 面向电力超算云资源自动扩展的智能化管理系统及方法 |
CN116893865B (zh) * | 2023-09-11 | 2023-12-12 | 中移(苏州)软件技术有限公司 | 微服务实例调整方法、装置、电子设备及可读存储介质 |
CN116893865A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 微服务实例调整方法、装置、电子设备及可读存储介质 |
CN117707523A (zh) * | 2024-02-05 | 2024-03-15 | 中铁四局集团有限公司 | 一种自定义组态可视化管理方法及管理应用平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199150A (zh) | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 | |
Wu | Multi-objective decision-making for mobile cloud offloading: A survey | |
US8543993B2 (en) | Compiler, compile method, and processor core control method and processor | |
CN107832129B (zh) | 一种面向分布式流计算系统的动态任务调度优化方法 | |
Enzai et al. | A taxonomy of computation offloading in mobile cloud computing | |
CN103593242A (zh) | 基于Yarn框架的资源共享控制系统 | |
CN102929725A (zh) | 信号处理并行计算软件的动态重配置方法 | |
Ding et al. | COPA: A combined autoscaling method for kubernetes | |
CN110086855A (zh) | 基于蚁群算法的Spark任务智能感知调度方法 | |
CN103699433A (zh) | 一种于Hadoop平台中动态调整任务数目的方法及系统 | |
César et al. | Modeling master/worker applications for automatic performance tuning | |
CN110717574A (zh) | 一种神经网络运行方法、装置及异构智能芯片 | |
Goodarzy et al. | Resource management in cloud computing using machine learning: A survey | |
KR101770736B1 (ko) | 응용프로그램의 질의 스케쥴링을 이용한 시스템의 소모전력 절감 방법 및 그 방법을 이용하여 소모전력을 절감하는 휴대단말기 | |
CN110990154A (zh) | 一种大数据应用优化方法、装置及存储介质 | |
Du et al. | Dynamic scheduling with process migration | |
Huang et al. | AoDNN: An auto-offloading approach to optimize deep inference for fostering mobile web | |
Abdullah et al. | A reliable, TOPSIS-based multi-criteria, and hierarchical load balancing method for computational grid | |
CN108574600B (zh) | 云计算服务器的功耗和资源竞争协同控制的服务质量保障方法 | |
Xiao et al. | Dscaler: A horizontal autoscaler of microservice based on deep reinforcement learning | |
CN114116157A (zh) | 一种边缘环境下多边缘集群云结构及负载均衡调度方法 | |
Zhang et al. | Autrascale: an automated and transfer learning solution for streaming system auto-scaling | |
Chhabra et al. | Qualitative parametric comparison of load balancing algorithms in parallel and distributed computing environment | |
CN115185683A (zh) | 一种基于动态优化模型的云平台流处理资源分配方法 | |
Koch et al. | SMiPE: estimating the progress of recurring iterative distributed dataflows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210108 |