聊城微信推广网站,庆阳网站设计厂家,如何进行网站设计规划,关晓彤经纪公司摘要
准确地预测工作负载可以使网络服务提供商实现应用程序的主动运行管理#xff0c;确保服务质量和成本效益。对于云原生应用程序来说#xff0c;多个容器协同处理用户请求#xff0c;导致每个容器的工作负载变化受到工作负载组行为的影响。然而#xff0c;现有方法主要…摘要
准确地预测工作负载可以使网络服务提供商实现应用程序的主动运行管理确保服务质量和成本效益。对于云原生应用程序来说多个容器协同处理用户请求导致每个容器的工作负载变化受到工作负载组行为的影响。然而现有方法主要分析每个容器的个体变化没有明确建模容器工作负载组的演化导致结果次优。因此我们提出了一种工作负载预测方法 GROUP将重点从个体转移到组别的工作负载预测焦点从数据相似性到数据相关性的工作负载组行为表示以及从隐式建模到显式建模的工作负载组行为演化。首先我们从多个角度对工作负载组行为及其演化进行建模。其次我们提出了一个容器相关性计算算法考虑容器的静态和动态信息来表示工作负载组行为。第三我们提出了一个端到端的多步骤预测方法明确描述了工作负载组行为的演化与每个容器的工作负载变化之间的复杂关系。最后对公共数据集进行了足够的实验显示了 GROUP 的优势为实现云原生应用程序的工作负载预测提供了一种有效的解决方案。
1 引言
1.1 背景和动机
云原生已成为现代Web应用的重要设计范式云原生应用主要以容器化微服务架构 [14] 的形式产生。微服务架构通过将复杂应用拆分为具有单一功能的服务以减少应用之间的耦合 [5]。容器是一种内核级虚拟化技术具有更高的性能和效率 [7]。因此整个应用通过多个容器相互交互来处理用户请求使得容器的工作负载变化不再仅仅是每个容器的个体行为而是多个容器的群体行为。
大部分现有的工作负载预测方法 [8–10, 12, 15, 20, 25, 29, 30] 都是独立地对每个容器的工作负载变化进行建模和预测。因为每个容器的工作负载数据以时间序列的形式记录这些方法认为每个容器未来的工作负载变化仅与其自身的历史工作负载数据相关这是由时间序列预测问题的自然时间相关性引起的。然而云原生应用是一个分布式系统多个容器一起处理用户请求。因此仅关注预测容器的个体行为只能达到次优结果。此外由于动态的云环境 [12]历史工作负载数据中存在大量数据噪声 [2]这使得这些方法对数据噪声的敏感性较高。
少数方法还考虑了工作负载变化的群体行为。Shaw等人 [26] 发现了虚拟机VM之间的工作负载变化相关性但仅适用于共同部署以考虑资源的互补性。Ruta等人 [24] 提出了一个基于BiLSTM的工作负载预测模型该模型将所有设备序列的工作负载序列作为输入但没有考虑设备之间的工作负载变化是否相关。Banerjee等人 [1] 和Ding等人 [6] 主要通过在原始数据上获取高度相似的工作负载序列来生成回归预测模型。然而对于云原生应用来说首先不同容器的工作负载变化可能有两种关系相似性复制运行在副本容器上的业务功能和相关性运行在不同容器上属于同一服务调用链的不同业务功能因此上述方法丢失了有价值的数据其次上述方法通过将特征数据输入简单回归方法来隐式地建模工作负载组行为的演化。但是工作负载组行为的演化不是单阶段的而是多阶段相关的。隐式方法只能提取部分信息无法描述工作负载组行为演化的复杂性。
总之现有方法仍然存在几个重要缺陷包括缺乏对工作负载组行为及其演化的明确建模、缺乏有效的方法来评估容器之间的相关性以表示工作负载组行为以及缺乏系统地利用工作负载组行为进行预测。因此现有方法对于云原生应用程序的工作负载预测是不可靠的。
1.2 我们的解决方案
要构建一个明确的端到端工作负载预测模型需要解决两个具有挑战性的问题。
根据云原生的特点如何构建用于表示工作负载组行为并为预测模型提供服务的输入数据基于表示工作负载组行为的输入数据如何设计预测模型以描述工作负载组行为的演化关系并提供准确的多步骤预测结果
因此我们提出了一种名为 GROUP 的新型端到端工作负载预测方法专注于工作负载组行为。我们的工作的关键贡献如下
我们从多个角度系统地建模工作负载组行为及其演变包括内部、时间、多特征和多尺度演变。我们提出了一个容器相关性计算算法考虑到容器的静态和动态信息以表示工作负载组行为。我们提出了一种端到端的多步预测工作负载模型明确描述了工作负载组行为的演变与每个容器的工作负载变化之间复杂的关系。公共数据集上的实验已经证明了 GROUP 的优势。相对于其他最先进的方法对于 MAE 和 RMSE 指标GROUP 平均改善了从2.40%到24.89%和从2.39%到23.50%。
2 相关工作
关注个体行为的方法大多数现有方法 [8-10, 12, 15, 20, 25, 29, 30] 仅独立地对每个容器的工作负载进行建模和预测它们使用时间序列中记录的历史工作负载数据来建模数据点之间的时间依赖关系。El Kassabi 等人 [9] 提出了一种采用自回归移动平均ARIMA的资源短缺预测方法这是一种仅考虑数据点之间的时间依赖关系的单变量预测方法。Duggan 等人 [8] 提出了一种基于 RNN 的多步工作负载预测方法考虑到个体工作负载的变化。通过使用不同的高级时间步骤它展示了多步预测的需要和有效性。Krannichfeldt 等人 [30] 提出了一种单步预测模型将批量学习和在线学习进行整合使用多个离线生成的本地预测器获得基本结果然后通过在线集成来预测未来的工作负载。Saxena 等人 [25] 提出了一种工作负载预测模型通过应用自适应差分进化AADE算法从历史数据中自适应地学习工作负载痕迹。Feng 等人 [10] 提出了一种综合的工作负载预测方法考虑到所预测容器的宏观和微观工作负载变化通过自适应滑动窗口方法和时间局部性集成策略实现更好的结果。然而以上方法只关注所预测对象的个体行为。对于分布式云原生应用程序它们忽略了工作负载组行为的分析和建模因此导致了次优的结果。
关注组行为的方法也有一些方法 [1、6、24、26] 考虑到工作负载变化的组行为。Ruta 等人 [24] 提出了一个三层 BiLSTM 网络统一对所有不同设备序列进行训练以预测未来的工作负载变化考虑到不同设备的工作负载系列之间的交互。但它没有考虑不同设备之间的工作负载变化是否相关。Banerjee 等人 [1] 提出了一种多步工作负载预测方法将机器学习聚类和预测技术结合起来以预测VM未来的资源消耗其中聚类旨在识别具有相似的资源使用模式的VM组。Ding 等人 [6] 提出了一种综合的容器工作负载预测方法考虑到容器组的组行为。它引入了容器相似性计算算法用于识别具有相似模式的容器工作负载序列。然而他们只考虑具有相似模式的工作负载序列作为输入失去了宝贵的相关数据。此外他们通过简单的机器学习方法预测未来的工作负载不能描述工作负载组行为演化的复杂过程。
3 GROUP行为建模
3.1 工作负载组行为定义
首先我们为云原生应用程序定义工作负载组行为。假设容器 ci 的原始工作负载数据序列从 t0 到 tN是 。为了识别容器的工作负载组行为我们将每个容器的工作负载特征建模为包含以下四个组成部分这些部分代表了每个容器的数据、趋势、季节和细节方面的工作负载变化。
数据分量 D 表示工作负载系列的原始数据值直接描述工作负载的数据变化关系。趋势分量 T 表示工作负载系列的长期活动排除季节和不规则影响并可以近似表示原始工作负载系列。季节分量 S 指定定期发生的模式由至少一个或多个间隔组成。它具有恒定且明确定义的周期在趋势分量中具有峰值和谷底与趋势分量相比具有一致的方向和几乎相等的振幅。残差分量 R也称为随机分量是由工作负载系列上的随机影响引起的具有各种频率和振幅的快速变化叠加。它没有固定的周期。
进一步我们定义工作负载组行为。
定义3.1 工作负载组行为多个容器在同一特征fx数据、趋势、季节和残差特征之一上的工作负载变化相关。
工作负载组行为现象显著存在。由于云原生应用程序采用容器化微服务架构多个容器协作处理用户请求主要表现为运行于重复容器上的重复的业务功能和运行于不同容器上的不同业务功能属于同一个服务调用链。因此很容易在特定特征数据、趋势、季节和残差特征之一上形成工作负载组行为。
3.2 工作负载组行为演变
然后我们进一步分析工作负载组行为的演变并提出了其四个阶段的演变。
定义3.2 工作负载组行为内部演变属于同一工作负载组行为的不同容器之间的工作负载变化关系。
数学描述如下 其中是建模不同容器之间的工作负载内部演变的函数它们属于同一工作负载组行为 。
定义3.3 工作负载组行为时间演变整个工作负载组行为在时间线上较早的数据和后来的数据之间的工作负载变化关系。
由于多个容器的工作负载组行为 随时间演变因此需要注意时间线上工作负载组行为的相关性。数学描述如下 其中是建模工作负载组行为的时间演变的函数k表示历史预测周期的数量因此历史工作负载序列包含总共 k*m 个时间步的记录。
定义3.4. 工作负载组多特征演化是指不同特征对应的工作负载组行为之间的工作负载变化关系包括数据、趋势、季节和残差特征。由于不同工作负载特征描绘了工作负载变化的不同方面因此需要关注不同特征对应的工作负载组行为之间的演化关系。数学描述如下 其中是用于建模不同特征对应的工作负载组行为的多特征演化函数。
定义3.5. 工作负载组多尺度演化是指不同采样尺度宏观、中观和微观对应的工作负载组行为之间的工作负载变化关系。由于采样尺度直接决定了工作负载变化的模式因此将采样尺度分为三个级别即大L1、中L2和小L3分别描绘了三种工作负载变化模式即宏观、中观和微观变化。重新采样的工作负载序列定义如下 其中a{0, 1,…}F是任意聚合函数通常可以采用观察值函数、最大值函数和平均值函数等。不同尺度上的工作负载组行为会影响容器的工作负载变化因此需要关注不同尺度对应的工作负载组行为之间的演化关系。数学描述如下 其中是用于建模不同尺度对应的工作负载组行为的多尺度演化函数。
4 模型设计
4.1 模型概述
图1展示了GROUP的框架。首先图1(a)展示了提出的容器相关计算算法用于表达工作负载组行为的过程。简言之基于STL分解方法[23]从每个容器的原始工作负载序列中获得四个特征序列包括数据、趋势、季节和残差序列。然后基于考虑静态和动态容器信息的容器相关计算算法得到一组与对应特征相关性高的不同容器特征序列。最后基于序列之间的相关信息通过实际特征预处理操作获得表示工作负载组行为的3D输入张量。其次图1(b)展示了考虑工作负载组行为演化的深度学习多步预测模型的结构。具体来说基于获得的3D输入张量工作负载组行为的内部、时间、多特征和多尺度演化分析模块分别执行其各自的功能以实现工作负载组行为演化特征的明确提取和转换。值得注意的是GROUP可以解决单一预测任务或多重预测任务即预测单个容器或同时预测多个容器。由于篇幅限制本文主要关注解决单一预测任务。 4.2 模型详细描述
4.2.1 输入特征张量构建阶段
假设云原生应用包含n个容器并且预测的容器是。我们对每个容器的工作负载序列采用滑动窗口[11]进行批处理处理一个固定时间段内的字序列。假设滑动窗口大小为swk∗m其中k表示每个样本的历史预测周期数。因此每个容器的工作负载子序列将形成一个3D张量大小为1×1×sw。
(1) 工作负载序列分解时序分解是时序分析的一种流行方法。加性分解是工作负载序列的常用方法[15]因为它允许通过总和趋势T、季节S和残差R成分来获取原始序列D如图2和等式6所示。 我们采用Loess的季节和趋势分解STL[23]这是一种普遍的加性分解方法。如图3所示每个容器的原始工作负载序列可以转化为包括数据D、趋势T、季节S和残差R序列的四个特征序列。最后每个特征序列将形成一个3D张量大小为1×1×w。 (2) 工作负载相关计算为了有效地获得不同容器之间的相关工作负载序列我们提出了一种基于容器静态和动态信息的容器相关计算算法。
a. 静态相关计算首先基于静态相关性我们根据预测容器c筛选出与其相关的容器。受[6]的工作启发我们提出了三类用于描述容器自身、内部任务或服务和外部环境的静态指标如表2所示。详细说明在附录的第5小节中。
基于每个容器的静态指标可以获得两个容器之间的静态相关系数S(cx,cy)。 阈值是可接受的静态相关性阈值是第i个度量标准的相关因子是容器cx的第i个度量标准的值。而度量标准CodeInfo 用于识别具有相同业务或属于同一服务调用链的容器。其他度量标准使用两个容器之间的度量值一致性来决定它们是否相关。
b. 动态相关性计算 其次我们基于动态相关性对容器进行精细选择。交叉相关是一种用于时间滞后时间序列的著名相关度量算法已广泛应用于信号处理和时间序列分析[27]。交叉相关的思想是在考虑振幅和相位失真的情况下衡量两个时间序列之间的形状相似性。
给定两个时间序列交叉相关总是将一个序列例如Y保持静态对于每一个取自另一个序列X的延迟s在时间轴上划过Y以获取每个滑动窗口的内积值R。由和Y所得的交叉相关值C(, Y)如下所示 其中是具有滑动窗口的序列滑动窗口上的缺失值填充为0。
然后通过枚举不同的滑动窗口值s我们可以得到长度为2l-1的交叉相关值向量vc。假设vc的最大值和最小值分别为maxC和minC并对应于滑动窗口的延迟s1和s2。序列X和Y的交叉相关得分C(X,Y)可以计算如下 其中C(X, Y)∈[-1, 1]C越接近1或-1X和Y之间的相关性越强。此外正值表示X和Y以相同的方向变化反之它们以相反的方向变化。我们设置阈值如果绝对值|C(X, Y)|小于则X≁Y否则X∼Y。
因此我们可以获得不同序列之间的三个相关性指标包括相关度、相关方向和相关时间滞后。如图4所示我们按照C得分的降序排列它们。最终对于工作负载的每个特征我们可以获得与预测容器最高相关性的容器。 最后GROUP根据图像数据编码的思想构建一个用于表示工作负载组行为的三维输入张量。我们使用h×w×d来表示三维张量的大小。假设对于每个工作负载特征我们选择与预测容器最高相关性的三个容器通过特征串联可以获得一个大小为4×4×sw的输入张量其中高度h为4表示每个工作负载特征的不同容器数量宽度w为4表示不同工作负载特征的数量深度d为sw表示每个工作负载特征序列的长度。值得注意的是GROUP还采用了一些特征对齐操作以减少模型生成的难度。根据不同序列之间的相关方向确定是否需要翻转序列根据不同序列之间的相关时间滞后确定是否需要平移序列。
4.2.2 内部演化分析阶段
对于每个采样尺度的输入张量GROUP首先分析工作负载组行为的内部演化以使预测模型能够识别和挖掘预测容器的工作负载变化如何受到工作负载组行为的内部演化的影响。
作为一种著名的深度前馈神经网络CNN已广泛用于提取图像的局部特征。受Inception架构的启发如图5所示我们设计了一个四路卷积层用于提取与每个工作负载特征对应的不同容器序列的局部交互特征。由于原始输入张量的大小为4×4×sw对于每个工作负载特征我们使用三种尺度的滤波器包括2×2、3×3和4×4。每个卷积层包含两层。通过组合不同的滤波器尺寸可以将每个工作负载特征的不同容器的局部子序列视为找到工作负载组行为的内部演化关系。 此外我们还直接应用单变量卷积的输出作为另一种卷积形式。值得注意的是我们对每个卷积层使用相同的填充并在每个卷积层后应用ReLU激活函数这将产生四个大小相同的三维张量大小为4×4×sw。我们在高度h方向上将所有张量进行串联以获得一个大小为16×4×sw的张量以保持每个卷积层方式的唯一特征。最后我们将使用平均池化层在高度h方向上压缩特征张量。对于单一预测任务输出张量的大小为1×4×sw表示工作负载组行为的内部演化分析结果。
4.2.3 时间演化分析阶段
我们通过双向门控循环单元网络BiGRU[3]实现工作负载组行为的时间演化分析。GRU通过向RNN中添加更新门和重置门来克服RNN的局限性以减少长期存储能力和计算损失的梯度扩散。更新门()确定在当前预测中保留多少先前信息重置门()控制应忽略多少历史信息。 其中σ是具有输出值介于0和1之间的sigmoid激活函数是时间步骤t的输入矩阵是上一个时间步骤(t-1)的隐藏状态和是更新门的权重和偏差矩阵和是重置门的权重和偏差矩阵。
然而GRU 只能从正向方向提取信息而忽略了来自反向时间序列数据的有价值信息。因此提出了 BiGRU[3]它由一个前向 GRU 和一个后向 GRU 组成有效挖掘时间序列的正向和反向依赖关系。具体来说如图 6 所示对于当前模块输入张量中的每个工作负载特征序列使用两层 BiGRU 网络生成大小为 1×1×m 的工作负载序列用于 m 个未来时间步长。最后通过基于每个特征的未来工作负载序列的特征串联获得大小为 1 × 4 × m 的输出张量。 4.2.4 多特征演化分析阶段
我们采用四路卷积提取对应于不同特征的工作负载组行为之间的演化关系即数据序列、趋势序列、季节性序列和残差序列中的任意两个、三个和四个序列。如图 7 所示我们使用三种尺度的过滤器包括 2×2、3×3 和 4×4。同样我们直接使用单变量卷积的输出作为另一种形式的卷积。我们还在每个卷积层上使用相同的填充并在每个卷积层之后应用 ReLU 激活函数。由于本步骤的工作负载只有四个固定特征因此每个卷积层的方式仅包括一层。每个卷积层可以获得大小为 1 × 4 × m 的输出张量。此外我们通过权重 w 方向中的特征串联实现了四种卷积方式的输出张量的拼接。接下来通过平均池化层将特征图压缩为大小为 1×1×m 的张量。 4.2.5 多尺度演化分析阶段
基于每个采样尺度的内部、时间和多特征演化分析我们将能够获得三个大小为 1×1×m 的输出张量它们是 GROUP 提取的宏观、中观和微观工作负载变化对应的输出特征。然后如图 8 所示GROUP 通过宽度 w 方向上的特征串联获得大小为 1×3×m 的特征张量。然后全连接层提取相关性并压缩特征张量。此外我们在全连接层之前应用 Dropout 层以防止模型过度拟合。最后获得下一个 m 个时间步长的最终预测结果这是通过分析三个工作负载变化尺度之间的演化关系获得的融合结果。 4.2.6 模型训练
我们采用 RMSE 函数作为损失函数如下式所示 其中z 是所有预测时间步数 是时间步 t 的观测值而 是时间步 t 的估计值。使用自适应矩估计优化算法ADAM[13]将 GROUP 模型训练为最小化损失函数的训练目标初始学习率为 10^ −4结合了自适应学习率梯度下降和动量梯度下降的优点。
5 模型评估
5.1 实验设置
5.1.1 数据集
1) 公共数据集 [29] 是基于 Kubernetes 系统在 30 天内收集的容器资源工作负载数据。它被分为十个文件包括五种服务。每种服务类型包含两个容器2) 阿里巴巴于 2021 年发布的集群跟踪数据集[18]提供了从生产集群中收集的容器历史工作负载数据共计 12 小时。
5.1.2 评估指标
我们使用 MAE平均绝对误差和 RMSE均方根误差指标评估 GROUP 模型的性能。为了有效地展示不同方法之间的准确度差异一旦我们获得每个测试方法的 MAE 和 RMSE 结果就将所有结果相对于在相应指标上表现最差的方法的结果进行归一化以获得相对差异。
5.1.3 测试基准
1) RNN[8]仅考虑工作负载数据中的时间相关性的预测方法2) GRU[22]仅考虑工作负载数据中的时间相关性的预测方法3) VMD-BiGRU-ED[17]基于时间序列分解的多特征预测方法4) DBiLSTM[24]具有考虑组行为的双向 LSTM 预测方法5) DBiGRU基于 BiGRU 的 DBiLSTM 变体。为了公平比较每个时间网络采用两层结构每层有 128 个隐藏层神经元。
5.1.4 实验方案
(1) 测试 1验证 GROUP 在不同高级预测时间步骤下的行为。我们选择基于数据集 [29] 的五个不同服务容器作为预测容器。然后使用与每个预测容器相同服务类型的另一个容器作为相关容器。我们使用包括 3、5 和 7 在内的三种高级时间步长来预测每个预测容器的 CPU 工作负载。
(2) 测试 2验证 GROUP 在不同数量的相关容器下的行为。我们根据数据集 [18] 随机选择一个服务容器作为预测容器。然后通过我们的容器相关计算算法获取与预测容器对应于每个工作负载特征的多个相关容器。我们使用包括 1、2、3、4、5 和 6 的六个相关容器数量来预测每个预测容器的 CPU 工作负载。 其他详细的实验信息在附录中。
5.2 实验结果
5.2.1 不同的预测时间步骤
图9展示了每种测试方法在不同预测时间步骤下的归一化结果。具体而言有几个值得分析的实验现象。首先GROUP在不同的预测时间步骤下都实现了最佳的预测结果。对于MAE和RMSE指标来说相比其他所有方法GROUP的改进平均为2.40%至24.89%和2.39%至23.50%。其次VMD-BiGRU-ED方法实现了比RNN/GRU更好的预测准确性反映出考虑工作负载的多特征变化的有效性。然而VMD-BiGRU-ED的准确性仍然有限因为它只关注所预测容器的单个工作负载变化忽略了不同容器之间的工作负载演化关系。第三DBiGRU/DBiLSTM方法实现了比RNN/GRU更好的预测准确性反映出考虑工作负载组行为演化的有效性。然而DBiGRU/DBiLSTM的准确性也有限因为它只关注工作负载组行为的时间演化缺乏有效的特征处理操作。基于上述现象GROUP通过明确分析工作负载组行为的演化与每个容器工作负载变化之间的复杂关系提供了稳健的预测准确性。这证明了我们在特征优化表示和模型优化设计方面的努力是有效的。 5.2.2 不同数量的相关容器
图10展示了在不同数量的相关容器下的GROUP的归一化结果。如图10所示一方面GROUP始终提供最佳的预测准确性而具有两个相关容器的GROUP具有最大的准确性改进这证明了GROUP能够有效描绘不同数量的相关容器下工作负载组行为演化与每个容器工作负载变化之间的复杂关系因此具有很高的鲁棒性另一方面随着新的相关容器的工作负载序列被添加到输入特征图中输入特征的复杂性随之增加同时可能涉及的相关信息也会增加从而影响模型的准确性。因此这证明了工作负载组行为的表达是必要的。所提出的容器相关性计算算法可以指导相关容器的选择。然而相关容器的数量也会影响模型的准确性和复杂性。因此需要考虑确定适当的相关容器数量。通过从一个相关容器开始逐步测试当准确性降低或超出置信区间时即为最优或接近最优的数量。 5.3 讨论
所提出的GROUP模型主要适用于微服务架构下的容器应用因为容器之间的多副本和多实例关系导致了工作负载的相关性生成了工作负载组行为。当然经过简单改进后GROUP也可以应用于服务器或虚拟机的工作负载预测因为它们通常运行相关的应用程序或作业产生可重复和相关的业务行为。然而与容器应用相比它相对较弱。
6 结论
本文侧重于云原生应用的工作负载预测问题。据我们所知我们是第一个系统地对工作负载组行为进行建模并明确地将其用于云原生应用的工作负载预测。此外我们提出了一种容器相关性计算算法来表示工作负载组行为并提出了一种端到端的多步预测模型明确描绘了工作负载组行为的演化与每个容器工作负载变化之间的复杂关系。最后在公开可用的数据集上进行了充分的测试展示了我们的GROUP方法相对于其他最先进方法的性能优势。