微服务健康度评估方法、弹性伸缩方法及架构转让专利

申请号 : CN201810401509.5

文献号 : CN108683557B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高英龙信文谢杰

申请人 : 华南理工大学

摘要 :

本发明公开了微服务健康度评估方法、弹性伸缩方法及架构,微服务健康度评估方法包括:根据服务中每个服务实例的请求错误比例确定每个服务实例的实例健康值;根据服务中每个服务实例的运行环境的CPU使用率以及SWAP占用确定每个服务实例的环境健康值;根据所述每个服务实例的实例健康值和环境健康值确定每个服务实例的综合健康值;将所述服务中所有综合健康值中的最小值作为所述服务的服务健康值。本发明能够更直观地表示微服务的健康程度,对服务的健康程度评价更全面,能够实现按需申请资源,有效降低了资源消耗,显著降低了人工成本。

权利要求 :

1.微服务健康度评估方法,其特征在于,包括如下步骤:根据服务中每个服务实例的请求错误比例确定每个服务实例的实例健康值;

根据服务中每个服务实例的运行环境的CPU使用率以及SWAP占用确定每个服务实例的环境健康值;

根据所述每个服务实例的实例健康值和环境健康值确定每个服务实例的综合健康值;

将所述服务中所有综合健康值中的最小值作为所述服务的服务健康值;

所述环境健康值He由如下公式得到:Kc+Ks=1;

其中su是SWAP分区占用的容量,S是SWAP分区总容量,C是关于CPU使用率cu的分段函数,Kc和Ks分别是CPU占用率和SWAP占用的权值。

2.根据权利要求1所述的微服务健康度评估方法,其特征在于:所述实例健康值Hi=100‑F,其中F是请求错误比例。

3.根据权利要求2所述的微服务健康度评估方法,其特征在于:所述综合健康值h由如下公式得到:h=kiHi+keHe,

ki+ke=1;

其中,ki和ke分别是实例健康值和环境健康值的权值。

4.根据权利要求3所述的微服务健康度评估方法,其特征在于:所述服务健康值 其中n为所述服务中服务实例的数量。

5.微服务弹性伸缩架构,其特征在于:用于执行权利要求1~4任一项所述的微服务健康度评估方法,具体包括:

服务模块:包括多个由服务实例和所述服务实例的运行环境构成的服务节点,所述服务节点在根据相应请求处理业务的同时,会将服务实例和运行环境的监控数据发送到监控模块;

负载均衡模块:用于根据预设的均衡策略将请求分配到服务节点上;

监控模块:用于收集服务模块发送来的监控数据并计算实例健康值、环境健康值以及服务健康值,然后将计算得到的所述健康值发送到节点管理模块;

节点管理模块:用于为实例健康值设定期望范围下限值,为环境健康值设定期望范围下限值,为服务健康值设定期望范围上限值及下限值;还包括:节点部署模块,用于在所述服务健康值低于期望范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境健康值低于期望范围下限值时部署新的服务节点;

节点回收模块,用于在所述服务健康值高于期望范围上限值时回收服务节点,在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境健康值低于期望范围下限值时回收所述服务实例的服务节点;

所述监控数据包括请求错误比例F、CPU使用率cu、SWAP分区占用的容量su。

6.根据权利要求5所述的微服务弹性伸缩架构,其特征在于:所述节点回收模块在所述服务健康值高于期望范围上限值时回收综合健康值最低的服务节点。

7.微服务弹性伸缩方法,其特征在于,包括权利要求1~4任一项所述的微服务健康度评估方法,以及为实例健康值设定的期望范围下限值、为环境健康值设定的期望范围下限值、为服务健康值设定的期望范围上限值及下限值,具体包括如下步骤:S210:判断服务健康值是否低于期望范围下限值,若是则执行步骤S220,否则执行步骤S230;

S220:部署新的服务节点,返回执行S210;

S230:判断服务健康值是否高于期望范围上限值,若是则执行步骤S240,否则执行步骤S250;

S240:回收服务节点,返回执行S210;

S250:判断是否存在服务实例的实例健康值低于期望范围下限值,若是则执行步骤S260,否则执行步骤S270;

S260:部署新的服务节点,回收所述实例健康值低于期望范围下限值的服务节点,返回执行S210;

S270:判断是否存在服务实例的环境健康值低于期望范围下限值,若是则执行步骤S280,否则返回执行步骤210;

S280:部署新的服务节点,回收所述环境健康值低于期望范围下限值的服务节点,返回执行S210。

8.根据权利要求7所述的微服务弹性伸缩方法,其特征在于:所述步骤S240中回收的服务节点优先选择综合健康值最低的。

说明书 :

微服务健康度评估方法、弹性伸缩方法及架构

技术领域

[0001] 本发明属于微服务管理技术领域,具体涉及微服务健康度评估方法、弹性伸缩方法及架构。

背景技术

[0002] 微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相
互通讯。
[0003] 微服务架构的系统运行过程中可以收集到微服务自身的监控数据和微服务运行环境的监控数据,目前对监控数据只是进行展示,各种的数据并不能直观地反映微服务的
健康程度:
[0004] 1、微服务运行环境的监控数据或者微服务自身的监控数据并不能全面地表示微服务的健康程度。
[0005] 2、众多监控数据参数,如CPU使用率、内存占用、磁盘读写、请求频率、接入流量、错误比例等,增加了对微服务健康程度形成直观判断的难度。
[0006] 3、人工通过查看系统的监控数据才能定位存在异常的服务或者系统瓶颈,增加系统运维的人工成本。
[0007] 4、系统自身无法判断某个服务的健康程度,因而不能自动的实现服务的拓展,即在服务负载升高接近瓶颈时自动申请新的资源部署新的服务实例,也不能在服务资源过剩
时回收服务实例。

发明内容

[0008] 针对现有技术中所存在的不足,本发明提供了一种能够更直观地表示微服务的健康程度、对服务的健康程度评价更全面、能够实现按需申请资源、有效降低资源消耗、显著
降低了人工成本的微服务健康度评估方法、弹性伸缩方法及架构。
[0009] 微服务健康度评估方法,包括如下步骤:
[0010] 根据服务中每个服务实例的请求错误比例确定每个服务实例的实例健康值;
[0011] 根据服务中每个服务实例的运行环境的CPU使用率以及SWAP占用确定每个服务实例的环境健康值;
[0012] 根据所述每个服务实例的实例健康值和环境健康值确定每个服务实例的综合健康值;
[0013] 将所述服务中所有综合健康值中的最小值作为所述服务的服务健康值。
[0014] 进一步地,所述实例健康值Hi=100‑F,其中F是请求错误比例。
[0015] 进一步地,所述环境健康值He由如下公式得到:
[0016]
[0017]
[0018] Kc+Ks=1;
[0019] 其中su是SWAP分区占用的容量,S是SWAP分区总容量,C是关于CPU使用率cu的分段函数,Kc和Ks分别是CPU占用率和SWAP占用的权值。
[0020] 进一步地,所述综合健康值h由如下公式得到:
[0021] h=kiHi+keHe,
[0022] ki+ke=1;
[0023] 其中,ki和ke分别是实例健康值和环境健康值的权值。
[0024] 进一步地,所述服务健康值 其中n为所述服务中服务实例的数量。
[0025] 微服务弹性伸缩架构,包括前述任一种微服务健康度评估方法,具体包括:
[0026] 服务模块:包括多个由服务实例和所述服务实例的运行环境构成的服务节点,所述服务节点在根据相应请求处理业务的同时,会将服务实例和运行环境的监控数据发送到
监控模块;
[0027] 负载均衡模块:用于根据预设的均衡策略将请求分配到服务节点上;
[0028] 监控模块:用于收集服务模块发送来的监控数据并计算实例健康值、环境健康值以及服务健康值,然后将计算得到的所述健康值发送到节点管理模块;
[0029] 节点管理模块:用于为实例健康值设定期望范围下限值,为环境健康值设定期望范围下限值,为服务健康值设定期望范围上限值及下限值;还包括:
[0030] 节点部署模块,用于在所述服务健康值低于期望范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望范围下限值时、
在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境健康值低于期
望范围下限值时部署新的服务节点;
[0031] 节点回收模块,用于在所述服务健康值高于期望范围上限值时回收服务节点,在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望
范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境
健康值低于期望范围下限值时回收所述服务实例的服务节点;
[0032] 所述监控数据包括请求错误比例F、CPU使用率cu、SWAP分区占用的容量su。
[0033] 进一步地,所述节点回收模块在所述服务健康值高于期望范围上限值时回收综合健康值最低的服务节点。
[0034] 微服务弹性伸缩方法,包括前述任一种微服务健康度评估方法,以及为实例健康值设定的期望范围下限值、为环境健康值设定的期望范围下限值、为服务健康值设定的期
望范围上限值及下限值,具体包括如下步骤:
[0035] S210:判断服务健康值是否低于期望范围下限值,若是则执行步骤S220,否则执行步骤S230;
[0036] S220:部署新的服务节点,返回执行S210;
[0037] S230:判断服务健康值是否高于期望范围上限值,若是则执行步骤S240,否则执行步骤S250;
[0038] S240:回收服务节点,返回执行S210;
[0039] S250:判断是否存在服务实例的实例健康值低于期望范围下限值,若是则执行步骤S260,否则执行步骤S270;
[0040] S260:部署新的服务节点,回收所述实例健康值低于期望范围下限值的服务节点,返回执行S210;
[0041] S270:判断是否存在服务实例的环境健康值低于期望范围下限值,若是则执行步骤S280,否则返回执行步骤210;
[0042] S280:部署新的服务节点,回收所述环境健康值低于期望范围下限值的服务节点,返回执行S210。
[0043] 进一步地,所述步骤S240中回收的服务节点优先选择综合健康值最低的。
[0044] 相比于现有技术,本发明具有如下有益效果:
[0045] 1、本发明引入了健康值的概念,通过请求错误比例、CPU使用率以及SWAP占用等监控数据设定实例健康值、环境健康值、综合健康值以及服务健康值,相对于原始监控数据,
能够更为直观地表示微服务的健康程度;又由于服务健康值综合考虑了服务实例和服务的
运行环境,对服务的健康程度评估更为全面;还通过设定指标的重视倾向来优化对健康程
度的判断,可根据不同的运行目标和状况进行调整,提高服务的适应性;
[0046] 2、通过计算得到健康值,系统可对微服务健康程度进行判断,根据健康值设定上下限阈值对系统本身进行拓展或回收过剩的资源,实现按需申请资源,可以有效降低资源
消耗;
[0047] 3、实现了系统自愈性,无需人工查看系统的监控数据来定位存在异常的服务或者系统瓶颈,在保持系统高可用的同时显著降低了系统运维过程中所需的人工成本。

附图说明

[0048] 图1为本发明微服务健康度评估方法的流程示意框图;
[0049] 图2为本发明微服务健康度评估方法的示意图;
[0050] 图3为本发明微服务弹性伸缩架构的结构示意图;
[0051] 图4为本发明微服务弹性伸缩方法的流程示意框图。

具体实施方式

[0052] 为了使发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
[0053] 微服务健康度评估方法,如图1、2所示,包括如下步骤:
[0054] S110:根据服务中每个服务实例的请求错误比例确定每个服务实例的实例健康值;
[0055] S120:根据服务中每个服务实例的运行环境的CPU使用率以及SWAP占用确定每个服务实例的环境健康值;
[0056] S130:根据所述每个服务实例的实例健康值和环境健康值确定每个服务实例的综合健康值;
[0057] S140:将所述服务中所有综合健康值中的最小值作为所述服务的服务健康值。
[0058] 所述请求错误比例、CPU使用率以及SWAP占用都来自监控数据。所述步骤S110和S120并没有明确的顺序之分,可以同时进行也可以交换顺序。
[0059] 实例健康值,即服务实例的健康值,用于评估服务实例自身的健康程度。对服务实例的监控可以收集到接入的流量变化、请求成功数、请求超时数、请求短路/熔断数以及请
求错误比例等数据。在微服务架构中请求会负载均衡到各个服务实例进行处理,由于当请
求错误比例高的时候,会大大降低系统的可用性,因此本方案选取请求错误比例作为评估
服务实例的唯一标准。
[0060] 环境健康值,即服务实例运行环境的健康值,用于评估服务实例运行环境的健康程度。运行环境即服务实例部署运行的环境,绝大多数情况下为Linux系统,对Linux系统的
监控可以获取其CPU使用率、内存占用、磁盘IO等数据。鉴于Linux内存占用会一直比较高,
而并不是所有系统都会发生磁盘IO,所以选取CPU使用率和SWAP占用作为评估标准。
[0061] 综合健康值,即综合服务实例健康值,用于评估服务的健康程度。在考虑是否要新增、回收、替换某个服务实例时,需要综合考虑服务实例和实例运行环境的健康程度。
[0062] 服务健康值,用于评估整个服务的健康程度。由于在微服务架构系统内,一个服务通常会部署多个服务实例,且由于综合健康值是服务的最小短板,也是服务的瓶颈所在,因
此本发明选择同一服务中综合健康值的最小值作为服务健康值来评估整个服务的健康程
度。当服务中仅有一个服务实例时,所述服务健康值也就是综合健康值。
[0063] 本发明引入了健康值的概念,通过请求错误比例、CPU使用率以及SWAP占用等监控数据设定实例健康值、环境健康值、综合健康值以及服务健康值,相对于原始监控数据,能
够更为直观地表示微服务的健康程度;又由于服务健康值综合考虑了服务实例和服务的运
行环境,对服务的健康程度评估更为全面。
[0064] 作为进一步优化,所述步骤S110中的实例健康值Hi=100‑F,其中F是指通过监控得到的请求错误比例。请求错误比例是一个百分比数,如10%,而通过监控收集到的数据F
则为10。
[0065] 作为进一步优化,所述步骤S120中的环境健康值He由如下公式得到:
[0066]
[0067]
[0068] Kc+Ks=1;
[0069] 其中su是SWAP分区占用的容量,S是SWAP分区总容量,C是关于CPU使用率cu的分段函数,Kc和Ks分别是CPU占用率和SWAP占用的权值。
[0070] 所述权值可根据具体情况进行预设或调整,权值越大代表越重视其指标;对于某些较为依赖的CPU的服务,可以设置Kc较大,健康值对于CPU的使用会比较敏感;对于某些较
为依赖SWAP的服务,可以设置Ks较大,健康值对于SWAP的占用会比较敏感。
[0071] 作为进一步优化,所述步骤S130中的综合健康值h由如下公式得到:
[0072] h=kiHi+keHe,
[0073] ki+ke=1;
[0074] 其中,ki和ke分别是实例健康值和环境健康值的权值。
[0075] 所述权值可根据具体情况进行预设或调整,权值越大代表越重视其指标;对于请求频率高的服务可以设置较大的ki,因为即使较小的错误比例在高请求频率的情况下错误
次数也会很多,这是不能忍受的;而对于请求频率低的服务设置ke较大,能够知道服务运行
的性能消耗。
[0076] 作为进一步优化,所述步骤S140中的服务健康值 其中n为所述服务中服务实例的数量。服务健康值选择所述服务的所有服务实例中的最小综合健康值。
[0077] 微服务弹性伸缩架构,如图3所示,包括前述任一种微服务健康度评估方法,具体包括:
[0078] 服务模块:包括多个由服务实例和所述服务实例的运行环境构成的服务节点,所述服务节点在根据相应请求处理业务的同时,会将服务实例和运行环境的监控数据发送到
监控模块;
[0079] 负载均衡模块:用于根据预设的均衡策略将请求分配到服务节点上;
[0080] 监控模块:用于收集服务模块发送来的监控数据并计算实例健康值、环境健康值以及服务健康值(即执行所述微服务健康度评估方法),然后将计算得到的所述健康值发送
到节点管理模块;
[0081] 节点管理模块:用于为实例健康值设定期望范围下限值,为环境健康值设定期望范围下限值,为服务健康值设定期望范围上限值及下限值;还包括:
[0082] 节点部署模块,用于在所述服务健康值低于期望范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望范围下限值时、
在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境健康值低于期
望范围下限值时部署新的服务节点;
[0083] 节点回收模块,用于在所述服务健康值高于期望范围上限值时回收服务节点,在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的实例健康值低于期望
范围下限值时、在所述服务健康值处于期望范围上限值及下限值之间且有服务实例的环境
健康值低于期望范围下限值时回收所述服务实例的服务节点;
[0084] 所述监控数据包括请求错误比例F、CPU使用率cu、SWAP分区占用的容量su。
[0085] 所述微服务健康度评估方法中的计算操作在所述监控模块中进行,其中S110和S120并没有明确的顺序之分,可以同时进行也可以交换顺序。
[0086] 作为进一步优化,所述节点回收模块在所述服务健康值高于期望范围上限值时回收综合健康值最低的服务节点。
[0087] 在这种情况下,负载均衡策略使得每个服务实例的负载大小或接入请求的数量是基本一样的,相差并不会很大,因而可以推断服务健康值的不同取决于运行环境健康值影
响,综合健康值低可能反映较差的运行环境性能,此时回收综合健康值最低的服务节点相
对来说会比较好。
[0088] 微服务弹性伸缩方法,如图4所示,包括前述任一种微服务健康度评估方法,以及为实例健康值设定的期望范围下限值、为环境健康值设定的期望范围下限值、为服务健康
值设定的期望范围上限值及下限值,具体包括如下步骤:
[0089] S210:判断服务健康值是否低于服务健康值期望范围下限值,若是则执行步骤S220,否则执行步骤S230;
[0090] S220:部署新的服务节点,返回执行S210;
[0091] S230:判断服务健康值是否高于服务健康值期望范围上限值,若是则执行步骤S240,否则执行步骤S250;
[0092] S240:回收服务节点,返回执行S210;
[0093] S250:判断是否存在服务实例的实例健康值低于期望范围下限值,若是则执行步骤S260,否则执行步骤S270;
[0094] S260:部署新的服务节点,回收所述实例健康值低于期望范围下限值的服务节点,返回执行S210;
[0095] S270:判断是否存在服务实例的环境健康值低于期望范围下限值,若是则执行步骤S280,否则返回执行步骤210;
[0096] S280:部署新的服务节点,回收所述环境健康值低于期望范围下限值的服务节点,返回执行S210。
[0097] 本发明分别定义了Hi和He的期望范围,当它们不在期望范围内的时候,可以认为它们运行存在异常;请求进行负载均衡后,各个服务实例以及服务器的负载应该是几乎一样
的(一个服务器部署一个服务实例,docker容器部署服务实例同样适用),因而各个服务实
例计算得到的Hi相差很小,He也相差很小,则当其中出现Hi或He偏离了其他的Hi或He值时,可
以认为服务实例或者运行环境出现异常。定位到存在问题的服务实例,可以部署新的服务
实例替换原有异常服务实例,而对于存在问题的运行环境,需要根据实际问题制定策略,如
果服务实例部署在docker容器内,服务实例在替换的同时也替换了其运行环境。
[0098] 本发明在微服务架构系统中,还定义了服务健康值Hs的期望健康值范围,当计算得到的服务健康值小于期望健康值范围下限时,可以认为系统需要进行扩展,需要部署新
的服务实例;当计算得到的服务健康值大于期望健康值上限时,可以认为服务实例的数量
过多,资源过剩了,需要回收服务实例,选取h值最小的服务实例进行回收。
[0099] 本发明通过计算得到健康值,系统可对微服务健康程度进行判断,根据健康值设定上下限阈值对系统本身进行拓展或回收过剩的资源,实现按需申请资源,有效降低了资
源消耗;还实现了系统自愈性,无需人工查看系统的监控数据来定位存在异常的服务或者
系统瓶颈,在保持系统高可用的同时显著降低了系统运维过程中所需的人工成本。
[0100] 作为进一步优化,所述步骤S240中回收的服务节点优先选择综合健康值最低的。
[0101] 以下通过具体的实施例来对本发明进行进一步说明:
[0102] 一种微服务弹性伸缩架构,如图3所示,当接收到调用特定服务的请求时,路由模块将请求路由到服务中;
[0103] 监控模块收集到的监控数据包括服务实例的请求错误比例、运行环境(以Linux操作系统为例子)的CPU使用率和SWAP占用量。
[0104] 假设图2中的三个服务实例的请求错误比例分别为0、5、7,则实例健康值分别为:
[0105] Hi1=100‑0=100,
[0106] Hi2=100‑5=95,
[0107] Hi3=100‑7=93;
[0108] 假设CPU使用率分别为50、47、60,SWAP占用比例为0、5、0,对两项指标同样重视,即Kc=Ks=0.5,则环境健康值:
[0109] cu1=50,cu2=47,cu3=60;
[0110] He1=0.5×50+0.5×100=75,
[0111] He2=0.5×47+0.5×95=71,
[0112] He3=0.5×60+0.5×100=80;
[0113] 假设对服务的评估过程中,对实例的健康程度和运行环境的健康程度两项指标同样重视,即ki=ke=0.5,则:
[0114] h1=0.5×100+0.5×75=87.5,
[0115] h2=0.5×95+0.5×71=83,
[0116] h3=0.5×93+0.5×80=86.5;
[0117] 则服务健康值:
[0118]
[0119] 上面Kc、Ks、ki和ke的选取只是作为例子,应用到微服务架构系统中应根据实际情况进行选取。
[0120] 以上所述仅为本发明的优选实施方式,本发明的保护范围并不仅限于上述实施方式,凡是属于本发明原理的技术方案均属于本发明的保护范围。对于本领域的技术人员而
言,在不脱离本发明的原理的前提下进行的若干改进,这些改进也应视为本发明的保护范
围。