小研究 - 主动式微服务细粒度弹性缩放算法研究(二)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法。算法通过预测请求到达率对系统进行资源预配置。基于预测结果,应用平方根配置规则计算需求资源数量,进而利用垂直缩放的细粒度资源控制特性和水平缩放的高可用性对微服务进行伸缩。最后应用基于微服务依赖关系的实例迁移算法进一步降低资源开销。实验表明,本文提出的算法在优化微服务系统时延和开销方面取得了显著效果。

目录

2 问题描述

2.1 网络模型

 2.2 服务模型

 2.3 请求模型

 2.4 时延分析

3 算法设计

3.1 微服务请求到达率预测

3.1.1 基于 GRU 的长期到达率预测

3.1.2 基于线性回归的短期到达率预测

3.1.3 基于 基于𝟒 − 𝛔准则的到达率扩展


2 问题描述

2.1 网络模型

本文考虑由一组多核服务器组成的网络架构作为微服务部署的网络平台。每台服务器由多个内存共享且具有相同计算能力的核心组成。因此,同一台服务器上的核心之间的通信时延可忽略不计,本文用参数𝐶表示一台服务器上的总核心数。服务器之间也是同构的,即每台服务器具有相同的计算资源(如 CPU、内存、磁盘等),且数据中心的服务器之间可直接进行数据传输。本文用H(I,L)表示数据中心的底网络架构,其中,𝐽表示网络平台中可用服务器集合,𝑀表示服务器之间的网络连接集合。由于数据中心中光网络连接具有丰富的带宽资源,因此本文主要考虑网络时延约束而忽略带宽约束。此外,由于大多数微服务对计算资源的干扰比对内存等其他资源的干扰更加敏感,因此,本文主要考虑计算资源的分配。本文主要符号及其含义如表 1 所示。

 2.2 服务模型

本文将互联网应用建模为具有前后依赖关系的微服务链,如图 1 所示。微服务链集合用𝑂表示,服务链𝑜,𝑜 ∈ 𝑂包含的微服务集合为𝑁 𝑜 ,对于集合𝑁 𝑜 中的微服务𝑛,其实例集合为𝐾 𝑛 。本文用𝐽 𝑛 表示部署有微服务𝑛的实例的服务器集合。不同微服务的实例可同时部署在同一台服务器上,实例之间独立运行,互不干扰。当同一个微服务的不同实例部署在同一台服务器时,可将不同的实例合并为一个实例对外统一提供服务。

 2.3 请求模型

关于云数据中心网络的相关研究表明请求到达率遵循时间间隔分布,目前很多文献将请求到达过程假设为泊松过程并进行建模,不失一般性地,本文也假设请求到达过程遵循泊松分布。对于微服务链𝑜,请求的到达过程遵循到达率为𝜇 𝑜 的泊松过程 [10] 。每个用户请求将由目标服务链上所有微服务节点依次处理,最终将结果传给用户。因此,请求在云数据中心的处理过程会有一定的延迟,该延迟主要包括请求在服务器上的排队时延和处理时延,以及请求在云数据中心的服务器之间的数据通信时延。每个微服务都可以在目标服务链上的微服务的任何一个实例上处理,并且会得到相同
的计算结果,但是由于每个微服务可能具有多个部署在云数据中心中的实例,因此当请求在服务链上的一个非出口服务的实例上执行完毕后,需要决定将请求发送给后继服务的哪个实例,本文通过计算各个实例所占用的核心数与所有实例占用的总核心数的比值得到的概率对请求进行转发,则路由到核心数多的实例上的请求越多。显然,每个请求有多条路由路径,本文用𝑆 𝑜 表示服务链𝑜的路由路径集合,则如下:

 2.4 时延分析

(1) 平均处理时延

服务链n的请求平均处理时延为:

3 算法设计

动态场景下的微服务请求到达率是一个动态变化的值,因此,动态场景下微服务系统的弹性伸缩并非易事。如果将一段时间𝑇分解为多个较小的时隙,则以时隙为缩放尺度可降低问题难度 [17-20] 。因此,本文将一段时间𝑇分解为多个时隙来研究动态场景下的微服务系统资源配置方案,即𝑇 = {1,2,⋯,𝑢,⋯,𝑇}。本文旨在优化一段时间𝑇内服务供应商租赁的服务器数量。

3.1 微服务请求到达率预测

基于GRU的时间序列预测在实际应用中表现良好,然而,GRU 需要大量的历史数据来训练模型,以提高预测精度。因此,实时场景下,GRU 可能无法快速得到精度较高的预测值。由于请求流量在短时间内呈现局部线性特征,因此可以采用基于时间窗的线性回归对请求到达率进行短期预测,并将 GRU 的长期预测结果与线性回归的短期预测结果的平均值作为预测的平均请求到达率。

3.1.1 基于 GRU 的长期到达率预测

本文利用GRU对历史数据良好的学习特性对用户请求到达率进行长期变化趋势预测。长期变化趋势预测采用时隙𝑢 + 1的前𝑥 𝑚 个时隙内的请求到达率预测时隙𝑢 + 1的请求到达率𝜇̂ 𝑢+1𝑚,即实现单步预测。𝑦 𝑢 表示时隙𝑢的输入数据,ℎ 𝑢−1 表示从上个时隙传递下来的隐藏状态信息,ℎ 𝑢−1 中包含了时隙𝑢之前的历史数据信息。𝑦 𝑢 和ℎ 𝑢−1 输入到 GRU 中,经过处理,得到时隙𝑢的隐藏层输出结果ℎ 𝑢 。GRU 内部两个门控单元更新门和重置门的输出信号分别表示为𝑨 𝑢 和𝑠 𝑢。

3.1.2 基于线性回归的短期到达率预测

用户请求到达率呈现局部线性特征,因此,为了更加精确地预测请求到达率,本文采用基于时间窗的线性回归算法对到达率进行短期预测。假设𝑢 + 1时隙之前的𝑥 𝑡 个时隙内的请求到达率为[𝜇 𝑢−𝑥 𝑡 ,⋯,𝜇 𝑢−1 ,𝜇 𝑢 ] 𝑇 ,则时隙𝑢 + 1的请求到达率可表示为𝜇̂ 𝑢+1𝑡= 𝜔 0 + 𝜔 1 𝜇 𝑢 ,𝜔 0和𝜔 1 是回归参数,因此,可将最后𝑥 𝑡 个时隙内的请求到达率之间的关系表示如公式(19):

3.1.3 基于 基于𝟒 − 𝛔准则的到达率扩展

为了保证实际请求到达率大于预测值时微服务系统仍然具有较好的服务性能,需要对预测的平均请求到达率进行适当扩展,适当扩展预测结果可以避免请求激增时系统资源供应不足导致的请求丢失。受 Tang 等人工作的启发,本文应用3 − σ准则进行请求到达率扩展。σ是请求到达率的标准方差,但由于请求到达率的波动范围可能很大,根据流量上限扩展需要大量的资源,为了避免过度预测导致不必要的资源占用,本文考虑以相对估计误差的标准差作为σ的取值。𝜇(𝑢)和𝜇̂(𝑢)分别表时隙t的真实到达率和预测到达率,则相对估计误差定义为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/16758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 面试题 应用程序结构 十

🔥 Intent 传递数据 🔥 Activity、Service、BroadcastReceiver之间的通信载体 Intent 来传递数据。而ContentProvider则是共享文件。 Intent可传递的数据类型: a. 8种基本数据类型(boolean byte char short int long float double…

如何配置一个永久固定的公网TCP地址来SSH远程树莓派?

文章目录 如何配置一个永久固定的公网TCP地址来SSH远程树莓派?前置条件命令行使用举例:修改cpolar配置文件 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 …

第1集丨Vue 江湖 —— Hello Vue

目录 一、简介1.1 参考网址1.2 下载 二、Hello Vue2.1 创建页面2.2 安装Live Server插件2.4 安装 vue-devtools2.5 预览效果 一、简介 Vue(读音 /vjuː/, 类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设…

app自动化测试之Appium问题分析及定位

使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 Appium Server日志-开启服务 通过命令行的方式启动 Appium Server,下面来分析一下启动日志&#…

使用web-view实现网页端和uni-app端是数据传输

要实现这个功能 第一步&#xff1a;要在vue的public文件夹下面引入 <script type"text/javascript" src"https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> 第二步&#xff1a;建立一个新的空的uni-app项目…

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统&#xff0c;具有持续集成、持续部署、微服务治理等功能&#xff0c;无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用&#xff0c;主要特点&#xff1a;部署简单、操作简洁、功能快速。 新增特…

Apache Doris 巨大飞跃:存算分离新架构

作者&#xff1a;马如悦 Apache Doris 创始人 历史上&#xff0c;数据分析需求的不断提升&#xff08;更大的数据规模、更快的处理速度、更低的使用成本&#xff09;和计算基础设施的不断进化&#xff08;从专用的高端硬件、到低成本的商用硬件、到云计算服务&#xff09;&…

JPEG有损图像压缩编码器(附源码)

概述 一个基本由自己实现的JPEG有损图像压缩编码器&#xff0c;基于JFIF&#xff08;JPEG文件交换格式&#xff09;标准&#xff1a; 色彩空间转换&#xff08;RGB to YUV&#xff09;色度抽样&#xff08;采样因子4:2:0&#xff09;MCU分块&#xff08;16x16的最小编码单元&…

多模态第2篇:MMGCN代码配置

一、Windows环境 1.创建并激活虚拟环境 #创建虚拟环境命名为mmgcn&#xff0c;指定python版本为3.8 conda create -n mmgcn python3.8 #激活虚拟环境 conda activate mmgcn2.安装pytorch #torch2.0.0 cu118 pip install torch2.0.0cu118 torchvision0.15.1cu118 torchaudio…

PACS系统源码:支持三维重建功能、集成放射科管理RIS系统、图文报告编辑、打印、多级审核机制

PACS系统源码 PACS系统是以最新的IT技术为基础&#xff0c;遵循医疗卫生行业IHE/DICOM3.0和HL7标准&#xff0c;开发的多功能服务器和阅片系统。通过简单高性能的阅片功能&#xff0c;支持繁忙时的影像诊断业务&#xff0c;拥有保存影像的院内Web传输及离线影像等功能&#xf…

【雕爷学编程】MicroPython动手做(11)——搭建掌控板IDE开发环境四种

为了能够打好基础&#xff0c;系统学习MicroPython&#xff0c;特地入手了二块掌控板 知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通…

【Docker 学习笔记】Docker架构及三要素

文章目录 一、Docker 简介二、Docker 架构1. Docker 客户端和服务器2. Docker 架构图3. Docker 运行流程图 三、Docker 三要素1. 镜像&#xff08;Image&#xff09;2. 容器&#xff08;Container&#xff09;3. 仓库&#xff08;Repository&#xff09; 一、Docker 简介 Dock…

2.4 传统经验光照模型详解

一、光照模型 光照模型&#xff08;illumination model&#xff09;&#xff0c;也称为明暗模型&#xff0c;用于计算物体某点处的光强&#xff08;颜色值&#xff09;。从算法理论基础而言&#xff0c;光照模型分为两类&#xff1a;一种是基于物理理论的&#xff0c;另一种是…

【MATLAB第61期】基于MATLAB的GMM高斯混合模型回归数据预测

【MATLAB第61期】基于MATLAB的GMM高斯混合模型回归数据预测 高斯混合模型GMM广泛应用于数据挖掘、模式识别、机器学习和统计分析。其中&#xff0c;它们的参数通常由最大似然和EM算法确定。关键思想是使用高斯混合模型对数据&#xff08;包括输入和输出&#xff09;的联合概率…

<Doc>Windows常见的doc命令

一&#xff1a;管理员身份运行cmd命令&#xff1a; 方式一&#xff1a;搜索框输入cmd&#xff0c;回车&#xff0c;点击&#xff1a;以管理员身份运行 出现如图所示&#xff1a; 方式二&#xff1a;快捷键运行方式&#xff1a; 1.按winr&#xff0c;在运行窗口中输入cmd。 …

JavaSE类和对象(重点:this引用、构造方法)

目录 一、类的定义方式以及实例化 1.面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在Java的世界里一切皆为对象。 2.类的定义和使用 1.在java中定义类时需要用到class关键字 3.类的实例化 4.类实例化的使用 二、this引用 …

Java API指南:掌握常用工具类与字符串操作

文章目录 1. API简介2. Java API的使用2.1 创建和使用Java API工具类2.2 使用String类进行字符串操作 结语 导语&#xff1a; Java作为一门功能强大的编程语言&#xff0c;其成功之处不仅在于语法结构的简洁明了&#xff0c;更因为其丰富的API&#xff08;Application Programm…

中药配方煎药-亿发智能中药汤剂煎煮系统,智慧中药房的数字化升级

随着中药的普及&#xff0c;在治病、养生等方面都发挥这积极作用&#xff0c;但中药煎煮过程繁琐&#xff0c;如果有所差错将会影响药品的药性。为了满足当今用户对中药的需求&#xff0c;增强生产效率和业务水平&#xff0c;亿发中药煎配智能管理系统应运而生&#xff0c;为用…

【JMeter】JMeter添加插件

目录 一、前言 二、插件管理器 三、推荐插件 1.Custom Thread Groups &#xff08;1&#xff09;Ultmate Thread Group &#xff08;2&#xff09;Stepping Thread Group 2.3 Basic Graph 资料获取方法 一、前言 ​ 在我们的工作中&#xff0c;我们可以利用一些插件来帮…

github gitlab 多用户多平台切换

一、背景 我需要用账号1 来登录并管理github 账号 我需要用账号2 来登录并管理gitlab 账号 二、设置账号 邮箱 设置账号1用户名与邮箱 git config --global user.name "miaojiang" git config --global user.email "187133163.com" 三、生成本地密钥…