微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法。算法通过预测请求到达率对系统进行资源预配置。基于预测结果,应用平方根配置规则计算需求资源数量,进而利用垂直缩放的细粒度资源控制特性和水平缩放的高可用性对微服务进行伸缩。最后应用基于微服务依赖关系的实例迁移算法进一步降低资源开销。实验表明,本文提出的算法在优化微服务系统时延和开销方面取得了显著效果。
目录
2 问题描述
2.1 网络模型
2.2 服务模型
2.3 请求模型
2.4 时延分析
3 算法设计
3.1 微服务请求到达率预测
3.1.1 基于 GRU 的长期到达率预测
3.1.2 基于线性回归的短期到达率预测
3.1.3 基于 基于 − 准则的到达率扩展
本文考虑由一组多核服务器组成的网络架构作为微服务部署的网络平台。每台服务器由多个内存共享且具有相同计算能力的核心组成。因此,同一台服务器上的核心之间的通信时延可忽略不计,本文用参数表示一台服务器上的总核心数。服务器之间也是同构的,即每台服务器具有相同的计算资源(如 CPU、内存、磁盘等),且数据中心的服务器之间可直接进行数据传输。本文用H(I,L)表示数据中心的底网络架构,其中,表示网络平台中可用服务器集合,表示服务器之间的网络连接集合。由于数据中心中光网络连接具有丰富的带宽资源,因此本文主要考虑网络时延约束而忽略带宽约束。此外,由于大多数微服务对计算资源的干扰比对内存等其他资源的干扰更加敏感,因此,本文主要考虑计算资源的分配。本文主要符号及其含义如表 1 所示。
本文将互联网应用建模为具有前后依赖关系的微服务链,如图 1 所示。微服务链集合用表示,服务链, ∈ 包含的微服务集合为 ,对于集合 中的微服务,其实例集合为 。本文用 表示部署有微服务的实例的服务器集合。不同微服务的实例可同时部署在同一台服务器上,实例之间独立运行,互不干扰。当同一个微服务的不同实例部署在同一台服务器时,可将不同的实例合并为一个实例对外统一提供服务。
关于云数据中心网络的相关研究表明请求到达率遵循时间间隔分布,目前很多文献将请求到达过程假设为泊松过程并进行建模,不失一般性地,本文也假设请求到达过程遵循泊松分布。对于微服务链,请求的到达过程遵循到达率为 的泊松过程 [10] 。每个用户请求将由目标服务链上所有微服务节点依次处理,最终将结果传给用户。因此,请求在云数据中心的处理过程会有一定的延迟,该延迟主要包括请求在服务器上的排队时延和处理时延,以及请求在云数据中心的服务器之间的数据通信时延。每个微服务都可以在目标服务链上的微服务的任何一个实例上处理,并且会得到相同
的计算结果,但是由于每个微服务可能具有多个部署在云数据中心中的实例,因此当请求在服务链上的一个非出口服务的实例上执行完毕后,需要决定将请求发送给后继服务的哪个实例,本文通过计算各个实例所占用的核心数与所有实例占用的总核心数的比值得到的概率对请求进行转发,则路由到核心数多的实例上的请求越多。显然,每个请求有多条路由路径,本文用 表示服务链的路由路径集合,则如下:
(1) 平均处理时延
服务链n的请求平均处理时延为:
动态场景下的微服务请求到达率是一个动态变化的值,因此,动态场景下微服务系统的弹性伸缩并非易事。如果将一段时间分解为多个较小的时隙,则以时隙为缩放尺度可降低问题难度 [17-20] 。因此,本文将一段时间分解为多个时隙来研究动态场景下的微服务系统资源配置方案,即 = {1,2,⋯,,⋯,}。本文旨在优化一段时间内服务供应商租赁的服务器数量。
基于GRU的时间序列预测在实际应用中表现良好,然而,GRU 需要大量的历史数据来训练模型,以提高预测精度。因此,实时场景下,GRU 可能无法快速得到精度较高的预测值。由于请求流量在短时间内呈现局部线性特征,因此可以采用基于时间窗的线性回归对请求到达率进行短期预测,并将 GRU 的长期预测结果与线性回归的短期预测结果的平均值作为预测的平均请求到达率。
本文利用GRU对历史数据良好的学习特性对用户请求到达率进行长期变化趋势预测。长期变化趋势预测采用时隙 + 1的前 个时隙内的请求到达率预测时隙 + 1的请求到达率̂ +1,即实现单步预测。 表示时隙的输入数据,ℎ −1 表示从上个时隙传递下来的隐藏状态信息,ℎ −1 中包含了时隙之前的历史数据信息。 和ℎ −1 输入到 GRU 中,经过处理,得到时隙的隐藏层输出结果ℎ 。GRU 内部两个门控单元更新门和重置门的输出信号分别表示为 和 。
用户请求到达率呈现局部线性特征,因此,为了更加精确地预测请求到达率,本文采用基于时间窗的线性回归算法对到达率进行短期预测。假设 + 1时隙之前的 个时隙内的请求到达率为[ − ,⋯, −1 , ] ,则时隙 + 1的请求到达率可表示为̂ +1= 0 + 1 , 0和 1 是回归参数,因此,可将最后 个时隙内的请求到达率之间的关系表示如公式(19):
为了保证实际请求到达率大于预测值时微服务系统仍然具有较好的服务性能,需要对预测的平均请求到达率进行适当扩展,适当扩展预测结果可以避免请求激增时系统资源供应不足导致的请求丢失。受 Tang 等人工作的启发,本文应用3 − σ准则进行请求到达率扩展。σ是请求到达率的标准方差,但由于请求到达率的波动范围可能很大,根据流量上限扩展需要大量的资源,为了避免过度预测导致不必要的资源占用,本文考虑以相对估计误差的标准差作为σ的取值。()和̂()分别表时隙t的真实到达率和预测到达率,则相对估计误差定义为: