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

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

 

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. 存在时间相对滞后的问题,并且还会将问题向下转移到超载的平台服务上

相关文章:

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

1. 停电事故后电力恢复的方式 1.1. 停电后常见的情形是,送电几秒钟后又再次断电 1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载 1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触…...

详解java定时任务

在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。 一、简介 在java中一个完整定时任务需要由Timer、TimerTask两个…...

PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡

一、板卡概述 单路3G带宽模拟信号源卡由DA子卡和PCIe底板组成,二者通过标准FMC连接器互联,可以实现将PCIe总线数据转换为一路高速的模拟量输出。北京太速科技板可广泛用于雷达、通信、光电领域的噪声信号、毛刺、脉冲信号模拟产生等领域。 二、 …...

第1章 计算机网络和因特网

1、主机或端系统通过( )接入因特网。 A. ISPB. 调制解调器C. 交换机D. 路由器 P21:端系统(PC、智能手机、Web 服务器、电子邮件服务器等)经过一个接入 ISP 与因特网相连。 2、‌主机一般被划分为两类:客…...

QT入门基础知识

什么是QT QT是一个跨平台的C图像用户界面应用程序框架QT在1991年由奇趣科技开发QT的优点 跨平台,几乎支持所有平台接口简单,容易上手一定程度上简化了内存回收机制有很好的社区氛围可以进行嵌入式开发 QWidget QT注意事项 命名规范 类名 首字母大写,单…...

Leetcode---350周赛

题目列表 6901. 总行驶距离 6890. 找出分区值 6893. 特别的排列 6447. 给墙壁刷油漆 一、总行驶距离 很显然,这题单纯就是一道数学应用题,我们要明白最关键的一点 :只有当mainTank>5并且additionalTank>0时,才能发生副油…...

Django通过Nginx和uWSGI实现负载均衡

Django是一款非常流行的Web应用程序框架,它允许开发人员以快速、简单和灵活的方式构建可扩展和可维护的Web应用程序。当你的应用程序开始变得越来越受欢迎时,你可能会发现需要使用负载均衡来确保应用程序的可用性和性能。在本文中,我们将介绍…...

单元测试框架——Junit5

文章目录 Junit1. 注解2.断言3.测试用例执行顺序4.测试套件Suite1) 指定多个类2) 指定包 5. 参数化1) 单参数2) 多参数3) 文件注入 6.动态参数 Junit Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5…...

centos 系列添加 yum 源

nginx 首先,安装 EPEL (Extra Packages for Enterprise Linux) 仓库。这是一个由 Fedora 项目提供的免费扩展软件包仓库,其中包含许多有用的软件包。 sudo yum install epel-release 接下来,导入 Nginx 的官方 GPG 密钥,以便验证安…...

[Hive高级特性与 DDL和DML语法]

目录 🎇前言: 🎇 HiveQL语言的基本语法,包括DDL和DML两个方面。 🎇DDL(数据定义语言): 🎇DML(数据操作语言): 🎇 Hive高级特性 多种…...

Web服务器群集:Web基础与HTTP协议

目录 一、理论 1.Web基础 2.HTTP协议 二、实验 1.浏览本地HTML页面 三、总结 一、理论 1.Web基础 (1)域名和DNS ① 域名 网络是基于TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地 址&#xff0…...

cmd命令常用速记

cmd命令大全 常见的appwiz.cpl control calc 等,各类功能、设置、甚至是文件属性和系统版本,都可以通过命令的方式快速查看和操作,有助于我们的提高工作效率,具体见下文。 cmd命令:开始->运行->键入…...

Python网络爬虫基础进阶到实战教程

文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集:XPath解析的代码案例及其详细讲解:使用XPath解…...

树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项

下面来总结一下远程操控树莓派用到的三种方式及其注意事项,其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…...

C++ 第二弹封装-类和对象

目录 1.类的引入 2.类的定义方式 3.访问权限 4.封装 5.类也是作用域 6.类的实例化 7.如何求一个类的大小 8.this指针 9.默认成员函数 10.构造函数 11.析构函数 12.拷贝构造函数 13.赋值运算符重载 14.const的类成员 15初始化列表 16.static的类成员 17.友元 …...

浅析 GeoServer CVE-2023-25157 SQL注入

原创稿件征集 邮箱:eduantvsion.com QQ:3200599554 黑客与极客相关,互联网安全领域里 的热点话题 漏洞、技术相关的调查或分析 稿件通过并发布还能收获 200-800元不等的稿酬 更多详情,点我查看! 简介 GeoServer是一个开…...

1001router6-react

文章目录 1 一级路由2 Navigate3 NavLink 自定义高亮样式4 useRoutes()5 嵌套路由6 路由传参6.1 传递params参数6.2 传递search参数6.3 传递state参数 7 编程式导航7.1 路由跳转7.2 前进、后退 8 钩子函数8.1 useInRouterContext()8.2 useNavigationType()8.3 useOutlet()8.4 u…...

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13166 效果图如下&#xff1a; # cc-defineKeyboard #### 使用方法 使用方法 <!-- ref:唯一ref pas…...

VB+ACCESS超市管理系统设计(源代码+系统)

超市管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 MICROSOFT公司的 VISUAL BASI…...

【机器学习】十大算法之一 “神经网络”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…...

Apache Superset 企业级 BI 平台实战:从部署到生产运维全解析

1. 项目概述&#xff1a;从数据仓库到决策驾驶舱的桥梁 如果你在数据领域工作&#xff0c;无论是数据分析师、数据工程师还是业务决策者&#xff0c;大概率都听过或深受“数据孤岛”和“报表开发效率低下”的困扰。业务部门提一个看数需求&#xff0c;数据团队吭哧吭哧写SQL、做…...

【LeetCode刷题日记】347.前k个高频元素

&#x1f525;个人主页&#xff1a;北极的代码&#xff08;欢迎来访&#xff09; &#x1f3ac;作者简介&#xff1a;java后端学习者 ❄️个人专栏&#xff1a;苍穹外卖日记&#xff0c;SSM框架深入&#xff0c;JavaWeb ✨命运的结局尽可永在&#xff0c;不屈的挑战却不可须臾或…...

阿里云百炼微调完整实战:从数据到部署

阿里云百炼微调完整实战&#xff1a;从数据到部署 目录 什么是模型微调微调 vs RAG&#xff1a;如何选择环境准备训练数据准备创建微调任务超参数配置详解模型部署LangChain 调用微调模型模型评测常见问题总结 一、什么是模型微调 模型微调&#xff08;Supervised Fine-Tun…...

不止于采集:将STM32光敏传感器数据上传到串口助手和OLED屏(双显示实战)

STM32双显系统实战&#xff1a;光敏数据同步输出至串口与OLED屏 引言 当我们需要实时监控环境光照变化时&#xff0c;单纯依赖串口打印数据往往难以满足实际需求。想象一下&#xff0c;在智能农业大棚中&#xff0c;工程师需要同时查看设备本地显示和远程数据记录——这正是双显…...

项目管理怎么做?3步让团队效率翻倍

很多团队上了项目管理工具&#xff0c;结果用不起来。不是工具不好&#xff0c;是方法不对。今天分享一套实战经验&#xff0c;帮你用好项目管理。 简道云项目管理是专为国内各类企业打造的零代码轻量化项目管理解决方案&#xff0c;无需专业技术开发能力&#xff0c;即可快速…...

测试CIU32F003中的比较器

简 介&#xff1a; 本文介绍了CU32F003单片机内部比较器的测试过程。通过设计专用测试电路板&#xff0c;验证了比较器1的基本性能&#xff0c;包括使用PB0作为信号输入、PB3作为输出&#xff0c;并利用内部0.8V带隙参考电压作为比较基准。测试展示了比较器输出与输入信号的延迟…...

DOTA数据集标签文件详解:手把手教你读懂旋转框坐标与难易度标注

DOTA数据集标签文件深度解析&#xff1a;从旋转框坐标到实战应用 在计算机视觉领域&#xff0c;航空影像的目标检测一直是个独特而富有挑战性的方向。不同于常规的水平和垂直边界框&#xff0c;航空视角下的物体往往呈现任意角度的旋转特性。DOTA数据集作为这一领域的标杆性资源…...

你的NAS真的省电吗?用WOL(网络唤醒)搭配智能插座,打造低功耗家庭服务器完整方案

家庭服务器节能实战&#xff1a;用WOL智能插座实现按需供电的完整方案 深夜加班需要调取家庭服务器里的文件&#xff0c;却发现设备24小时运转的电费账单高得吓人&#xff1b;周末想用HTPC看部电影&#xff0c;却要忍受老旧电脑持续工作的风扇噪音——这可能是很多技术爱好者面…...

vben-admin-thin-next错误处理机制:全局异常捕获和用户友好提示

vben-admin-thin-next错误处理机制&#xff1a;全局异常捕获和用户友好提示 【免费下载链接】vben-admin-thin-next vue-vben-admin-2.0 mini template.vue3,vite,typescript 项目地址: https://gitcode.com/gh_mirrors/vb/vben-admin-thin-next vben-admin-thin-next是…...

2026论文降AIGC软件TOP5实测排行:嘎嘎降综合最强免费1000字试用!

2026 年的毕业季来得比想象中更紧。各高校对论文 AIGC 检测的要求又收紧了一档&#xff1a;211 和 985 高校规定本科论文 AI 率要低于 20%&#xff0c;硕士要求 AI 率不高于 15%&#xff0c;普通高校一般要求 AI 率控制在 30% 以内。AIGC 检测率一旦超标&#xff0c;最坏的结果…...