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

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

目录

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.rhkb.cn/news/94046.html

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

相关文章

工博士与纷享销客达成战略合作,开启人工智能领域合作新篇章

近日&#xff0c;工博士与纷享销客在上海正式签署了战略合作协议&#xff0c;正式拉开了双方在人工智能与数字营销领域的合作序幕。这次合作将为双方带来更多机遇和发展空间&#xff0c;并为全球人工智能领域的客户提供更高效、智能的CRM解决方案。 < 双方项目人员合影 >…

【分布式共识算法】Basic Paxos 算法

basic paxos算法&#xff1a;描述的是多个节点就某个值达成共识。 muti-paxos 算法&#xff1a;描述的是执行多个basic paxos实例&#xff0c;就一系列值达成共识。 共识其实&#xff0c;比如当多个客户端请求服务器&#xff0c;修改同一个值X 多个阶段达成共识。 原理 角色…

07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户…

【CTF-web】备份是个好习惯(查找备份文件、双写绕过、md5加密绕过)

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/83.html 经过扫描可以找到index.php.bak备份文件&#xff0c;下载下来后打开发现是index.php的原代码&#xff0c;如下图所示。 由代码可知我们要绕过md5加密&#xff0c;两数如果满足科学计数法的形式的话&a…

图片懒加载指令-vueUse

基于Vue的自定义钩子集合 https://vueuse.org/ 适用于Vue 3和Vue2.7版本之后 基于vueUse定义懒加载指令

ByteBuffer 使用

ByteBuffer 使用 1 java.nio包中的类定义的缓冲区类型2 缓冲区常用属性2.1缓冲区的容量(capacity)2.2 缓冲区的位置(position)2.3 缓冲区的限制(limit)2.4 缓冲区的标记(mark)2.5 剩余容量 remaining/hasRemaining 3 缓冲区常用方法3.1 创建缓冲区3.1.1 allocate方法3.1.2 wrap…

NLP语言模型概览

语言模型结构分类 Encoder-Decoder&#xff08;Transformer&#xff09;: Encoder 部分是 Masked Multi-Head Self-Attention&#xff0c;Decoder 部分是 Casual Multi-Head Cross-Attention 和 Casual Multi-Head Self-Attention 兼具。比如T5&#xff0c;BART&#xff0c;MA…

美能达打印机刷卡扫描文件后,用户收不到扫描邮件

环境: 柯尼卡美能达一体机 bizhub 287 域服务器 Windows server 2019 问题描述: 新员工在域服务器创建账户后同步到打印服务器上面,他们在打印机扫描文件后,自动发邮件那个邮箱上没有他们邮件,导致他们也收不到邮件 正常是用户在打印机上刷卡后扫描件文件为PDF格式,…

Python系统学习1-9-类一之类语法

一、类之初印象 1、类就是空表格&#xff0c;将变量&#xff08;列名&#xff09;和函数&#xff08;行为&#xff09;结合起来 2、创建对象&#xff0c;表达具体行 3、创建类就是创建数据的模板 --操作数据时有提示 --还能再组合数据的行为 --结构更加清晰 4、类的内存分配…

uniapp中map使用点聚合渲染marker覆盖物

效果如图&#xff1a; 一、什么是点聚合 当地图上需要展示的标记点 marker 过多时&#xff0c;可能会导致界面上 marker 出现压盖&#xff0c;展示不全&#xff0c;并导致整体性能变差。针对此类问题&#xff0c;推出点聚合能力。 点聚合官网教程 二、基本用法 template…

一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘

星火应用商店可以非常方便的完成一些应用的下载&#xff0c;下面是官方网址 http://spark-app.store/download 我使用的是intel处理器&#xff0c;无需下载依赖项&#xff0c;直接点击软件本体 我这里下载amd64,根据自己的处理器下载对应版本 sudo apt install ./spark-stor…

sklearn机器学习库(二)sklearn中的随机森林

sklearn机器学习库(二)sklearn中的随机森林 集成算法会考虑多个评估器的建模结果&#xff0c;汇总之后得到一个综合的结果&#xff0c;以此来获取比单个模型更好的回归或分类表现。 多个模型集成成为的模型叫做集成评估器&#xff08;ensemble estimator&#xff09;&#xf…

代码随想录算法训练营第四十二天|LeetCode 121,122

目录 LeetCode 121.买卖股票的最佳时机 动态规划五步曲&#xff1a; 1.确定dp[i][j] 的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 5.打印dp数组 LeetCode 122.买卖股票的最佳时间II 动态规划五步曲&#xff1a; 1.确定dp[i][j] 的含义 2.找出递推公式 3.初始化dp数组…

[K8s]问题描述:k8s拉起来的容器少了cuda的so文件

问题解决&#xff1a;需要设置Runtimes&#xff1a;nvidia的同时设置Default Runtimenvidia

SpringCloud实用篇7——深入elasticsearch

目录 1 数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法1.2.5.小结 1.3 RestAPI实现聚合1.3.1 API语法1.3.2 业务需求1.3.3 业务实现 2 自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 实现…

git一次错误提交的回滚(不同分支因merge-需回滚)

—————————————————————————————— 注意&#xff01;注意&#xff01;注意&#xff01;git revert的坑&#xff08;能不revert千万不要操作&#xff09; —————————————————————————————— 场景&#xff1a;提交到…

Express 实战(一):概览

在正式学习 Express 内容之前&#xff0c;我们有必要从大的方面了解一下 Node.js 。 在很长的一段时间里&#xff0c;JavaScript 一门编写浏览器中运行脚本的语言。不过近些年&#xff0c;随着互联网的发展以及技术进步&#xff0c;JavaScript 迎来了一个集中爆发的时代。一个…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

竞赛项目 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

Redis_亿级访问量数据处理

11. 亿级访问量数据处理 11.1 场景表述 手机APP用户登录信息&#xff0c;一天用户登录ID或设备ID电商或者美团平台&#xff0c;一个商品对应的评论文章对应的评论APP上有打卡信息网站上访问量统计统计新增用户第二天还留存商品评论的排序月活统计统计独立访客(Unique Vistito…