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

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

目录

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 所示。

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

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

相关文章

Java 版 spring cloud + spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

基于以太坊+IPFS的去中心化数据交易方法及平台

自己的论文,哎费事 目录 基于以太坊IPFS的去中心化数据交易方法及平台 基于以太坊IPFS的去中心化数据交易方法及平台 摘要: 数据交易过程中存在数据权属不明和数据安全问题。本文开发了一种基于以太坊IPFS的去中心化数据交易方法及平台。方法包括&am…

IPv4网络用户访问IPv6网络服务器

NAT64静态映射为一对一的对应关系&#xff0c;通常应用在IPv4网络主动访问IPv6网络的场景中。 要求位于IPv4网络中的PC通过IPv4地址1.1.1.10能够直接访问位于IPv6网络中Server。 操作步骤 配置FW。 # 配置接口GigabitEthernet 0/0/1的IPv4地址。 <FW> system-view [F…

IP 工具

什么是IP 工具 IP 工具是用于轻松扫描和排除网络 IP 地址空间故障的网络工程工具。IP 工具使网络管理员能够审核、跟踪和监视 IP 地址、子网以及使用 IP 的设备和主机的性能。这个全面的网络工程工具集包括高级 IP 工具&#xff0c;如 Ping、系统资源管理器、MAC 地址解析器和…

设计模式行为型——解释器模式

目录 什么是解释器模式 解释器模式的实现 解释器模式角色 解释器模式类图 解释器模式举例 解释器模式代码实现 解释器模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&…

《零基础入门学习Python》第075讲:GUI的终极选择:Tkinter12

Tkinter 的基本组件我们已经介绍得七七八八了&#xff0c;剩下的一些我们在这节课全部都会讲解完毕。 &#xff08;一&#xff09;Message组件 Message&#xff08;消息&#xff09;组件是 Label 组件的变体&#xff0c;用于显示多行文本消息。众所周知&#xff0c;我们的Lab…

【腾讯云 Cloud Studio 实战训练营】Redisgo_task 分布式锁实现

文章目录 前言问题场景腾讯云 Cloud Studio Redisgo_task长短类型分布式场景介绍Redisgo_task实现原理SetNx(valueexpire)原子性子协程Done()时间点子协程中的Ticker Redisgo_task唯一外部依赖Redisgo_task Lock结构Redisgo_task架构健壮性设计Redisgo_task可扩展性Redisgo_tas…

MyBatis-Plus 和达梦数据库实现高效数据持久化

一、添加依赖 首先&#xff0c;我们需要在项目的 pom.xml 文件中添加 MyBatis-Plus 和达梦数据库的依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifac…

微信小程序使用 canvas 2d 实现签字板组件

本文是在微信小程序中使用 canvas 2d 来实现签字板功能&#xff1b; 效果图&#xff1a; 代码&#xff1a; 1、wxml <view><canvas id"canvas"type"2d"bindtouchstart"start"bindtouchmove"move"bindtouchend"end&qu…

Scratch Blocks自定义组件之「下拉图标」

一、背景 由于自带的下拉图标是给水平布局的block使用&#xff0c;放在垂直布局下显得别扭&#xff0c;而且下拉选择后回修改image字段的图片&#xff0c;这让我很不爽&#xff0c;所以在原来的基础上稍作修改&#xff0c;效果如下&#xff1a; 二、使用说明 &#xff08;1&am…

【图论】差分约束

一.情景导入 x1-x0<9 ; x2-x0<14 ; x3-x0<15 ; x2-x1<10 ; x3-x2<9; 求x3-x0的最大值&#xff1b; 二.数学解法 联立式子2和5&#xff0c;可得x3-x0<23;但式子3可得x3-x0<15。所以最大值为15&#xff1b; 三.图论 但式子多了我们就不好解了&#xff0…

【MySQL】视图与用户管理

【MySQL】视图 视图视图概念使用基表与视图的相互影响 用户管理新增用户删除修改密码 用户权限授予权限回收权限 视图 视图概念 视图就是一张虚拟表&#xff0c;其内容由查询定义。与真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化影响到基表&…

SpringBoot内嵌的Tomcat:

SpringBoot内嵌Tomcat源码&#xff1a; 1、调用启动类SpringbootdemoApplication中的SpringApplication.run()方法。 SpringBootApplication public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplicat…

Vue3和typeScript路由传参

1 params传的参数&#xff0c;页面刷新就消失,而query传的参数&#xff0c;页面刷新还会存在&#xff0c;所以通常用query。 query传参 跳转页面&#xff1a;拿到router对象,调用push方法做跳转. import { useRoute,useRouter} from "vue-router"; export default…

iOS 搭建组件化私有库

一、创建私有库索引 步骤1是在没有索引库的情况下或者是新增索引的时候才需要用到&#xff08;创建基础组件库&#xff09; 首先在码云上建立一个私有库索引&#xff0c;起名为SYComponentSpec 二、本地添加私有库索引 添加私有库索引 pod repo add SYComponentSpec https:/…

Transformer 论文学习笔记

重新学习了一下&#xff0c;整理了一下笔记 论文&#xff1a;《Attention Is All You Need》 代码&#xff1a;http://nlp.seas.harvard.edu/annotated-transformer/ 地址&#xff1a;https://arxiv.org/abs/1706.03762v5 翻译&#xff1a;Transformer论文翻译 特点&#xff1…

ElasticSearch基础篇-Java API操作

ElasticSearch基础-Java API操作 演示代码 创建连接 POM依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

33.利用abs 解决绝对值问题(matlab程序 )

1.简述 abs函数的功能是绝对值和复数的模 语法 Y abs(X) 说明 Y abs(X) 返回数组 X 中每个元素的绝对值。如果 X 是复数&#xff0c;则 abs(X) 返回复数的模。 示例 标量的绝对值 y abs(-5) y 5 向量的绝对值 创建实值的数值向量。 x [1.3 -3.56 8.23 -5 -0.01…

二十三种设计模式第二十二篇--中介者模式

说到这个模式就有趣了&#xff0c;不知道大家在生活中喷到过中介没&#xff1f;其实中介这个词吧&#xff0c;我也说不上好还是坏&#xff0c;有时候他可以帮助人们更快的达到某个目的&#xff0c;但有的时候吧&#xff0c;这个有贼坑人&#xff0c;相信网络上有各种被中介坑的…

【Python】模块学习之matplotlib柱状图、饼状图、动态图及解决中文显示问题

目录 前言 安装 pip安装 安装包安装 柱状图 主要方法 参数说明 示例代码 效果图 解决中文显示问题 修改后的图片 饼状图 主要方法 示例代码 效果图 动态图 主要方法 动态图官方使用介绍 示例代码 颜色设置 内建颜色 字体设置 资料获取方法 前言 众所周…