掌桥专利:专业的专利平台
掌桥专利
首页

基于动态分配延迟目标和优先级调度的共享微服务资源管理方法和装置

文献发布时间:2024-04-18 20:01:55


基于动态分配延迟目标和优先级调度的共享微服务资源管理方法和装置

技术领域

本发明属于软件开发技术领域,尤其涉及一种基于动态分配延迟目标和优先级调度的共享微服务资源管理方法和装置。

背景技术

随着云计算技术的飞速发展,如今的微服务架构应用越来越多地以容器的方式部署在云上。得益于云的弹性特性和微服务体量小、可独立部署等特性,微服务架构应用的部署难度被极大的降低,节省了企业应用上线的成本。但为了保障用户应用的运行环境,满足服务水平协议(SLA),许多云厂商往往会过度分配峰值资源,导致集群资源的利用率低,并且增加了服务上云的成本。在不过度分配资源的前提下,如何合理地分配每个微服务的资源,保障用户应用不违反服务水平指标(SLO)成为了亟待解决的问题。

提高资源利用率的常用方法是根据实际的服务工作负载动态的调配资源。而对于微服务架构的应用资源管理而言有两个挑战:服务的不同组件对端到端性能的影响可能存在显著的差异;单个微服务可由多个在线服务共享,而这些服务的工作负载模式和SLA要求是不同的;

目前,该问题的研究方案主要为:以启发式的方法或机器学习模型的方式建立在一定工作负载下某个服务的端到端时延与其服务链中的微服务性能—微服务请求延时的关系。从而根据实时的在线服务工作负载动态调控服务链中可能导致违反服务SLO的微服务的资源。现有研究技术并没有考虑多个服务可能共享同一个微服务,忽略不同的服务具有不同的工作负载、SLA,对共享微服务的性能要求也不同。之前的技术以最小的延时目标扩缩容此类共享微服务,从而造成资源浪费。

因此,有必要提供一种共享微服务资源管理的方法,以解决上述问题。

发明内容

本发明要克服现有技术的上述缺点,提供一种基于动态分配延迟目标和优先级调度的共享微服务资源管理方法和装置。本发明平衡各个服务对于其服务调用链中的共享微服务的性能要求,即通过为服务请求设置优先级的方式,重新调度不同服务请求在同一微服务容器中的执行顺序,以降低高优先级目标的服务对共享微服务的性能要求,从而节省其资源花销。

本发明提出基于动态分配延迟目标和优先级调度的共享微服务资源管理方法,包括:

S101.实时监控应用数据,并根据一段时间间隔的监控数据构成样本后进行离线分析,得到微服务延时和工作负载的线性函数和服务端到端延时与每个微服务延时的相关系数。

S102.所述线性函数用于动态确定每个微服务的实例数。所述相关系数用于动态分配一个服务调用链中的微服务延时目标。在得到每个微服务的初始化延时目标后,计算每个微服务的新实例数。

S103.对共享微服务需额外处理,需要为共享微服务里的不同请求分配优先级,并对请求按照优先级重新调度。然后根据调度后的工作负载重新计算每个服务中的共享微服务的实例数,并确定其最终的实例数。

根据可选的实施方式,所述监控数据包括微服务应用链路跟踪(Trace)数据和应用性能指标。所述应用链路跟踪数据用于建立服务的微服务依赖图,以及确定每个微服务的延时和服务端到端延时。所述应用性能指标包括集群的节点CPU、Memory利用率和微服务实例的平均CPU利用率、Memory利用率、工作负载。上述两种数据用于构成拟合微服务延时和工作负载的线性函数的样本数据。

根据可选的实施方式,所述离线分析包括:分析Trace数据得到服务的端到端延时和每个微服务的延时;将所述监控数据输入离线线性回归模型分析,所述线性回归模型为机器学习模型,该模型用于拟合微服务延时和工作负载的线性函数,所述线性函数为

其中

根据可选的实施方式,所述动态分配微服务延时目标的方法为计算服务的端到端延时和每个微服务的延时的皮尔逊系数并乘以每个服务的SLA延时指标。所述皮尔逊系数为一种计算两个样本相关程度的计算方法。所述具体计算方式为,服务的端到端延时和每个微服务的延时的协方差除以两者的标准差。

所述相关系数具体计算为:

其中T

所述动态分配的延迟目标具体计算公式为:

其中SLA表示单个在线服务的SLA延时要求;RI表示微服务在当前服务链中的延时相关系数。

根据可选的实施方式,所述对微服务里的不同请求分配优先级的方法为,根据不同的服务请求中其延时目标不同这一特点,根据此目标等比例的分配不同的优先级。

根据可选的实施方式,所述对按照优先级重新调度请求的方法为使用Linux流量控制工具tc指定每个流量的优先级,再通过队列规则(即pfifo_fast)提供优先级。

根据可选的实施方式,所述计算微服务新的实例数的方法为:通过实时的工作负载和动态分配的微服务延时目标求解所述线性函数得到每个微服务的最优实例数。所述新微服务实例数的具体计算公式为:

其中

所述共享微服务在分配优先级后的新工作负载计算方式为:

其中

本发明的第二个方面涉及一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现本发明的基于动态分配延迟目标和优先级调度的共享微服务资源管理方法。

本发明一种基于动态分配延迟目标和优先级调度的共享微服务资源管理装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现本发明的基于动态分配延迟目标和优先级调度的共享微服务资源管理方法。

本发明的工作原理为:首先通过以SLA指标为基准动态为服务链中的每个微服务分配不同的延时指标,从而结合线性函数计算不同的最优实例数以避免违反SLA并减少资源利用。其次对于共享微服务,由于有多个服务调用导致共享微服务产生多个目标实例数,我们需要进行额外的处理以确定其最终实例数。具体做法为通过将请求进行优先级调度,使优先级高即低延迟目标的服务优先运行,降低高优先级的服务对共享微服务的资源要求,从而减小其资源压力,即减少共享微服务的实例数。

与现有技术相比,本发明提供的共享微服务资源管理方法根据微服务在当前服务链中的延时相关程度为每个微服务动态分配延时目标,再通过线性函数求得微服务的最佳实例数。根据每个服务在共享微服务中的微服务延时目标确定其请求在共享微服务中的优先级。

在确定优先级后,高优先级的服务请求将不会被低优先级的服务请求阻塞。此时只需保障低优先级的服务能够满足服务SLA。通过调整低优先级的服务工作负载,提高低优先级服务所需共享微服务的实例数,在所有服务链求得的微服务实例数中取最小值即可满足所有服务的SLA。

本发明的优点是:在共享微服务的服务请求具有较大SLA延时指标差的场景下,极大地减少了共享微服务的资源占用,提高了资源使用率;能够在满足服务水平协议的前提下,降低共享微服务的资源消耗。

附图说明

图1是本发明方法的一示例的步骤流程图;

图2是本发明方法的一简单微服务应用示意图。

具体实施方式

下面将参考附图并结合实施例来详细说明本发明。

实施例1

鉴于上述问题,本发明提出一种基于动态分配延迟目标和优先级调度的共享微服务资源管理方法,通过动态分配延迟目标和优先级调度,将防止在共享微服务中高延迟请求阻塞低延迟请求,从而不必为了满足低延迟请求的SLA而过度分配资源至共享微服务。

本发明提出的共享微服务资源管理方法适用于不同的服务调用同一个微服务,并且不同的服务对该共享微服务的延时要求相差较大的应用场景。

下面参照图1至图2,将对本发明的内容进行详细说明。

图1是本发明动态分配延迟目标和优先级调度的共享微服务的资源管理方法的一示例的步骤流程图;

本发明提供一种的共享微服务资源管理方法,该共享微服务资源管理方法适用于含有共享微服务的应用,如类似图2示例中的应用,含有类似的微服务依赖图,其不同服务共享同一微服务。

下面将结合图1和图2,具体说明本发明的共享微服务资源管理方法的调用过程。

首先在步骤S101中,所述实时监控应用数据包括监控微服务应用链路跟踪(Trace)数据和应用性能指标数据。其中所述应用链路跟踪数据利用开源项目jaeger采集,首先将jaeger server署于Kubernetes集群,以及将jaeger agent部署于微服务所在节点。服务运行阶段通过UDP协议发送trace数据至agent,agent再批量发送至jaeger服务器。通过访问jaeger提供的Query接口即可获取trace数据;所述应用性能指标数据包括CPU利用率、Memory利用率。利用开源项目prometheus采集。将以上数据持久化至存储,后续分析模块将调用监控数据分析。所述分析为:根据收集到的Trace数据生成在线服务的微服务依赖图,并提取所有微服务在一定时间步长内的请求处理数(工作负载)以及微服务的请求处理延时,构成样本。所述时间步长为1分钟。根据样本以线性回归模型学习拟合微服务延时与工作负载的线性函数。所述微服务i在第j分钟的微服务延时的线性函数为:

其中

在步骤S102中,所述动态的计算每个初始微服务延时目标的方法为根据每个在线服务的SLA、实时的微服务工作负载、微服务延时的线性函数以及每个微服务在当前服务链中的延时相关系数,动态的计算每个初始微服务延时目标。该目标保障在满足服务SLA的同时,微服务的资源占用(容器实例数)尽可能少。所述微服务延时目标的计算公式为:

其中SLA表示单个在线服务的SLA延时要求;RI表示微服务在当前服务链中的延时相关系数。

所述微服务在当前服务链中的延时相关系数RI通过求解微服务的延时方差和服务端到端延时方差的皮尔逊系数得到,皮尔逊系数是量化两个样本相关程度的测量工具。具体的计算方法为:

其中T

在步骤S103中,根据初始化的微服务延时目标确定每个服务在共享微服务中的优先级。共享微服务中来自不同服务的请求将以该优先级处理请求,以避免高优先级的服务请求被低优先级的服务阻塞和为了保障延迟更敏感的服务而分配更多资源。所述以不同优先级处理请求的方法为:通过Linux流量控制工具tc管理容器的不同入站网络流量实现。为了降低资源的使用,此时我们需要以新的工作负载为共享微服务计算实例数。所述新的工作负载为低优先级的服务累加高优先级服务的工作负载。例如服务A和服务B的在微服务i的工作负载分别为W

其中

与现有技术相比,本发明提供的共享微服务资源管理方法根据微服务在当前服务链中的延时相关程度为每个微服务动态分配延时目标,再通过线性函数求得微服务的最佳实例数。根据每个服务在共享微服务中的微服务延时目标确定其请求在共享微服务中的优先级。

在确定优先级后,高优先级的服务请求将不会被低优先级的服务请求阻塞。此时只需保障低优先级的服务能够满足服务SLA。通过调整低优先级的服务工作负载,提高低优先级服务所需共享微服务的实例数,在所有服务链求得的微服务实例数中取最小值即可满足所有服务的SLA。在共享微服务的服务请求具有较大SLA延时指标差的场景下,此方法极大地减少了共享微服务的资源占用,提高了资源使用率。

实施例2

本实施例涉及一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现实施例1的基于动态分配延迟目标和优先级调度的共享微服务资源管理方法。

实施例3

本实施例涉及一种基于动态分配延迟目标和优先级调度的共享微服务资源管理装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现实施例1的基于动态分配延迟目标和优先级调度的共享微服务资源管理方法。

本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

技术分类

06120116571328