小研究 - 主动式微服务细粒度弹性缩放算法研究(三)
微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法。算法通过预测请求到达率对系统进行资源预配置。基于预测结果,应用平方根配置规则计算需求资源数量,进而利用垂直缩放的细粒度资源控制特性和水平缩放的高可用性对微服务进行伸缩。最后应用基于微服务依赖关系的实例迁移算法进一步降低资源开销。实验表明,本文提出的算法在优化微服务系统时延和开销方面取得了显著效果。
目录
3 算法设计
3.3 微服务实例迁移与缩放
3.3.1 HABVH 算法整体架构
3.3.2 垂直扩展算法
3.3.3 水平扩展算法
3.3.5 实例迁移算法
3 算法设计
3.3 微服务实例迁移与缩放
根据 SR Rule 为每个微服务计算出需要缩放的核心数后,需要决定要扩展的核心具体的部署位置以及要回收的核心所属的实例。因此,本章提出了基于垂直和水 平 的 混 合 微 服 务 缩 放 算 法 ( Hybrid ScalingAlgorithm for Micro-Service Based on Vertical andHorizontal,HABVH )对微服务实例进行细粒度伸缩,旨在保证服务性能的同时减少使用的服务器数量。
3.3.1 HABVH 算法整体架构
HABVH 算法充分利用垂直缩放的细粒度控制和水平缩放的高可用性对微服务进行缩放。首先,根据 SRRule 计算得到的核心数判断微服务是否需要缩放,并将需要缩放的微服务加入集合𝑁 𝑡𝑑𝑎𝑚𝑓 中,进而对𝑁 𝑡𝑑𝑎𝑚𝑓中的微服务进行具体缩放操作。
HABVH 包含以下几个主要步骤:首先判断𝑁 𝑡𝑑𝑎𝑚𝑓中的微服务需要扩展还是收缩。对于需要扩展的微服务,优先执行垂直扩展算法( Vertical Scale-Out Algorithm,VSOA ),如果垂直扩展后仍然存在待部署核心,则将微服务加入水平扩展队列 𝑅 𝑝𝑣𝑢ℎ。当𝑁 𝑡𝑑𝑎𝑚𝑓 中所有需要扩展的微服务都执行完垂直扩展后,再对水平扩展队列中的微服务统一执行水平扩展算法( Horizontal Scale-Out Algorithm,HSOA )。对于需要收缩的微服务,调用延时实例收缩算法( Instance Scale-In Algorithm,ISIA )回收核心。当集合𝑁 𝑡𝑑𝑎𝑚𝑓 中所有微服务完成缩放后,为了进一步降低供应商租赁的服务器数目,本文提出了实例迁移算法( Instance Migration Algorithm,IMA ),IMA 可在保证服务性能不下降的前提下减少使用的服务器数目。
3.3.2 垂直扩展算法
垂直扩展算法充分利用已部署实例所属服务器上的资源对微服务进行细粒度扩展。垂直扩展算法具有两个优势:首先,垂直扩展利用已经启动的服务器上的资源进行扩展,不需要额外租赁服务器,因此避免增加供应商的成本开销。其次,根据定理 1,垂直扩展可将微服务实例集中部署,其性能优于拆分部署方案。但是,当对微服务已部署实例全部执行完垂直扩展后还存在待部署的核心,则需要将微服务加入水平扩展队列𝑅 𝑝𝑣𝑢ℎ,并在所有微服务执行完垂直扩展后调用水平扩展算法。
3.3.3 水平扩展算法
水平扩展算法将待扩展的实例分为大实例和小实例,并对大实例和小实例采用不同的部署方式,以快速得到部署方案。首先计算参数𝑣和𝑤的值:

3.3.5 实例迁移算法
为了进一步减少使用的服务器数目,降低服务供应商的成本,本文设计了实例迁移算法 IMA。实例迁移算法的整体思想如下:将资源利用率低的服务器上的实例尽可能迁移到资源利用率较高的服务器上,然后将资源利用率低的服务器的实例列表清空,以减少租赁的服务器数量。为了尽量减小迁移过程对微服务系统性能的影响,本文定义服务器𝑗的评价函数𝐸 𝑗 ,𝐸 𝑗 用服务器𝑗上部署的微服务之间的依赖关系总和来计算。
相关文章:
小研究 - 主动式微服务细粒度弹性缩放算法研究(三)
微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法…...
驱动开发相关内容复盘
并发与竞争 并发 多个“用户”同时访问同一个共享资源。 竞争 并发和竞争的处理方法 处理并发和竞争的机制:原子操作、自旋锁、信号量和互斥体。 1、原子操作 原子操作就是指不能再进一步分割的操作,一般原子操作用于变量或者位操作。 …...
2.2 身份鉴别与访问控制
数据参考:CISP官方 目录 身份鉴别基础基于实体所知的鉴别基于实体所有的鉴别基于实体特征的鉴别访问控制基础访问控制模型 一、身份鉴别基础 1、身份鉴别的概念 标识 实体身份的一种计算机表达每个实体与计算机内部的一个身份表达绑定信息系统在执行操作时&a…...
C++ 注释
程序的注释是解释性语句,您可以在 C 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。 C 支持单行注释和多行注释。注释中的所有字符会被 C 编译器忽略。 C 注释一般有两种: // - 一般用于单行注释。 /* … …...
Spring事务(声明式事务)(Spring的事务,Spring隔离级别,事务传播机制)
目录 一、什么是事务,为什么要用事务 二、Spring声明式事务 🍅 1、Transactional的使用 🎈 事务回滚 🎈注意:异常被捕获,不会发生事务回滚 🍅 2、Transactional 作⽤范围 🍅 …...
Linux运维面试题(四)之Linux服务管理
Linux运维面试题(四)之Linux服务管理 4.1 SSHSSH的登录验证方式SSH的登陆端口(默认22)和监听设置(/etc/ssh/sshd_config)SSH的登录用户限制(/etc/ssh/sshd_config PermitRootLogin)SSH的登录超时设置(/etc/…...
ChatGPT能否撰写科研论文?
ChatGPT,这款被许多人誉为语言处理领域的“黑马”,究竟能否应用于撰写科研论文?近期,以色列理工学院生物学家兼数据科学家Roy Kishony带领的团队,针对这一问题进行了系列研究,其结果已在《Nature》杂志上发…...
2023 电赛 E 题 K210方案
第一章:K210 介绍 K210芯片是一款基于RISC-V架构的嵌入式人工智能芯片,具备低功耗、高性能的特点。它拥有强大的图像处理和机器学习能力,适用于边缘计算设备和物联网应用。为了方便开发者,K210芯片提供了丰富的外设接口ÿ…...
网络知识介绍
一、TCP 传输控制协议,Transmission Control Protocol。 面向广域网的通信协议,跨域多个网络通信时,为两个通信端点之间提供一条具有如下特点的通信方式: 基于流、面向连接、可靠通信方式、网络状况不佳时尽量降低系统由于重传带…...
MapStruct设置全局的ComponentModel
在mapStruct上边,如果我们要切换成非默认的组件模式,常常要在Mapper注释中添加componentModel "spring",如果类太多的了的话,非常麻烦,有没有更好的方式呢,有的,可以在pom中添加一个…...
LinearAlgebraMIT_6_ColumnSpaceAndNullSpace
这节课的两个重点是column space列空间和null space零空间。 x.1 pre-multiply/left multiply and post-multiply/right multiply 对于pre-multiply/left multiply左乘和post-multiply/right multiply右乘,如果用英文的pre-和post-是比较容易理解的, A…...
出版物经营许可办理 出版物许可地址变更 出版物零售延期
一、出版物零售单位设立所需材料 1、申请书 2、营业执照 3、租赁合同 4、主要负责人身 份证 5、出版物经营许可申请表 二、办理出版物经营许可证所要符合的条件 1、有确定的企业名称和经营范围; 2、有出版物业务的经营场地; 3、有出版物业务的组织机构和发行人员。 三、…...
【LeetCode每日一题】——807.保持城市天际线
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 1572.矩阵对角线元素的和 四【题目描述】 给你一…...
JavaScript--Date(日期)对象
介绍和说明 创建一个Date对象并获取当前日期和时间: 使用new Date()语句可以创建一个表示当前日期和时间的Date对象。它将使用客户端设备上的当前日期和时间。例如:const currentDate new Date(); 获取特定日期的年、月、日、小时、分钟、秒࿱…...
一文讲清多线程与多线程同步
1 多线程 1.1 线程的概念 十多年前,主流观点主张在可能的情况下优先选择多进程而非多线程,如今,多线程编程已经成为编程领域的事实标准。多线程技术在很大程度上改善了程序的性能和响应能力,使其能够更加高效地利用系统资源&…...
《Java-SE-第二十六章》之线程池
前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…...
【数据库】将excel数据导入mysql数据库
环境:Windows10 mysql8以上 将你要导入的excel表另存为txt格式 打开txt格式文件,删除表头行并另存为并更改编码方式(由于与数据库的编码不同,会导致导入报错) 通过命令行登录数据库 winr cmd进入 进入装mysql的目录位…...
无涯教程-Lua - repeat...until 语句函数
与 for 和 while 循环(它们在循环顶部测试循环条件)不同,Lua编程中的 repeat ... until 循环语言在循环的底部检查其条件。 repeat ... until 循环与while循环相似,不同之处在于,保证do ... while循环至少执行一次。 repeat...until loop - …...
环形链表 LeetCode热题100
题目 给你一个链表的头节点 head ,判断链表中是否有环。 思路 快慢指针。开始快指针在慢指针前面,当快指针等于慢指针时说明有环,如果快指针指向null时说明无环。 代码 /*** Definition for singly-linked list.* struct ListNode {* …...
使用python将每组两行数据合并一行
1、使用场景 将有规律的每组(一组2行)的单数行和双数行合并为一行,以空格分割。 比如使用pssh批量得出的结果,想让ip行和结果行合并为一行(前提如上所述) [rootk8s-master1 tmp]# pssh -h iplist -i hostname [1] 18:12:42 [SU…...
为什么92%的Polars新手在group_by后OOM?揭秘2.0中streaming.groupby()与partition_by()的内存分片临界点
第一章:为什么92%的Polars新手在group_by后OOM?揭秘2.0中streaming.groupby()与partition_by()的内存分片临界点当数据量突破单机内存阈值时,传统 group_by() 会将全部分组键哈希映射载入内存构建全局哈希表——这正是导致92%新手遭遇 OOM 的…...
别再傻傻分不清了!手把手教你选对安规电容(X1/X2/Y1/Y2等级详解)
电子工程师必读:安规电容X/Y等级实战选型指南 当你在设计一款家用空气净化器的开关电源时,突然发现EMC测试总是不达标;当你维修一台工业变频器时,发现安规电容爆裂导致设备瘫痪——这些场景背后,往往隐藏着对X1/X2/Y1/…...
MySQL 5.7.32 Online DDL避坑指南:如何避免主从延迟和锁等待?
MySQL 5.7.32 Online DDL实战避坑:高并发场景下的零停机表结构变更策略 在数据库运维的日常工作中,表结构变更(DDL)操作总是让人又爱又恨。特别是当面对千万级数据表时,一个简单的ALTER TABLE操作就可能引发连锁反应—…...
忍者像素绘卷代码实例:Python调用Z-Image-Turbo-rinaiqiao模型避坑指南
忍者像素绘卷代码实例:Python调用Z-Image-Turbo-rinaiqiao模型避坑指南 1. 环境准备与快速部署 在开始使用忍者像素绘卷之前,我们需要先搭建好Python环境并安装必要的依赖库。这个模型基于Z-Image-Turbo深度优化,特别适合生成16-Bit复古风格…...
Phi-3-mini-4k-instruct-gguf效果展示:温度0.0下100%一致性的制度类文本生成
Phi-3-mini-4k-instruct-gguf效果展示:温度0.0下100%一致性的制度类文本生成 1. 模型介绍与特点 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,属于Phi-3系列中的GGUF版本。这个模型特别适合需要稳定、一致输出的场景,尤其是…...
Qwen2.5-7B-Instruct效果展示:复杂代码生成与深度知识解答真实案例
Qwen2.5-7B-Instruct效果展示:复杂代码生成与深度知识解答真实案例 1. 项目简介 Qwen2.5-7B-Instruct是阿里通义千问系列的旗舰级大模型,相比1.5B和3B的轻量版本,这个7B参数的模型在能力上实现了质的飞跃。它专门针对复杂的文本交互场景设计…...
告别传统方法:LogAnomaly如何用NLP技术提升日志异常检测准确率?
告别传统方法:LogAnomaly如何用NLP技术重构日志异常检测范式? 日志数据如同数字世界的神经系统,记录着系统运行的每一次"心跳"与"呼吸"。传统检测方法就像拿着放大镜寻找心电图异常,而LogAnomaly则带来了全新…...
珠海内有哪些做专精特新,创新型中小企业。权代理事务通过率高
在珠海,众多专精特新、创新型中小企业在发展过程中,知识产权代理事务变得尤为重要,而珠海飞拓知识产权代理事务凭借其独特优势,成为了高通过率的代表。企业痛点催生专业服务在专精特新、创新型中小企业培育与申报过程中࿰…...
JeecgBoot启动配置
一、引入maven指定自己的maven仓库 二、指定JDK 记得apply!!!!然后OK 三、配置MySQL数据库(尽量≥5.7版本) 四、运行db文件夹下的SQL文件 五、后端本地环境(application-dev.yml)指定好数据源 1、M…...
C语言回调函数在TCP客户端中的应用与实践
1. 回调函数基础概念解析回调函数是C语言中一种强大的编程机制,它允许我们将函数作为参数传递给其他函数。这种设计模式在现代编程中极为常见,特别是在事件驱动编程、异步操作和模块化设计中。1.1 回调函数的本质回调函数本质上是一个通过函数指针调用的…...
