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

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

目录

4 算法仿真及结果分析

4.1 实验数据生成

4.2 数据预处理

4.3 实验参数设置

4.4 实验结果分析

4.4.1 GRU-LR-𝟒 − 𝛔预测算法性能分析 预测算法性能分析

 4.4.2 垂直与水平相结合的缩放算法性能分析


4 算法仿真及结果分析

本实验对 GRU 预测模型的实现基于 Python3 完成,其他部分应用 java 语言完成仿真。

4.1 实验数据生成

本实验同时考虑五条微服务链在云数据中心的弹性缩放,每条服务链包含 5 个微服务。为了对动态缩放算法进行更全面的评估,本文通过 Abdullah 等人和李德方提出的负载生成方法为五条微服务链构建具有不同特征的请求到达率,并基于生成的请求到达率对预测模型和弹性缩放算法进行性能评估。本实验以 5 分钟为一个时隙,共生成 576 个时隙(即 48 小时)的请求到达率。

(1) 微服务链𝑜 1 :请求到达率线性增加。本实验采用公式(39)生成𝑜 1 的请求到达率。𝜇 1 (𝑢 + 1) = 𝜇 1 (𝑢 0 ) + 𝑢𝛥𝑏 + 𝑡 𝑑 𝑆𝑏𝑜𝑒(ℕ(0,1)) 。其中,𝜇 1 (𝑢 0 )即初始状态的请求到达率。𝑢表示第𝑢个时
隙,𝛥𝑏为固定值,本实验取 0.2。𝑡 𝑑 为随机噪声比例因子,取值为 0.5,𝜇 1 (𝑢 0 ) = 5。

(2) 微服务链𝑜 2 :请求到达率周期性变化。本实验采用公式(40)生成𝑜 2 的请求到达率

其中,𝛽是振幅,𝜇 2 (𝑢 0 )是初始状态的请求到达率,p表示周期。本实验中,𝛽 = 10,p = 200,𝜇 2 (𝑢 0 ) = 10。本实验采用 Gaussian 函数生成微服务链𝑜 3 、𝑜 4 和𝑜 5 的请求到达率。流量峰值可能出现在任意时刻,因此服务链的请求到达率是多个 Gaussian 函数的叠加。

(3) 微服务链𝑜 3 :请求到达率峰值集中在白天。

4.2 数据预处理

将数据输入到 GRU 中训练之前,需要先对数据进行标准化处理。标准化处理将数据统一缩放到指定范围内,以避免数据相差太大导致小数值被忽略,同时还可降低计算复杂度。本文采用极大极小值标准化( Max-min Normalization )方法将数据映射到区间[0,1]内。

4.3 实验参数设置

本实验对五条微服务链的请求流量分别应用 GRU 模型进行调参训练。其中,训练轮次、模型训练时进行梯度下降的每个 batch 中的样本数 batch_size 以及 Adam 算法的学习率分别为 30 、 64 、 0.001 。 GRU 神经网络隐藏层数取值为 1 ,隐藏层单元数在区间 [50,100] 内取值,时间步长在区间 [1,20]内取值,最终综合预测精度和训练预测时长。

预测模型中应用线性回归进行短期流量预测的时间窗口𝑥 𝑡 取值为 3。动态缩放实验中,每条服务链包含5 个微服务,服务器核心对微服务的服务率在 5-10 之间变化,每台服务器最大核心数为 8.动态实验时隙个数T 取值为 50,SR Rule 中排队概率阈值δ默认取值为 0.1。

4.4 实验结果分析
4.4.1 GRU-LR-𝟒 − 𝛔预测算法性能分析 预测算法性能分析

本文采用 GRU-LR-3σ算法对微服务请求到达率进行预测的效果如图 7 所示。从图 7 的预测效果图中可看出,对于具有不同特征的请求流量,通过 GRU-LR-3σ算法预测的到达率与真实到达率十分接近,GRU-LR-3σ算法的预测值在部分时刻略大于实际值,但总体来看二者相差并不大。因此,GRU-LR-3σ预测模型对预测的平均流量进行扩展可保留适当冗余资源以提升服务性能,但不会造成很大的资源浪费,这得益于 GRU-LR-3σ算法采用相对估计误差的标准差作为σ的取值,从而避免了过度的资源消耗。

 

 4.4.2 垂直与水平相结合的缩放算法性能分析

本实验以首次适应降序放置算法( First FitDecreasing,FFD )和随机缩放算法( Random )为对比算法对本文提出的基于垂直和水平的相结合的微服务缩放算法( HABVH )进行性能评估,FFD 和 Random算法介绍如下:

(1) FFD:FFD 算法在进行服务扩展时,首先对服务器剩余核心数降序排序,然后从有序列表末尾开始寻找刚好能满足待扩展实例核心需求的服务器,如果搜索完有序列表后未找到适合的服务器,则重启服务器进行实例扩展。当实例需要收缩时,FFD 算法采用与HABVH 相同的实例收缩算法回收资源。

(2) Random:Random 算法从所有满足待扩展实例核心需求的服务器中随机选择一台服务器进行实例扩展,如果没有满足需求的服务器,则重启一台服务器。同样地,Random 算法也采用与 HABVH 相同的实例收缩算法回收资源。本实验选取生成的五个数据集的第 461 至第 511共 50 个时隙内的请求到达率作为动态实验的流量输入,微服务系统请求总到达率为五个数据集的请求到达率之和,时隙 461 至时隙 511 内的请求总到达率。

本文通过设置请求排队概率控制系统对用户的响应时延,为了展示不同排队概率约束下 HABVH 算法的性能,本实验评估了请求到达率为图 9 所示的总到达率,请求排队概率阈值δ分别设置为 0.1、0.2、0.5、0.8 时 HABVH 算法对微服务系统的优化结果,实验结果如图 11 所示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】笔记2

文章目录 45、web实验-抽取公共页面46、web实验-遍历数据与页面bug修改47、视图解析-【源码分析】-视图解析器与视图[暂时没看]48、拦截器-登录检查与静态资源放行49、拦截器-【源码分析】-拦截器的执行时机和原理50、文件上传-单文件与多文件上传的使用51、文件上传-【源码流程…

socket

域套接字 Unix domain socket Unix Domain Socket(UDS,Unix 域套接字),它还有另一个名字叫 IPC(inter-process communication,进程间通信)。 使用 UDS 的好处显而易见:不需要经过网…

docker安装nginx并配置SSL

1、拉取镜像 docker pull nginx2、启动nginx容器,复制一份默认配置文件出来 // 以nginx镜像为基础镜像创建一个名为nginx01的容器 docker run -d -p 80:80 --name nginx01 nginx创建成功后会看到nginx的欢迎页面 3、挂载nginx目录 拷贝nginx的配置信息到主机目录…

《MySQL 实战 45 讲》课程学习笔记(三)

事务隔离 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。 隔离性与隔离级别 事务特性:ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)。当数据库上…

爬虫006_python中的运算符_算术运算符_赋值运算符_复合赋值运算符_比较运算符_逻辑运算符_逻辑运算符性能提升---python工作笔记024

首先看加减乘除 然后看这里的 // 是取整数部分,不是四舍五入 然后%这个是取余数 然后**是,几次方那种 指数

政策加持智能家居市场,涂鸦赋能客户打造“以人为本”智能生活新方式

7月18日,商务部等13部门联合发布了《关于促进家居消费若干措施的通知》(以下简称《通知》),《通知》指出,创新培育智能消费,支持企业运用物联网、云计算、人工智能等技术,着重加快智能家电、智能…

图神经网络(GNN)入门学习笔记(直观且简单)

文章目录 图的定义和表示可以使用图数据结构的问题将图结构用于机器学习的挑战最基本的图神经网络概述汇聚操作基于信息传递的改进图神经网络全局向量信息的利用 本篇文章参考发表于Distill上的图神经网络入门博客: A Gentle Introduction to Graph Neural Network…

华为云hcip核心知识笔记(存储服务规划)

云上存储 : 云硬盘:基于分布式架构,可弹性扩展的虚拟块存储服务 注意事项 挂载云硬盘实例和云硬盘必须在同一区域,否则挂载失败文件存储服务:完全托管的共享文件存储 可以为多个实例实现共享访问,不同vpc中可以进行对…

python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段

目录 运行情况: 代码: 承接 【python_PyQt5开发验证K线视觉想法工具V1.0】 博文 https://blog.csdn.net/m0_37967652/article/details/131966298 运行情况: 添加线段数据在K线图中用线段绘制出来 代码: 1 线段标记的数据格式…

svn还原本地代码

svn代码还原 问题描述:在vscode中修改了代码,没有提交,而且不小心点击了svn更新,导致本地修改的最新代码被覆盖,因为没有提交,所以远程仓库中也没有刚才修改的代码记录 解决: 通过vscode的时间…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&#xff…

内核链表在用户程序中的移植和使用

基础知识 struct list_head {struct list_head *next, *prev; }; 初始化: #define LIST_HEAD_INIT(name) { (name)->next (name); (name)->prev (name);} 相比于下面这样初始化,前面初始化的好处是,处理链表的时候,不…

iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

Docker 下载安装 Ubuntu18.04,输入以下命令: sudo apt update docker pull ubuntu:18.04 切换 Shell 到 Ubuntu 18.04,输入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 参数:容器的…

初学HTML:采用CSS绘制一幅夏天的图

下面代码使用了HTML和CSS来绘制一幅炎炎夏日吃西瓜的画面。其中&#xff0c;使用了伪元素和阴影等技巧来实现部分效果。 <!DOCTYPE html> <html> <head><title>炎炎夏日吃西瓜</title><style>body {background-color: #add8e6; /* 背景颜…

[UE4][C++]调整分屏模式下(本地多玩家)视口的显示位置和区域

一、分屏模式设置 在UE4中&#xff0c;多个玩家共用一个显示器就可以启用分屏模式&#xff0c;按玩家人数&#xff08;最大四人&#xff09;将屏幕均匀分割&#xff0c;显示不同玩家的视角&#xff0c;开发者可以在编辑器里设置分割类型&#xff08;水平或者垂直&#xff09;&a…

Redis如何实现排行榜?

今天给大家简单聊聊 Redis Sorted Set 数据类型底层的实现原理和游戏排行榜实战。特别简单&#xff0c;一点也不深入&#xff0c;也就 7 张图&#xff0c;粉丝可放心食用&#xff0c;哈哈哈哈哈~~~~。 1. 是什么 Sorted Sets 与 Sets 类似&#xff0c;是一种集合类型&#xff…

分治法 Divide and Conquer

1.分治法 分治法&#xff08;Divide and Conquer&#xff09;是一种常见的算法设计思想&#xff0c;它将一个大问题分解成若干个子问题&#xff0c;递归地解决每个子问题&#xff0c;最后将子问题的解合并起来得到整个问题的解。分治法通常包含三个步骤&#xff1a; 1. Divid…

2023年7月第4周大模型荟萃

2023年7月第4周大模型荟萃 2023.7.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布&#xff0c;携手打造一个由互联的超…

Docker 阿里云容器镜像服务

阿里云-容器镜像服务ACR 将本地/服务器docker image&#xff08;镜像&#xff09;推送到 阿里云容器镜像服务仓库 1. 在容器镜像服务ACR中创建个人实例 2. 进入个人实例 > 命名空间 创建命名空间 3. 进入个人实例 > 镜像仓库 创建镜像仓库 4. 进入镜像仓库 > 基本信…