读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量

news2024/12/30 2:21:29

 

1. 停电事故后电力恢复的方式

1.1. 停电后常见的情形是,送电几秒钟后又再次断电

1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载

1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触发断路器跳闸,灯再次熄灭

2. 经验教训

2.1. 系统规模相对较小的组件子集上永远不会出现这种情况

2.2. 系统达到稳态时的负载,会与系统启动或周期性运行的负载存在明显不同

2.3. 示例

2.3.1. 一个应用程序服务器农场的启动过程

2.3.2. 每台服务器都需要连接到数据库,并加载一定数量的参考数据或种子数据

2.3.3. 每台服务器的缓存都从空闲状态开始,逐渐形成一个有用的工作集

2.3.4. 大多数HTTP请求会转换为一个或多个数据库查询

2.3.5. 当应用程序启动时,数据库上的瞬时负载要比运行一段时间后的负载高得多

3. 一窝蜂

3.1. 一堆服务器一同对数据库施加瞬时负载

3.2. 是对系统的集中使用,相比将峰值流量分散开后所需的系统能力,一窝蜂需要一个更高的系统容量峰值

3.3. 一窝蜂所需系统成本过高,高峰需求无法处理

3.4. 引发一窝蜂现象的情况

3.4.1. 在代码升级和重新运行之后,启动多台服务器

3.4.2. 午夜(或任何一个整点时间)触发cron作业

3.4.3. 配置管理系统推出变更

3.4.4. 当一些外部现象引起流量的同步“脉冲”时

3.4.5. 阻塞许多线程的所有地方,它们在等待某个线程完成工作

3.4.5.1. 这个状态打破时,新释放的线程就会对任何接收数据包的下游系统施加一窝蜂

3.4.6. 虚拟用户的脚本存在固定等待时间,则在进行负载测试时,就会产生流量脉冲

3.4.6.1. 脚本中的每个等待时间都应该附带一个小的随机时间增量

3.5. 解决方案

3.5.1. 使用增加的退避时间避免脉冲

3.5.1.1. 固定的重试时间间隔,会集中那段时间的调用方需求

3.5.1.2. 使用退避算法,不同调用方在经过自己的退避时间后,在不同的时间点发起调用

3.5.2. 使用随机时钟摆动以分散需求

3.5.2.1. 不要将所有cron作业都设置在午夜或其他任何整点时间执行

3.5.2.2. 混合的方式设置时间,分散负载

4. 系统容量

4.1. 无论系统资源是需要数月、数周还是数秒才能完成整备,最终都可能导致不同层级之间的处理速率不匹配

4.2. 由于容量不对等,前端总是有能力来压倒后端

4.3. 将系统容量均匀地进行匹配,是不切实际的

4.3.1. 除了某一天会派上用场,其他时间99%的基础设施将处于闲置状态

4.4. 对于服务的构建,如果不能使之全部满足前端潜在的压倒性需求,那么就必须构建服务调用方和服务提供方的韧性,从而能够应对海啸般袭来的请求

4.5. 对服务调用方来说,当响应获取速度变慢或连接被拒绝时,使用断路器模式有助于缓解下游服务的压力

4.6. 对服务提供方来说,可以使用握手和背压通知调用方,限制调用方发送请求的速度

4.7. 使用舱壁模式,为关键服务的高优先级调用方预留系统容量

5. 系统容量失衡

5.1. 放大效应的特例

5.2. 在QA环境中很少能观察到的问题

5.2.1. 主要原因是每个系统的QA环境通常会缩小到只有两台服务器

5.2.2. 检查服务器和线程的数量

5.2.3. 实现QA环境虚拟化并实现扩展

5.2.4. 重视接口的两侧

5.3. 考验机能帮助验证前端系统能否良好地实现降级

5.4. 关系中一方的增幅变化大大超过另一方

5.5. 宣传带来的流量高峰,就更难以预测了

5.5.1. 自黑式

5.5.2. 季节性、市场驱动或宣传驱动等流量模式的变化,会导致前端系统的大量请求涌向后端系统(通常是良性的),就像热门的社交媒体帖子导致网站流量剧增

5.6. 要为出现任何状况做好准备

5.6.1. 可以使用系统容量建模的方法,确保系统能力至少在可变范围之内

5.6.2. 如果系统具有韧性,那么它可能会减慢处理速度,甚至当无法在允许的时间内处理事务时,就开始出现“快速失败”

5.6.2.1. 当负载压力减弱后,系统应该还能够恢复回来

5.6.3. 使用自动扩展应对激增的访问请求

5.6.3.1. 存在时间相对滞后的问题,并且还会将问题向下转移到超载的平台服务上

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

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

相关文章

chatgpt赋能python:Python中的点形状:了解点与其表现形式

Python中的点形状:了解点与其表现形式 在Python编程中,点是一种十分重要的形状,它不仅可以用来表示数据结构中的节点,还可以用来绘制图形。本篇文章将介绍Python中点形状的表现形式和相关知识点。 点的表现形式 在Python中&…

跨 OT 部门管理来自新兴技术的网络风险挑战

本文首发微信公众号网络研究院,关注获取更多。 随着 AI 和自动化工具被引入企业,解决这些新技术(包括 OT 环境中的生成 AI)带来的网络风险需要一种综合方法。 这些新兴技术进步可以在 OT(运营技术)基础设…

【夜深人静写数据结构与算法 | 第八篇】哈希算法与哈希表

目录 前言: 哈希: 哈希表: 哈希表组成: 哈希表实例: 哈希函数: TIPS: 总结 前言: 如果此时我要你默写一个有一百位的数字,你要如何做才能保证不会漏写呢&#xf…

Jenkins安装手册

Jenkins安装手册 一、前期准备工作 因为我是在Windows系统上连接Linux服务器以及需要把在Windows系统下载的安装包上传到Linux系统,所以需要用到两个工具---putty 和FileZilla。 Putty是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端,但是…

IDEA新UI速览,成了VS Code的样子?

IntelliJ IDEA 2023.1 现已发布。此版本包括对新 UI 的改进,根据从用户那里收到的反馈进行了彻底改造。此外还实现了性能增强,从而在打开项目时更快地导入 Maven 和更早地使用 IDE 功能。由于采用了 background commit checks,新版本提供了简…

【首发】随身wifi编译/使用ffmpeg方法,包含openwrt和debian

目录 1.硬件改造 2.软件改造 3.下一步计划 背景是23年4月入了随身wifi的坑后,发现除了硬件上的改造,软件的可玩性也很大,网上可以找到不少打印机,直播推流,甚至家庭智能硬件的改造教程。笔者是因为改造遥控小车&…

【前端】Element-UI和Element-Plus的区别

文章目录 对移动端支持区别框架区别开发中使用的区别el-tableel-dialogel-buttonel-date-pickerel-iconechartsIcon图标库变化了组件的插槽slot使用变化了新增组件 来源 对移动端支持区别 Element-UI对应Element2:基本不支持手机版 Element-Plus对应Element3&…

chatgpt赋能python:Python生成A到Z的SEO

Python 生成A到Z的SEO Python 是一种简单易学、功能强大的编程语言,它不仅可用于数据分析、机器学习等领域,还可以用于 SEO 工作中的自动化。在 SEO 中,我们常需要生成不同字母序列来作为页面的标题标签(Title Tag)&a…

Unencode

打开得到一串密文,看题目形式应该也是一个编码格式 果然是,直接利用网上工具解码就得到flag Uuencode编码 稍微了解了一下Uuencode编码的方式: Uuencode是二进制信息和文字信息之间的转换编码,也就是机器和人眼识读的转换。Uuenco…

从MVC到MVVC:软件架构的演变和迭代

文章目录 1.引言介绍MVC和MVVC架构1. MVC架构2. MVVC架构 2.MVC架构什么是MVC架构MVC的组成部分及其作用1. 模型(Model)2. 视图(View)3. 控制器(Controller) MVC的优点和缺点 3.MVVC架构什么是MVVC架构1. 模型(Model)2. 视图(View)3. 视图模型(View Model) MVVC的组成部分及其作…

2022(一等奖)B22基于时空大数据的多维分析与传统二维分析相结合的大气污染变化研究方法探索

作品介绍 1 作品背景及研究对象 1.1 背景及必要性介绍 2022年春节期间,山东及多地的部分省市明确了禁放烟花爆竹的规定,直接表明了当今大气污染变化的严峻形势,燃放烟花爆竹会严重影响空气环境质量,加剧雾霾天气,产生…

【Linux】CentOS7 设定虚拟机时间为本机当前地区时间的简单操作

目录 情景系统环境操作 情景 新安装的虚拟机时间和当前本地系统时间不一致,现在想要将虚拟机和本机地区的时间调节为一致。 系统环境 CentOS Linux 7 系统界面大致如此。 操作 点击虚拟机界面左上角的 Applications 选项, 选择System-Tools-- Sett…

熵、KL散度和交叉熵

首先我们需要知道,所有的模型都可以看作是一个概率分布模型,包括人脑进行图像分类时也可以看作是一种完美的模型 1、信息量 如果学过通信应该知道香农定义了信息量的的概念,我们能够理解一件事情信息量很大或者很小,但是如何用数…

操作系统 - 进程和线程

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

陈香菲九价疫苗接种sop

前文 什么时间 正常时间 ● 正常接种按照接种时间,需要在2023-06-28 08:00-17:00 前往指定卫生院预防接种门诊进行接种。 时间异议 ● 正常来说如果接种时间内来大姨妈或者最近有服用一些药物的话是不能进行接种的,具体药物品…

chatgpt赋能python:Python爬虫防屏蔽策略及技巧

Python爬虫防屏蔽策略及技巧 介绍 爬虫作为一种数据采集工具,越来越广泛地应用于众多领域,包括搜索引擎优化(SEO)、产品分析、市场调研等等。然而,随着爬虫数量的不断增加,许多网站已经采取了多种方法来屏…

【Spring Cloud Stream 消息驱动】 —— 每天一点小知识

💧 S p r i n g C l o u d S t r e a m 消息驱动 \color{#FF1493}{Spring Cloud Stream 消息驱动} SpringCloudStream消息驱动💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&#x1f390…

ECharts数据可视化

目录 第一章 什么是ECharts 第二章 搭建环境 2.1 Echarts的下载 2.2 Visual Studio Code下载 第三章 一个简单的可视化展示 第四章 Echarts组件 4.1 标题 4.2 提示框 4.3 工具栏 4.4 图例 4.5 时间轴 4.6 数据区域缩放 4.6.1 滑动条型数据区域缩放 4.6.2 内置型…

chatgpt赋能python:烧录单片机程序:Python的力量

烧录单片机程序:Python的力量 随着技术的发展和人类渴求的不断追求,电子设备的普及程度越来越高。在一个电子设备内部,单片机的应用非常广泛。然而,单片机作为计算机的重要组成部分,也需要相对应的程序来实现不同的功…

实战:Gradle构建工具实践-2023.6.22(测试成功)

实战:Gradle构建工具实践-2023.6.22(测试成功) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 实验环境 gitlab/gitlab-ce:15.0.3-ce.0 jenkins/jenkins:2.346.3-2-lts-jdk11 gradle-7.6.1 openjdk 11.0.18实验软件 链接&#xff1…