不同场景下的弹性伸缩

news2024/9/30 21:28:12

弹性伸缩是公有云和Kubernetes独有的特性,如何设计使用弹性伸缩是SRE工作的重点之一。

什么样的场景适合弹性伸缩

  1. 流量具有明显潮汐的业务,如金融、教育等行业,此类弹性伸缩主要以降本为目的
  2. 流量具有突发性、峰尖突出的业务,如社交、电商等行业,此类弹性伸缩主要以保持服务可用性为主要目的,兼顾降本

 什么样的场景不适合弹性伸缩

  1. 以有状态服务为主的业务,如数据库、存储等相关服务,此类存在启动时间长、数据敏感等问题,频繁的弹性伸缩势必会造成服务的稳定性影响及数据不完整问题
  2. 业务流量异常稳定的业务,如电子邮箱
  3. 对稳定性和安全性有严格要求的业务,如军工行业

弹性伸缩的要点

  1. 伸缩所依仗的指标,如CPU、内存、时间、第三方指标等
  2. 测试及历史监控数据,用来得出服务的潮汐图
  3. 完备的容量规划,结合第2项的数据,得出弹缩的数量范围
  4. 业务容忍度,通过测试得出影响业务体验的具体数值,如服务最低数量、单位时间需要完成的弹缩数量
  5. 缩的指标,缩的早了影响服务稳定,缩的晚了增加成本

弹性伸缩的常见场景        

       公有云

        以阿里云为例,如果服务已完成容器化,那么可以使用HPA/Keda+ESS的组合方式,设计弹性伸缩。伸缩的场景大致分为两种:

  1. 以时间为规则的伸缩,如证券交易所,系统有着严格的运行时间,在设计伸缩计划的时候,Pod和节点伸缩可以单独按照时间规则撰写规则,具体在时间数值上,节点的伸缩时间要早于或晚于Pod的时间,因为节点加入Kubernetes集群需要时间,也要保证Pod先优雅的退出;当然如果服务还没有进行容器化,那么也可以单独使用ESS服务,只是要设置系统模板以及启动模板
  2. 以资源监控为规则的伸缩,首先是Pod的伸缩,一般分类两类,第一种是以自身资源为规则,如CPU和内存,这个使用HPA即可实现, 第二种则是以第三方资源为规则,如网关流量、消息队列等,这个则就要使用Keda进行实现。而节点的伸规则一般使用Kubernetes的事件触发,缩规则则使用节点自身的资源规则。这种规则下,Pod的规则敏锐度和节点的启动时间是关键点,一般的经验中,我们会对Kubernetes的节点采用二八规则,即固定节点预留20%的空闲资源,保障在流量快速增长初期可以快速的完成Pod调度,这20%用完后再触发新的节点的扩充,保障服务的平稳,另外阿里云的ESS也可以使用预启动功能单独缩短节点的启动时间,或者在规律的服务潮汐规律下,有可以使用再加一个时间规则,这个规则和Kubernetes的事件规则不冲突,可以做为互补。               

        多云

          因容灾考虑或者业务分布问题,比如全球业务等,许多公司采用了多云架构,比如国内采用阿里云,海外采用AWS或者微软云;或者阿里云+腾讯云双云灾备结构。如果多云承载的业务不相同的话,那弹性伸缩计划只需照着上面的方式在每个云上独立布置即可。但如果是灾备架构的话,在设置弹性伸缩计划的时候,则需要不同的考虑。一般灾备主要是两种场景:

  1. 主备模式,即平时主要是在主云山运行,备用云只运行少量Pod,或者零Pod,主云出现故障不可用后,触发备用云。这个整体的设计一般是利用域名的全局流量管理,将两云的解析设置成主备模式,当主云解析不可访问时,触发主备切换,将流量打入备用云的解析,在流量进入备用云后,触发弹性伸缩规则,完成服务请求承接。这个方案中,使用自身资源指标做为规则的HPA不太适用,第一是自身资源检测具有滞后性,第二则是HPA最低Pod数量不能为零。所以只能采用Keda,而扩充规则的指标则选择网关流量。这里面最重要的点是服务的启动时间,这关系着服务的中断时长,除了要选对指标外,还要调高规则触发的敏感度和数量,故障的用户请求挤压,会导致出现短暂数倍的请求压力。另一个影响速度的则是节点伸缩,阿里云的ESS也是支持第三方指标规则触发,如果备用云没有相应功能,则可以通过自研程序的方式实现,可以大大缩短服务扩充时间。
  2. 主主模式,即服务均衡运行在多云上,没有主次之分。这种场景一般是那种区域比较大的业务场景,比如面向全球的服务,或者某大区的服务,一来因不同云的布局不同,可以最大化的提升服务体验,比如亚洲使用国内共有云,欧美使用海外云;国内北方使用某云,南方使用另外的云等。二来也可以互为灾备,毕竟体验差一些总好过不可用。这种模式下,相对主备模式,服务的弹缩要求要宽松许多,因为本身就有一定数量服务在运行中,有一定时间缓冲,弹缩方案可以参考主备模式,但在具体规则上,可以视业务要求,适当选择自身资源指标为规则,毕竟在稳定性来说,采集自身指标是最稳定的,调用第三方指标要承受多个不确定性(第三方服务的稳定性、网络稳定性等)

        混合云 

         虽然如今公有云大行其道,但私有云因其数据安全和长期成本低廉考虑,依然是不少大型公司不能放弃的选项,但公有云独有的快速弹缩能力,却是私有云所不能具备的,疫情期间许多公司满世界找服务器的场面可是历历在目。所以混合云架构是一个不错的选项。混合云的架构一般有三种,一种是参考上面公有云的主主模式,即私有云和公有云均部署完整的服务;第二种是按照服务分层模式,即Web入口层、服务层放在公有云,数据层放在私有云,这种模式下需要网络专线打通公有云和私有云;第三种则是私有云为主,公有云为辅的架构,即私有云负责日常主要请求,公有云负责增量请求。第一和第二种架构只需要参考上面公有云的弹缩方案即可,而第三种架构,除了上面的方案外,还有可以采用私有云+Serviceless的方案,Serviceless只需考虑服务层面的伸缩,不用考虑节点的伸缩,在伸缩效率上更加高效。

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

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

相关文章

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…

U盘恢复数据工具:让数据失而复得的魔法

优盘里数据丢失无疑会给我们的工作和生活带来诸多不便。幸运的是,优盘数据恢复软件应运而生,它们如同数据的守护者,为我们提供了找回丢失数据的希望。这次我们就一同来探讨u盘恢复数据有什么方法吧。 1.福昕恢复数据 链接直达:h…

AutoSar 通信服务架构,CAN通信诊断详解

文章目录 Com(通信服务模块)PDU的定义和结构PDU的分类IPDU Mux 模块PDU R 模块(路由)Bus TP 模块BUS InterfaceCanIf模块LinIf模块 发送数据示例(CAN报文)接收数据示例(CAN报文)通信…

监控告警功能详细介绍及操作演示:运维团队的智能保障

在当今这个信息化高速发展的时代,运维团队面临着前所未有的挑战。为了确保系统的稳定性和高效运维,监控告警功能成为了运维团队不可或缺的得力助手。本文将详细介绍我们的监控告警功能,并结合实际操作页面进行演示,帮助运维团队更…

Docker入门指南:快速学习Docker的基本操作

为什么需要Docker 有时我们在本地开发好程序并成功运行之后,却在服务器上运行不起来,通过观察日志通常会发现,哦原来是这个库没安装,于是我们就需要先安装需要用到的库,然后再启动服务你可能还会发现用到的数据库信息…

《Linux从小白到高手》理论篇(六):Linux软件安装一篇通

List item 本篇介绍Linux软件安装相关的操作命令,看完本文,有关Linux软件安装相关操作的常用命令你就掌握了99%了。 Linux软件安装 RPM RPM软件的安装、删除、更新只有root权限才能使用;查询功能任何用户都可以操作;如果普通用…

真正的Open AI ——LLaMA颠覆开源大模型

1. LLaMA 简介 LLaMA(Large Language Model Meta AI)是由Meta(原Facebook)推出的一个大型语言模型系列,旨在通过更小的模型规模和更少的计算资源,实现与其他主流语言模型(如GPT)相媲…

spring简短注入

新建bean 创建set方法 jpackage com.dependency.spring6.bean;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class User {private static final Logger LOGGER LoggerFactory.getLogger(User.class);private String username;private String password;pr…

RPA跨流程复用元素技巧|实在RPA研究

为什么要跨流程复用元素 在 RPA 操作中,元素至关重要,因为自动化的本质就是模拟人类对元素的操作。基本上,每个流程都会包含若干个元素。对于同时维护多个流程的用户而言,相似的流程包,甚至是同一个元素。例如电商用户…

Solidworks斜接法兰快速绘制钣金箱体

Solidworks斜接法兰快速绘制钣金箱体 Chapter1 Solidworks斜接法兰快速绘制钣金箱体 Chapter1 Solidworks斜接法兰快速绘制钣金箱体 0.5mm间距为钣金焊接的预留焊缝。

Linux云计算 |【第四阶段】RDBMS1-DAY6

主要内容: MySQL索引(索引分类、创建索引)、用户及授权(创建用户并授权、查看授权、撤销授权、授权库mysql)、root密码恢复、备份、使用mysqldump进行逻辑备份、Percona 一、MySQL索引 1、基本概念 MySQL 索引(Inde…

给虚拟机安装操作系统以及无密码SSH登录

安装完虚拟化软件VMware Workstation Pro 17之后,我们下载了Ubuntu光盘映像文件,上次说演示desktop版的安装,但是考虑到后面要部署数据库,所以为了方便起见还是下载sever服务器版。 文件还挺大,在等待下载完成这会我们…

基于SpringBoot的休闲娱乐代理售票系统设计与实现

1.1研究背景 21世纪,我国早在上世纪就已普及互联网信息,互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统,由从今传统的管理模式向互联网发展,如今开发自己的系统是理所当然的。那么开发休闲娱乐代理售票…

C++那些事之内存优化

C那些事之内存优化 通常程序运行时内存是一个比较大的问题,如何减少内存占用和提升访问速度是至关重要。为了解决这些问题,C20 引入了 no_unique_address 特性,并结合空基类优化(EBO, Empty Base Optimization)&#x…

33 指针与数组:数组名与指针的关系、使用指针遍历数组、数组指针、指针数组、字符指针

目录​​​​​​​ 1 数组名与指针的关系 1.1 数组名 1.2 对数组名取地址 1.3 数组名与指针的区别 1.3.1 类型不同 1.3.2 sizeof 操作符的行为不同 1.3.3 & 操作符的行为不同 1.3.4 自增自减运算的行为不同 1.3.5 可变性不同 2 使用指针遍历数组 2.1 使用 *(nu…

智能网联汽车飞速发展,安全危机竟如影随形,如何破局?

随着人工智能、5G通信、大数据等技术的飞速发展,智能网联汽车正在成为全球汽车行业的焦点。特别是我国智能网联汽车市场规模近年来呈现快速增长态势,彰显了行业蓬勃发展的活力与潜力。然而,车联网技术的广泛应用也带来了一系列网络安全问题&a…

Mybatis知识

1. 基础知识 mybatis是基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动,创建连接,创建statement等繁杂的过程。 通过xml或者注解的方式将要执行的各种sta…

序列化方式五——ProtoStuff

介绍 Protostuff是一个基于Java的高效序列化库,它使用Protocol Buffers(简称protobuf)协议,为Java对象提供高效、灵活且易用的序列化和反序列化方法。Protostuff的主要优势在于其高性能和简单的使用方式,相对于其他序…

C#多线程数据同步的几种方式(不同的锁)

无锁 多个关联数据无法完整获取修改 internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");ThreadPool.QueueUserWorkItem(Thread1);ThreadPool.QueueUserWorkItem(Thread2);ThreadPool.QueueUserWorkItem(Thread3);Console…

SpringBoot框架在墙绘产品展示中的运用

4 系统设计 墙绘产品展示交易平台的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没…