当前位置: 首页 > news >正文

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

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

目录

1 相关工作


动态场景下基于主动式的微服务垂直与水平相结合的细粒度弹性缩放算法,旨在保证系统服务性能的前提下最小化供应商成本开销。算法主要分为以下三步:

一、利用深度学习中门控循环单元( Gated RecurrentUnit,GRU )的历史数据记忆特性对请求到达率进行长期变化趋势预测。由于请求流量呈现局部线性特征,因此可采用线性回归对请求流量进行短期预测,并将长期预测和短期预测结果的平均值作为预测的平均流量。实际上,用户流量可能短时间内发生激增或骤减,预测流量的平均值可能会低估了系统中到达的流量,从而导致用户请求丢失。因此,为了提高微服务系统的服务性能,同时维持稳定的客户源,服务供应商需要保留适当的冗余容量,以确保实际流量大于预测的平均流量时系统仍然能够为用户提供高质量的服务。因此,本文在通过 GRU 和线性回归计算得到系统的平均请求到达率后,采用3 − σ原则对预测的平均到达率进行适量扩展,以保证系统性能,提高服务可用性。

二、基于预测的请求到达率,应用排队理论中的平方根配置规则计算微服务需要的服务器核心数目。平方根配置规则可通过设置请求到达微服务系统后的排队概率阈值来控制系统对请求的响应时延在用户可接受范围内。

三、根据计算的缩放核心数,应用垂直与水平相结合的微服务实例缩放算法( Hybrid Scaling Algorithmfor Micro-Service Based on Vertical and Horizontal,HABVH )对微服务实例进行细粒度伸缩,旨在保证服务性能的同时减少使用的服务器数量。HABVH 算法首先应用细粒度垂直扩展对微服务进行资源分配,对于垂直扩展后仍不能达到需求资源的微服务,执行水平扩展算法,为微服务创建新的实例。对于需要收缩的微服务,算法调用延时实例收缩算法,可避免瞬时流量波动导致实例频繁地创建与销毁。最后,为了减少使用地服务器数量,本文设计了实例迁移算法将资源利用率低的服务器上的实例迁移到资源利用率高的服务器上。

1 相关工作

目前有很多学者研究了微服务系统的自动缩放,但大部分研究基于服务或实例级别的水平缩放,无法充分利用资源。文献将新实例部署问题建模为一个可变尺寸的装箱问题,并通过水平扩展实现新实例部署。文献提出了一种基于 Kubernetes 平台的名为 HANSEL的微服务自动缩放系统,该系统应用添加了注意力机制的 LSTM 进行负载预测,进而通过水平缩放的方式优化 Kubernetes 的弹性策略。文献出了一种轻量级的主动弹性缩放系统,该系统应用一种启发式水平缩放算法,旨在保证系统性能的前提下尽可能降低能量损耗。文献应用机器学习来预测每个微服务所需的副本数量,并对需要扩展的微服务实行水平伸缩以增强系统性能。文献设计了一种动态装箱策略和一种基于启发式的微服务自动缩放策略,旨在提高云数据中心计算资源利用率。

微服务实例级别的水平扩展可快读为微服务配置足够的资源,但可能造成额外的资源租赁开销。如果能够充分利用实例垂直扩展的细粒度控制和实例水平扩展的高可用性,则可有效地利用数据中心的计算资源。

目前也有少量文献研究了微服务系统的垂直和水平联合缩放。文献提出了一种通过水平缩放确定微服务实例数量及通过垂直缩放确定每个实例的 CPU和内存数量的资源配置框架。具体而言,垂直缩放是根据资源使用情况的历史数据的经验方差来寻找实例最佳资源配置,水平缩放则采用控制理论的基本思想和机器内核级别的性能指标来实现微服务最佳实例数目计算。在互联网应用场景中,微服务请求是动态到达的,为了尽量降低供应商的成本开销,需要根据动态到达的请求不断调整微服务实例的资源配置方案,所以该文献根据历史经验执行垂直缩放并不能准确地得到每个微服务需要的具体资源数目。文献提出的混合缩放算法首先计算微服务的需求,然后优先使用垂直缩放进行伸缩,如果垂直扩展的资源数目无法满足需求,则在另一台机器上执行水平扩展。这种混合缩放在一定程度上降低了供应商的成本开销,但面对互联网应用场景的大量请求时,很容易出现所有垂直缩放方案都无法满足需求的情况,此时混合缩放算法退化为水平缩放,因此,该文献所提出的混合缩放策略无法在请求量大的互联网应用场景下充分利用资源。

http://www.lryc.cn/news/104212.html

相关文章:

  • 【LeetCode】215.数组中的第K个最大元素
  • MySQL学习记录:第七章 存储过程和函数
  • Docker中gitlab以及gitlab-runner的安装与使用
  • 一起学SF框架系列5.12-spring-beans-数据绑定dataBinding
  • 火热报名中 | 赛宁独家技术支持第七届“蓝帽杯”网络安全技能大赛
  • 无涯教程-jQuery - Ajax Tutorial函数
  • Android日志
  • 【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试
  • SpringBoot自定义注解 + AOP+分布式Redis 防止重复提交
  • 3.yum安装分布式LNMP--剧本
  • 论文笔记:Fine-Grained Urban Flow Prediction
  • 系统集成|第八章(笔记)
  • 【分布式】分布式唯一 ID 的 几种生成方案以及优缺点snowflake优化方案
  • FFmpeg5.0源码阅读——av_interleaved_write_frame
  • 力扣 70. 爬楼梯
  • AVFoundation - 媒体捕捉
  • 【新版系统架构补充】-嵌入式技术
  • fpga开发--蜂鸣器发出连续不同的音调
  • Redis 主从同步原理
  • opencv-28 自适应阈值处理-cv2.adaptiveThreshold()
  • Java泛型5——泛型通配符
  • 牛客 AB25 ranko的手表 JAVA 枚举
  • 常微分方程建模R包ecode(二)——绘制相速矢量场
  • 学习C#编写上位机的基础知识和入门步骤:
  • 简单高效!低代码搭建销售自动化程序的方法与实践
  • 第九十三回 在Flutter中mock数据
  • 进程与线程的区别与联系
  • 使用gadl对土地利用栅格重分类
  • SQL-每日一题【1141. 查询近30天活跃用户数】
  • Java小型操作系统模拟(采用策略模式结合反射进行搭建,支持一些简单的命令)