一种微服务动态伸缩及迁移方法和装置与流程

文档序号:25543449发布日期:2021-06-18 20:40
一种微服务动态伸缩及迁移方法和装置与流程

本发明涉及云计算技术领域,特别是涉及一种微服务动态伸缩及迁移方法和装置。



背景技术:

随着信息技术的不断发展,云计算技术应用的领域也越来越广泛。多个领域都面临着大量数据处理任务的需求,如数据过滤、目标跟踪、图像分类等。但是单个设备的存储和计算资源无法支撑这些复杂的计算任务。因此,可以结合云计算技术,整合多个设备的资源来提供强大的计算服务。在传统的云计算环境中,云服务由可能远离最终用户的集中数据中心提供。然而,由于一些环境下,如救灾环境中的网络时断时连以及距离过远的问题,云服务的可靠性和质量无法得到保证。联邦云是解决这样动态复杂场景下的新型云计算结构,它由分布式子云组成,每个子云平台可以看作一个集群。联邦云可以动态调整子云的数量以满足任务需求,并且子云可以跟随用户以保证服务质量,但是结构的灵活多变性也给服务稳定可靠性带了新的挑战。

基于微服务架构设计的系统通常由相互通信的小型微服务组成,每个微服务可以独立开发、部署、运维,提高了应用开发管理的效率。联邦云环境中微服务应用由多个相互通信的服务组成,并且分布式部署在不同地区的子云上。由于服务请求量、子云位置、网络状态等环境动态变化,微服务的服务质量也随之波动。服务部署时设置的副本数量可能满足不了临时激增的用户需求,并且随着用户或者子云移动,微服务之间的通信延迟随之变化,进一步增加了微服务故障的概率。传统的单云平台服务保障技术难以适应联邦云平台服务能力大规模快速变化的情况。因此,如何在复杂动态的多云环境下保障云服务持续可靠提供问题亟需解决。



技术实现要素:

本发明实施例的目的在于提供一种微服务动态伸缩及迁移方法和装置,以提高微服务的可靠性。具体技术方案如下:

第一方面,本发明实施例提供了一种微服务动态伸缩及迁移方法,包括:

收集每个微服务的运行状态信息,所述运行状态信息包括所述微服务的调用信息和资源使用信息;

针对各个微服务,根据所述微服务的调用信息计算第一预设时间范围内所述微服务的平均调用延迟;如果所述平均调用延迟满足预设条件,则将所述微服务标记为待优化微服务;

根据所述微服务的资源使用信息,计算第二预设时间范围的平均资源利用率;如果所述平均资源利用率大于第一预设阈值或者小于第二预设阈值,则将所述微服务标记为待优化微服务;

根据不同微服务的调用信息,确定微服务之间的亲和度,所述亲和度用于表示不同微服务之间的依赖性;

针对所述待优化服务,获取所述待优化服务对应的目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口;并当所述目标资源利用率、所述当前资源利用率和所述容忍度满足调整条件时,根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,计算所述待优化服务对应的目标副本数;

针对各个待优化微服务,根据微服务之间的亲和度,将与所述待优化微服务之间亲和度最高的其他微服务作为所述待优化微服务的迁移服务,所述迁移服务用于表示将所述待优化微服务迁移至所述其他微服务所在的节点上;

利用所述目标副本数进行扩容,或者,利用所述目标副本数进行缩容;

利用所述迁移服务进行迁移操作。

可选的,所述调用信息包括所述微服务在各个时刻的调用延迟;

所述根据所述微服务的调用信息计算第一预设时间范围内所述微服务的平均调用延迟,包括:

获得所有调用延迟中值最小的第一比例的调用延迟;

计算值最小的第一比例的调用延迟的第一平均调用延迟;

获得所有调用延迟中值最小的第二比例的调用延迟;

计算值最小的第二比例的调用延迟的第二平均调用延迟,所述第二比例小于所述第一比例;

所述如果所述平均调用延迟满足预设条件,则将所述微服务标记为待优化微服务,包括:

如果所述第二平均调用延迟与所述第一平均调用延迟满足预设关系,则将所述微服务标记为待优化微服务。

可选的,所述如果所述第二平均调用延迟与所述第一比例的调用延迟的比值满足预设关系,则将所述微服务标记为待优化微服务,包括:

如果l10>l50*2,或者,l10<l50*1.2,则将所述微服务标记为待优化微服务,其中,所述l10为所述第二平均调用延迟,所述l50为所述第一平均调用延迟。

可选的,所述根据所述微服务的资源使用信息,计算第二预设时间范围的平均资源利用率,包括:

统计所述第二预设时间范围内所述微服务的中央处理单元cpu平均使用量、内存使用量、微服务的cpu请求数以及内存请求数;

通过公式:计算cpu利用率,以及通过公式:计算内存利用率;

其中,usagec表示cpu平均使用量,usagem表示内存使用量,requestedc表示cpu请求数,requestedm表示内存请求数。

可选的,所述根据不同微服务的调用信息,确定微服务之间的亲和度,包括:

根据不同微服务的调用信息,通过公式确定微服务之间的亲和度;

其中,affia,b表示微服务a和微服务b的亲和度,m表示所有微服务交换的数据量,表示微服务a的服务实例i和微服务b的服务实例j之间交换的数据量,freq表示所有微服务之间交互的次数,表示微服务a的服务实例i和微服务b的服务实例j之间交互的次数。

可选的,所述当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,所述目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率

所述调整条件包括:或者,其中,d表示容忍度;

所述根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,计算所述待优化服务对应的目标副本数,包括:

根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,通过如下公式计算所述待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,wo表示扩容窗口,replicacur表示当前副本数;

所述利用所述目标副本数进行扩容,包括:

将当前副本数的数量增加至所述目标副本数。

可选的,所述当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,所述目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率

所述调整条件包括:或者,

所述根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,计算所述待优化服务对应的目标副本数,包括:

根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,通过如下公式计算所述待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,replicacur表示当前副本数;wi表示缩容窗口;

所述利用所述目标副本数进行缩容,包括:

将当前副本数的数量减小至所述目标副本数。

可选的,所述利用所述目标副本数进行扩容,或者,利用所述目标副本数进行缩容;利用所述迁移服务进行迁移操作,包括:

将包括所述目标副本数和所述迁移服务的调整策略,转换为微服务调整命令;

执行所述微服务调整命令以进行微服务调整。

第二方面,本发明实施例提供了一种微服务动态伸缩及迁移装置,包括:

收集模块,用于收集每个微服务的运行状态信息,所述运行状态信息包括所述微服务的调用信息和资源使用信息;

第一计算模块,用于针对各个微服务,根据所述微服务的调用信息计算第一预设时间范围内所述微服务的平均调用延迟;如果所述平均调用延迟满足预设条件,则将所述微服务标记为待优化微服务;根据所述微服务的资源使用信息,计算第二预设时间范围的平均资源利用率;如果所述平均资源利用率大于第一预设阈值或者小于第二预设阈值,则将所述微服务标记为待优化微服务;

第一确定模块,用于根据不同微服务的调用信息,确定微服务之间的亲和度,所述亲和度用于表示不同微服务之间的依赖性;

第二计算模块,用于针对所述待优化服务,获取所述待优化服务对应的目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口;并当所述目标资源利用率、所述当前资源利用率和所述容忍度满足调整条件时,根据所述目标资源利用率、所述当前资源利用率、所述容忍度、所述当前副本数以及所述调整窗口,计算所述待优化服务对应的目标副本数;

第二确定模块,用于针对各个待优化微服务,根据微服务之间的亲和度,将与所述待优化微服务之间亲和度最高的其他微服务作为所述待优化微服务的迁移服务,所述迁移服务用于表示将所述待优化微服务迁移至所述其他微服务所在的节点上;

处理模块,用于利用所述目标副本数进行扩容,或者,利用所述目标副本数进行缩容;利用所述迁移服务进行迁移操作。

第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。

本发明实施例还一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面所述的方法步骤。

本发明实施例有益效果:

本发明实施例提供的微服务动态伸缩及迁移方法和装置,通过收集每个微服务的运行状态信息,并统计时间范围内,也即一段时间内微服务的平均调用延迟和平均资源利用率,基于一段时间内的信息确定微服务是否为待优化的服务,避免根据微服务的瞬时信息频繁地调整微服务而造成的服务抖动;且当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数,能够结合资源利用率和调整窗口计算目标副本数;同时,能够根据微服务之间的亲和度进行服务迁移,能够将微服务迁移至与该微服务亲和度最高的微服务所在的节点上,亲和度越高则依赖性越强,即将微服务迁移至与该微服务依赖性强的服务所在的节点上,能够降低服务延迟。总的来讲,本发明实施例能够提高微服务的可靠性。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。

图1为本发明实施例提供的微服务动态伸缩及迁移方法的流程图;

图2为本发明实施例提供的亲和度模型的示意图;

图3为本发明实施例提供的微服务自适应调整机制的系统结构图;

图4为本发明实施例提供的微服务自适应调整机制的流程图;

图5为本发明实施例提供的微服务动态伸缩及迁移方法的应用流程图;

图6为本发明实施例提供的微服务动态伸缩及迁移装置的结构示意图;

图7为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

基于微服务运行状态的动态伸缩及迁移是避免服务故障的一个重要手段,可以采用被动调整的方式,当节点崩溃或网络故障后,服务已经出现故障无法访问时进行服务恢复等措施,这样会造成服务在一段时间不可用,严重影响用户体验。还有一些微服务动态调整机制基于静态的阈值以及瞬时的服务运行状态进行服务的伸缩,容易导致服务上下抖动,影响服务质量。

被动调整的方式中主要根据服务瞬时状态创建新的服务实例或销毁多余的服务实例。kubemetes(管理云平台中多个主机上的容器化的应用)自动伸缩策略根据瞬时资源利用率信息来更新服务副本数,先设定预定的资源利用率阈值,然后实时监控当前每个微服务实例运行的资源利用率,如果当前利用率超过设定的阈值则进行服务扩张,否则缩小。

kubernetes服务迁移策略是一种被动迁移策略,实时监控服务运行状态,如果服务出现故障,才将服务迁移到其它可用的节点。在进行服务迁移时,主要有三种方法选择目前迁移位置:扩展策略、装箱策略、标签匹配策略。扩展策略时将服务部署在不同的节点上,装箱策略将服务部署在同一个节点上,标签匹配策略将服务部署在特点的节点上。

被动调整的方式可以根据服务运行状态来调整服务实例数量以及部署位置,提升资源利用率以及服务质量,但是仍存在问题:服务动态伸缩时存在抖动现象采用瞬时资源利用率来决定何时向内/向外扩展每个微服务,当服务占用资源超过阈值时进行扩张,当资源利用率低于阈值时收缩,这样可能导致服务实例频繁变化,上下波动,严重影响服务的可靠性。另外,还存在问题:服务瞬时负载信息不能反映服务真实状态,通过服务负载信息来判断服务运行状态,但是,负载并不能直接反映当前服务质量好坏,高负载只意味着充分利用了微服务实例,可能还提供可接受的服务请求延迟,而不需要扩展。因此,将资源利用率作为自动伸缩的指标不太恰当。没有考虑微服务之间的依赖性,微服务应用是由一组相互通信的服务组成,它们相互协作,为用户提供最终价值。现有的微服务动态调整方法没有考虑与其他关联微服务的依赖关系,服务迁移的结果可能导致微服务之间延迟过大,影响服务质量。本发明实施例为了能够避免微服务故障,减少云服务故障频率,提高微服务的可靠性,提供了一种联邦云环境中微服务的动态调整机制,提前捕获微服务异常状态,分析微服务之间的交互关系,优化服务调整流程,以提高微服务应用的可靠性。

在微服务运行过程中,由于服务请求数量以及节点状态、网络环境的不断变化,微服务的性能随之波动,如果负载过高或者副本(也可以理解为服务实例)部署位置离用户很远,可能使得某个微服务崩溃或者访问延迟过高,都会对应用程序的服务质量有很大影响。为了提高微服务性能,可以提前识别这些异常的微服务,如标记这些异常的微服务为待优化的微服务,重新评估微服务的副本数,并将微服务迁移到当前最佳位置,提高微服务稳定可靠性,减少服务故障恢复的窗口期。本发明实施例提供了一种微服务动态伸缩及迁移机制,实时收集服务运行状态,筛选异常服务并进行服务伸缩或迁移调整。下面进行详细说明。

本发明实施例提供的微服务动态伸缩及迁移方法的执行主体可以是电子设备,具体地,电子设备可以是终端、服务器等等。

本发明实施例提供了一种微服务动态伸缩及迁移方法,可以包括:

收集每个微服务的运行状态信息,运行状态信息包括微服务的调用信息和资源使用信息;

针对各个微服务,根据微服务的调用信息计算第一预设时间范围内微服务的平均调用延迟;如果平均调用延迟满足预设条件,则将微服务标记为待优化微服务;

根据微服务的资源使用信息,计算第二预设时间范围的平均资源利用率;如果平均资源利用率大于第一预设阈值或者小于第二预设阈值,则将微服务标记为待优化微服务;

根据不同微服务的调用信息,确定微服务之间的亲和度,亲和度用于表示不同微服务之间的依赖性;

针对待优化服务,获取待优化服务对应的目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口;并当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数;

针对各个待优化微服务,根据微服务之间的亲和度,将与待优化微服务之间亲和度最高的其他微服务作为待优化微服务的迁移服务,迁移服务用于表示将待优化微服务迁移至其他微服务所在的节点上;

利用目标副本数进行扩容,或者,利用目标副本数进行缩容;

利用迁移服务进行迁移操作。

本发明实施例中,通过收集每个微服务的运行状态信息,并统计时间范围内,也即一段时间内微服务的平均调用延迟和平均资源利用率,基于一段时间内的信息确定微服务是否为待优化的服务,避免根据微服务的瞬时信息频繁地调整微服务而造成的服务抖动;且当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数,能够结合资源利用率和调整窗口计算目标副本数;根据目标副本数动态地进行扩容或缩容,即实现动态伸缩;同时,能够根据微服务之间的亲和度进行服务迁移,能够将微服务迁移至与该微服务亲和度最高的微服务所在的节点上,亲和度越高则依赖关系越强,即将微服务迁移至与该微服务依赖性强的服务所在的节点上,能够降低服务延迟。总的来讲,本发明实施例能够提高微服务的可靠性。

图1为本发明实施例提供的微服务动态伸缩及迁移方法的流程图。参见图1,本发明实施例提供的微服务动态伸缩及迁移方法,可以包括:

s101,收集每个微服务的运行状态信息。

运行状态信息可以理解为微服务运行过程中相关信息。运行状态信息可以包括微服务的调用信息和资源使用信息。

一种可实现方式中,微服务部署在联邦云上,联邦云是一种分布式多云平台系统,联邦云包括多个子云,每个子云包括多个节点,微服务以容器的形式部署在节点上,也可以理解为微服务包括的微服务实例部署在节点,多个微服务实例可以部署在不同的节点上。

可以通过监控模块采集各个子云中微服务以及主机(节点)的细粒度数据,并且进行筛选整理,聚合到数据库中以供自适应调整框架中的其他组件使用。联邦监控组件,如监控模块负责收集并聚合下面各个子云的数据,保存到联邦数据库中。每个子云负责收集部署在下面主机中的容器运行数据。

一种可实现方式中,运行状态信息可以包括日志信息、调用链信息和度量数据。其中,日志信息用于微服务对外输出的调试以及错误信息,如日志信息包括系统(如联邦云平台系统)或者应用(多个微服务组成的微服务应用)对外输出的调试以及错误信息,以供用户诊断问题。

调用链信息表示对微服务调用过程的信息,如微服务调用链信息是记录一个服务请求的全部过程,包括请求中间调用的微服务信息、响应状态、请求次数等,以反应微服务的性能状态。

度量数据表示微服务能够被度量的数据指标信息,如资源使用信息,等,可以包括服务资源使用情况、节点资源容量、网络状态等信息。

日志信息可以通过日志采集方法获得,日志采集方法使用elk(搜索服务器elasticseach+实时数据采集引擎logstash+数据分析的可视化利器kibana)方案进行日志信息监控,能够采集多种来源的日志数据,传输聚合日志信息,并且进行持久化存储。

调用链信息可以通过微服务调用链跟踪获得,具体地,使用zipkin(分布式链路跟踪系统),可以收集微服务的调用情况以及微服务之间交换的信息,包括调用的服务名称、调用的响应时间、响应结果等,以此可以分析微服务之间的依赖、耗时以及错误等信息。zipkin还支持调用链信息的存储,并通过应用程序接口(applicationprogramminginterface,api)暴露调用链信息,即其他组件通过api调用这些信息。

度量数据通过heapster+influxdb+grafana方案进行细粒度指标收集。kuberneter可以通过内置的cadvisor(容器监控)工具来监控每个节点以及容器的资源占用情况,heapster负责聚合各个节点上cadvisor采集的数据,进行汇总并发送给存储后端。influxdb是一个分布式时序数据库,负责存储heapster采集的数据,并提供api接口以供查询。grafana提供良好的web(网络)页面,用图表等方式展示influxdb存储的各种数据。最后通过一个联邦聚合组件,负责聚合上面收集的各个子云平台的信息,并将数据进行进一步处理,得到微服务运行的一段时间内的均值数据等,将处理后的数据进行持久化存储,以供后面组件使用。

s102,针对各个微服务,根据微服务的调用信息计算第一预设时间范围内微服务的平均调用延迟;如果平均调用延迟满足预设条件,则将微服务标记为待优化微服务。

一种可实现方式中,将微服务标记为待优化服务可以通过将微服务放入待优化服务列表中来实现。

第一预设时间范围可以根据实际需求来确定,如5分钟、3分钟,等等。

一种可实现方式中,调用信息可以包括微服务在各个时刻的调用延迟。

s102中根据微服务的调用信息计算第一预设时间范围内微服务的平均调用延迟,可以包括:

获得所有调用延迟中值最小的第一比例的调用延迟;计算值最小的第一比例的调用延迟的第一平均调用延迟;获得所有调用延迟中值最小的第二比例的调用延迟;计算值最小的第二比例的调用延迟的第二平均调用延迟,第二比例小于第一比例。

s102中如果平均调用延迟满足预设条件,则将微服务标记为待优化微服务可以包括:如果第二平均调用延迟与第一平均调用延迟满足预设关系,则将微服务标记为待优化微服务。

如果l10>l50*2,或者,l10<l50*1.2,则将微服务标记为待优化微服务,其中,l10为第二平均调用延迟,l50为第一平均调用延迟。

具体地,可以通过l50表示在过去5分钟内一个微服务的最慢的50%请求的平均延迟,用过l10表示最慢的10%请求的平均延迟。即第一预设时间范围为5分钟,第一比例为50%,第二比例为10%。

可以计算第二平均调用延迟与第一平均调用延迟的比例,如λ表示微服务的服务质量水平。通过l10与l50的比值来反应过去一段时间内的微服务质量,微服务的服务质量会随着负载或者部署位置等因素影响不断变化。若l10接近l50,则意味着这个微服务可以处理大部分请求,处于正常工作状态。如果l10过多地超过l50(l10>l50*2),就意味着微服务只能处理部分请求,大约10%的对微服务的请求不能被及时处理。也就是说在处理队列中有很多请求,无法提供正常的服务支持,所以需要将这个微服务标记为违规微服务,也即待优化服务。如果l10非常接近l50(l10<l50*1.2),则表示当前的服务能力远远大于用户需求,可能需要进行收缩,也将这个微服务标记为待优化服务,如放入到待优化的服务列表中。

s103,根据微服务的资源使用信息,计算第二预设时间范围的平均资源利用率;如果平均资源利用率大于第一预设阈值或者小于第二预设阈值,则将微服务标记为待优化微服务。

可以统计第二预设时间范围内微服务的中央处理单元cpu平均使用量、内存使用量、微服务的cpu请求数以及内存请求数。

其中,第二预设时间范围可以根据实际需求来确定,如1分钟、2分钟,等等。

通过公式:计算cpu利用率,以及通过公式:计算内存利用率;

其中,usagec表示cpu平均使用量,usagem表示内存使用量,requestedc表示cpu请求数,requestedm表示内存请求数。

第一预设阈值、第二预设阈值也可以根据实际需求或者经验值等确定,第二预设阈值小于第一预设阈值。一种可实现方式中,第一预设阈值为0.8,第二预设阈值为0.2。第一预设可以理解为资源利用率的上限值,第二预设阈值可以理解为利用利用率的下限值,如果资源利用率超出上限值或下限值,如uc和/或um大于0.8,uc和/或um小于0.2,则将微服务标记为待优化为微服务,如将该微服务放入待优化的服务列表中。

s104,根据不同微服务的调用信息,确定微服务之间的亲和度,亲和度用于表示不同微服务之间的依赖性。

微服务之间的亲和度与依赖性成正比,亲和度越高则微服务之间的依赖性越强。

微服务应用由一组相互通信的服务组件,微服务之间的亲和性可以用它们之间的调用关系进行分析,它们的亲和度即它们之间传输的信息量大小,如果两个微服务之间传输的信息量越大,则它们的亲和度越高。可以通过微服务之间交互的数据量以及交互频率来定义它们之间的亲和度大小。亲和度模型如图2所示。

每个微服务具有多个副本(也可以理解为服务实例),用两个微服务之间所有副本的通信的消息来计算它们之间的亲和度,例如,微服务a与微服务b之间的亲和度可以通过微服务a包括的副本,也即服务实例:容器a1、容器a2,与微服务b包括的副本:容器b1、容器b2之间消息传输过程中的信息量确定,微服务b与微服务c之间的亲和度可以通过微服务b包括的副本:容器b1、容器b2,与微服务c包括的副本容器c1来确定。

具体地,可以根据不同微服务的调用信息,通过公式确定微服务之间的亲和度;

其中,affia,b表示微服务a和微服务b的亲和度,m表示所有微服务交换的数据量,表示微服务a的服务实例i和微服务b的服务实例j之间交换的数据量,freq表示所有微服务之间交互的次数,表示微服务a的服务实例i和微服务b的服务实例j之间交互的次数。

s105,针对待优化服务,获取待优化服务对应的目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口;并当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数。

当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率

调整条件包括:或者,其中,d表示容忍度。

判断目标资源利用率、当前资源利用率和容忍度是否满足该调整条件,即可以理解为判断微服务是否需要扩容。

根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数,可以包括:

根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,通过如下公式计算待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,wo表示扩容窗口,replicacur表示当前副本数。

当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率调整条件包括:或者

判断目标资源利用率、当前资源利用率和容忍度是否满足该调整条件,即可以理解为判断微服务是否需要缩容。

根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数,包括:

根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,通过如下公式计算待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,replicacur表示当前副本数;wi表示缩容窗口。

s106,针对各个待优化微服务,根据微服务之间的亲和度,将与待优化微服务之间亲和度最高的其他微服务作为待优化微服务的迁移服务,迁移服务用于表示将待优化微服务迁移至其他微服务所在的节点上。

s107,利用目标副本数进行扩容,或者,利用目标副本数进行缩容。

s108,利用迁移服务进行迁移操作。

利用迁移服务进行迁移操作可以包括:(1)根据亲和度大小进行降序排序。(2)取出亲和度最高的服务对(a,b),尝试将微服务a迁移到b所在的节点上,如果资源满足则允许迁移;否则继续往下尝试;(3)尝试将微服务b迁移到微服务a所在的节点上,如果满足资源需求则允许迁移,否则继续往下尝试。(4)从亲和度集中依次取出其他服务对,重复(2)和(3)的过程,直到所有微服务都迁移完毕。

其中,利用目标副本数进行扩容,可以包括:

将当前副本数的数量增加至目标副本数。

一种可实现方式中,在服务扩容后,扩容窗口大小每次增加2,以更好应对连续的扩容需求。

扩展窗口通过连续扩展的次数不断增加,减少扩展的频率,能够更好应对可能激增的用户请求,以提供更稳定可靠的服务。

另外,为了提高服务稳定性,微服务扩容后可以冷却预设时间,如冷却时间为3分钟,3分钟后服务再进行下一次扩容。

其中,利用目标副本数进行缩容,可以包括:

将当前副本数的减小至目标副本数。

初始化设置缩容窗口wi=2。如果满足下面任意一个不等式,则认为这个微服务的资源利用率过低,需要进行缩容。或者,

在进行微服务缩容的时候,采用稳步收缩的方法避免收缩太快导致服务压力骤增。缩容目标副本数通过以下公式来计算,以更好满足服务需求。

在服务缩容后,缩容窗口大小保存不变,微服务缩容后的可以一段时间后再进行下一次缩容,如冷却时间可以为5分钟。

如果通过资源利用率情况来确定目标副本数,可能导致服务副本激降,下一次又激增,服务不断波动且不稳定,本发明实施例中计算缩容的目标副本数时结合了缩容窗口,能够根据缩容窗口大小逐步伸缩,提高服务的稳定性。

具体地,本发明实施例中通过动态窗口弹性伸缩方法进行扩容(增大微服务的副本数)和缩容(减小微服务的副本数)。动态窗口弹性伸缩方法综合考虑过去一段时间cpu以及内存平均利用率,并为了解决应对突发流量反应过慢以及服务抖动的问题,提供了一种可变化的伸缩窗口,调整微服务的伸缩规模。用wo表示扩容窗口大小,wi表示收缩窗口大小。此算法采用快扩容、缓收缩的策略,扩容窗口wo会随着连续扩容持续增加,收缩窗口wi保持一个固定的大小。为了提高服务的稳定性,在进行扩容或者收缩操作之后存在一个冷却时间,不再进行伸缩,并设置一个伸缩容忍度(也即容忍度)d,当资源利用率与目标利用率很接近时,不进行伸缩操作。

动态窗口弹性伸缩方法包括快速扩容以及逐步收缩两个算法,快速扩容算法首先获取当前服务的运行信息并初始化几个关键变量,包括微服务当前副本数量replicacur,过去一段时间的平均资源使用量usagec和usagem、资源请求数requestedc和requestedm,以及用户设置的目标资源利用率初始化扩容窗口大小wo=2,伸缩容忍度d=0.1,目标副本数replicatar=0。

可以每隔一段执行一次检测,如每30秒循环中执行一次,判断待优化的微服务是否需要扩容或者缩容。检测微服务的资源指标,计算当前的cpu资源利用率uc以及内存资源利用率um。如果满足下面任意一个不等式:或者,则认为这个微服务的资源利用率超过伸缩容忍度,需要进行伸扩展,即扩容。

在找到需要扩容的微服务后,计算目标副本数:这里取基于cpu利用率计算的目标副本数和基于内存计算的目标副本数的最大值,以更好满足服务需求。

在服务扩容后,扩容窗口大小每次增加2,以更好应对连续的扩容需求。为了提高服务稳定性,微服务扩容后冷却时间为3分钟,3分钟后服务才能进行下一次扩容。

一种可实现方式中,利用目标副本数进行扩容,或者,利用目标副本数进行缩容;利用迁移服务进行迁移操作,可以包括:

将包括目标副本数和迁移服务的调整策略,转换为微服务调整命令;执行微服务调整命令以进行微服务调整。

调整策略中包括目标副本数和迁移服务,将目标副本数和迁移服务转换为微服务调整命令,执行该微服务调整命令则可以完成微服务调整过程。

本发明实施例中,通过收集每个微服务的运行状态信息,并统计时间范围内,也即一段时间内微服务的平均调用延迟和平均资源利用率,基于一段时间内的信息确定微服务是否为待优化的服务,避免根据微服务的瞬时信息频繁地调整微服务而造成的服务抖动;且当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数,能够结合资源利用率和调整窗口计算目标副本数;同时,能够根据微服务之间的亲和度进行服务迁移,能够将微服务迁移至与该微服务亲和度最高的微服务所在的节点上,亲和度越高则依赖性越强,即将微服务迁移至与该微服务依赖性强的服务所在的节点上,能够降低服务延迟。总的来讲,本发明实施例能够提高微服务的可靠性。

根据微服务的延迟信息以及时间段内的资源利用率筛选可能故障的微服务,也即待优化微服务,根据微服务之间的交互的数据量来计算微服务之间的亲和度,实时调整可能要出现故障的微服务副本数以及迁移节点,降低故障出现的可能,提高联邦云中微服务应用运行时的可靠性。

一种可选的实施例中,通过监控模块、分析模块、决策模块以及执行模块实现微服务自适应调整机制,以实现本发明实施例对微服务的处理。

图3为本发明实施例提供的微服务自适应调整机制的系统结构图。参见图3,本发明实施例中,微服务以容器的形式部署在联邦云中。联邦云是一种分布式多云平台系统,通过一个联邦控制面板管理多个子云平台。每个子云平台可以看作一个集群,每个子云包含多个工作节点,也由一个集群控制面板负责管理。容器是指服务部署的环境,与虚拟机类似,一个工作节点可以创建多个容器来部署服务,所以微服务最终以容器的方式部署在某个集群中的某个工作节点上。

本发明实施例提供的自适应调整机制的可以理解为基于mape-k控制模型的微服务自适应调整机制,mape-k是一种使用共享知识库的自适应系统框架,通过循环监控、分析、处理等阶段实现系统某个流程的自动化,将微服务动态调整流程分为四个阶段:监控阶段、分析阶段、决策阶段,执行阶段。通过微服务控制器对联邦云进行监测,进而对联邦云中部署的微服务进行调整。微服务控制器中包括监控器、分析器、决策器和执行器。

监控器也可以理解为监控模块,实现监控阶段,用于收集指标,如资源信息resource、message、latency。分析器,实现分析阶段,用于违规微服务筛选、微服务亲和度分析;决策器,完成决策阶段,用于微服务规模调整、微服务迁移策略;执行器,完成执行阶段,用于执行命令,该命令是将角决策器得到的调整策略转换得到的控制性命令。

具体地,如图4所示,可以执行如下方法步骤:

s41:监控微服务。

收集日志、调用链、度量等细粒度数据信息。

s42:数据预处理。

标记异常信息,计算平均访问延迟及资源利用率。

s43:违规微服务筛选。

根据服务延迟以及负载状态筛选违规微服务。违规微服务也即待优化微服务。

s44:微服务亲和度计算。

根据微服务之间交互的数据量计算它们的亲和度大小。

s45:微服务弹性伸缩。

调用基于动态窗口的弹性伸缩方法计算微服务目标副本数。

s46:微服务迁移决策。

调用基于亲和性的微服务迁移算法获取微服务迁移位置。

s47:执行微服务调整策略。

检测调整策略的有效性,有效则执行微服务调整命令。

执行模块负责执行的违规微服务的调整策略。识别从决策模块接收到的微服务调整策略,检查当前调整策略的有效性,如果有效则将其转化为云平台能够识别的命令,并依次执行它;如果无效则放弃此次调整,并且在进行服务迁移时,采用先部署新服务,再销毁旧服务的方式,减少服务迁移产生的不可访问时间。

一种可选的实施例中,用户部署了一个微服务应用在联邦云平台上后,微服务自适应调整机制实时监控微服务运行状态,提前获取可能故障的微服务进行动态伸缩或迁移,提高微服务的可靠性。

图5为本发明实施例提供的微服务动态伸缩及迁移方法的应用流程图,如图5所示,可以通过如下方法步骤实现:

s1:监控微服务运行状态,收集各子云中微服务及系统组件的运行日志信息,包括微服务对外输出的调试以及错误日志信息,以及系统各个组件的输出日志信息,并将日志信息持久化存储再数据库中。

s2:跟踪微服务的调用链,收集微服务的调用情况以及微服务之间交互的信息,包括服务响应延迟、响应结果、响应数据等,并将调用信息数据存储再数据库中。

s3:采集微服务以及主机度量数据,通过节点采集器以及聚合器采集微服务的资源使用情况以及主机的cpu、内存实时利用率、磁盘占用率、网络连接数等信息,将数据保存在时序数据中。

s4:联邦聚合器聚合各个子云收集的数据,进行数据预处理,标记输出的异常日志,计算微服务的过去5最慢的50%和10%的平均访问延迟l50以及l10,计算微服务的平均资源利用率uc以及um。

s5:分析微服务的运行状态,根据微服务访问延迟判断微服务是否存在异常,是的话进行s7执行,否则执行s6。

s6:检测微服务的负载状态,根据负载信息判断微服务是否过载或低负载,如果存在异常则转入s7执行,否则转入s8执行。

s7:将该微服务放入违规微服务列表。

违规微服务列表也即待优化的服务列表。

s8:计算微服务亲和度信息,根据微服务之间的通信的数据量m以及交互频率freq计算微服务的亲和度大小。

s9:读取违规微服务列表,获取微服务当前副本数、目标资源利用率,扩容及缩容窗口大小。

s10:检查微服务的实际平均资源利用率是否超过目标利用率上限容忍度,如果是则转入s12继续执行,否则转入s11继续执行。

s11:检查微服务的实际平均资源利用率是否低于目标利用率下限容忍度,如果是则转入s14继续执行,否则转入s16继续执行。

s12:利用公式计算微服务的扩容目标副本数。

s13:扩容窗口增加2,进行扩容冷却期。

s14:利用公式计算微服务的缩容目标副本数。

s15:缩容窗口大小不变,进入缩容冷却期。

s16:获取各个主机的cpu和内存资源利用率、服务的cpu、内存资源需求,以及微服务亲和度集合。

s17:将微服务之间的亲和性按照降序进行排序。

s18:选择一对微服务(a,b)尝试进行迁移,尝试将微服务a迁移到微服务b所在节点上,或者尝试将微服务b迁移到微服务a所在的节点上,如果迁移成果则标记为已迁移。

s19:检查所有服务是否迁移完毕,迁移完毕则转入s20,否则转入s18继续迁移服务。

s20:将微服务调整策略转换为系统命令,执行微服务调整命令。

本发明实施例提供的微服务动态伸缩及迁移方法,实现了微服务自适调整,将微服务调整过程分为四个阶段:监控、分析、决策、执行。在监控阶段收集微服务资源、数据量、延迟等细粒度指标,在分析阶段根据微服务延迟信息预测微服务状态,并且建模分析微服务之间的亲和度,决策阶段计算微服务恰当的副本数并确定迁移节点,执行阶段负载执行微服务调整命令。与传统伸缩方法根据瞬时状态调整微服务相比,本发明实施例提供的微服务动态伸缩及迁移方法收集微服务一段时间的负载均值信息,避免微服务频繁抖动,并采用故障预测方法以及微服务亲和度模型来迁移微服务,减少微服务故障迁移不可访问的空窗期,提高微服务运行时的可靠性。用户部署了微服务应用后,本发明提出的微服务自适应调整机制通过监控、分析、决策、执行阶段环形控制流程,实时调整将要违规的微服务副本数以及迁移节点,提高联邦云中微服务应用运行时的可靠性。

对应于上述实施例提供的微服务动态伸缩及迁移方法,本发明实施例提供了一种微服务动态伸缩及迁移装置,如图6所示,可以包括:

收集模块601,用于收集每个微服务的运行状态信息,运行状态信息包括微服务的调用信息和资源使用信息;

第一计算模块602,用于针对各个微服务,根据微服务的调用信息计算第一预设时间范围内微服务的平均调用延迟;如果平均调用延迟满足预设条件,则将微服务标记为待优化微服务;根据微服务的资源使用信息,计算第二预设时间范围的平均资源利用率;如果平均资源利用率大于第一预设阈值或者小于第二预设阈值,则将微服务标记为待优化微服务;

第一确定模块603,用于根据不同微服务的调用信息,确定微服务之间的亲和度,亲和度用于表示不同微服务之间的依赖性;

第二计算模块604,用于针对待优化服务,获取待优化服务对应的目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口;并当目标资源利用率、当前资源利用率和容忍度满足调整条件时,根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,计算待优化服务对应的目标副本数;

第二确定模块605,用于针对各个待优化微服务,根据微服务之间的亲和度,将与待优化微服务之间亲和度最高的其他微服务作为待优化微服务的迁移服务,迁移服务用于表示将待优化微服务迁移至其他微服务所在的节点上;

处理模块606,用于利用目标副本数进行扩容,或者,利用目标副本数进行缩容;利用迁移服务进行迁移操作。

可选的,调用信息包括微服务在各个时刻的调用延迟;

第一计算模块602,具体用于获得所有调用延迟中值最小的第一比例的调用延迟;计算值最小的第一比例的调用延迟的第一平均调用延迟;获得所有调用延迟中值最小的第二比例的调用延迟;计算值最小的第二比例的调用延迟的第二平均调用延迟,第二比例小于第一比例;如果第二平均调用延迟与第一平均调用延迟满足预设关系,则将微服务标记为待优化微服务。

可选的,第一计算模块602,具体用于如果l10>l50*2,或者,l10<l50*1.2,则将微服务标记为待优化微服务,其中,l10为第二平均调用延迟,l50为第一平均调用延迟。

可选的,第一计算模块602,具体用于统计第二预设时间范围内微服务的中央处理单元cpu平均使用量、内存使用量、微服务的cpu请求数以及内存请求数;

通过公式:计算cpu利用率,以及通过公式:计算内存利用率;

其中,usagec表示cpu平均使用量,usagem表示内存使用量,requestedc表示cpu请求数,requestedm表示内存请求数。

可选的,第一确定模块603,具体用于根据不同微服务的调用信息,通过公式确定微服务之间的亲和度;

其中,affia,b表示微服务a和微服务b的亲和度,m表示所有微服务交换的数据量,表示微服务a的服务实例i和微服务b的服务实例j之间交换的数据量,freq表示所有微服务之间交互的次数,表示微服务a的服务实例i和微服务b的服务实例j之间交互的次数。

可选的,当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率

调整条件包括:或者,其中,d表示容忍度;

第二计算模块604,具体用于根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,通过如下公式计算待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,wo表示扩容窗口,replicacur表示当前副本数;

处理模块606,具体用于将当前副本数的数量增加至目标副本数。

可选的,当前资源利用率包括:当前cpu资源利用率uc和当前内存资源利用率um,目标资源利用率包括:目标cpu资源利用率和目标内存资源利用率

调整条件包括:或者,

第二计算模块604,具体用于根据目标资源利用率、当前资源利用率、容忍度、当前副本数以及调整窗口,通过如下公式计算待优化服务对应的目标副本数;

其中,replicatar表示目标副本数,replicacur表示当前副本数;wi表示缩容窗口;

处理模块606,具体用于将当前副本数的减小至目标副本数。

可选的,处理模块606,具体用于将包括目标副本数和迁移服务的调整策略,转换为微服务调整命令;执行微服务调整命令以进行微服务调整。

本发明实施例提供的微服务动态伸缩及迁移装置是应用上述微服务动态伸缩及迁移方法的装置,则上述微服务动态伸缩及迁移方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现上述微服务动态伸缩及迁移方法的方法步骤。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述微服务动态伸缩及迁移方法的方法步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述微服务动态伸缩及迁移方法的方法步骤。

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

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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