如何设计系统容量?

单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道。一次比赛10人齐跑,所以至少需要6场比赛。

2000米的完成时间要求是20分钟,超过20分钟不计数,所以比赛耗时计算为20分钟,加上比赛前的动员组织,比赛后的清场,假定每场比赛耗时30分钟。

现在预估下耗时:

1、60人/10人每场 = 6场,至少需要举行6场

2、总耗时 = 6场 * 0.5h = 3h

所以每年把这个比赛安排在下午3点到6点,是最后一个比赛项目,晚上7点举行颁奖晚会。这个预估容量也算合理。

但是今年比较特别,取消了4000米的长跑,所以2000米报名人员激增50人。时间还是下午3点到6点,

这个就有问题了,最后为了保证晚会的正常进行,一半的人员的比赛时间推迟到另外一周的周末,搞得怨声四起,大骂举办的行政部门不讲武德。

这就是设计容量,当业务场景的容量发生了变化时候,没有预估到他的变化,以及变化可能产生的影响,没有按照这个影响及时的做调整

(比如将比赛时间提前,拉长整个比赛的过程时间,或者增加比赛跑到,同时进行两场比赛),就会造成灾难。

概念

何为设计容量,从技术上说就是运用一些策略对系统容量进行预估的过程。容量设计是架构师必备的技能之一。

他要求分析系统设计容量要求,尽可能给出具体数据描述的:数据量、并发量、带宽、注册用户规模、活跃用户规模、在线用户规模、消息长度,图片大小、网盘空间容量,内存CPU容量等。

下面的内容,以 并发 为例子,看看看具体的分析过程。

分析过程

理解一些原理

TPS(Transactions Per Second):每秒事务数

QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求。

并发数:并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

峰值QPS计算:

1、原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间

2、公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)

PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次

UV(Unique Visitor):独立访客,统计1天内访问某站点的用户数(以cookie为依据)

吐吞量:吞吐量是指系统在单位时间内处理请求的数量

响应时间(RT):响应时间是指系统对请求作出响应的时间,一般取平均响应时间

QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的常用量化指标,另外还有HPS(每秒HTTP请求数)。

QPS(TPS)、并发数、响应时间它们三者之间的关系是:

1、QPS(TPS)= 并发数 / 平均响应时间

2、并发数 = QPS * 平均响应时间

系统容量评估时机

主要在三种业务场景下需要及时考虑对系统容量进行评估。

1、临时的流量变化:比如 618、双11,新年大促搞活动等场景,预估流量会大涨,甚至到原来的数倍。这时候要做好应对的措施。

2、初始系统容量评估:假设开发了某个系统,这个系统初始上线,预估他的容量和负载会是多少。

3、容量基数的变化:比如某个系统,他的功能模块越来越多,数据流量越来越大,日活指数越来越高,迎来了第二波的增长曲线。原来定好的系统容量渐渐的不满足需求,这时候也要重新评估和扩容。
系统容量评估包括数据量、并发量、带宽、CPU、MEMORY、DISK等。以并发量为案例,来说明系统容量评估的方法和步骤。

评估的步骤

1、分析日总访问量

分析可能的日访问量,一般系统系统都会提供比较真实的访问量数值,基于此,需要评估一个活动的访问量;如果是一个新上线的系统,也要评估可能的PV、UV值。

产品、运营部门也需要给出可能的访问预期值。

举个例子:

活动期间(9点~10点)会推送2000W的应用消息,假设用户实际点进去查看的比列为1/10,那么这个活动期间(1小时)新增的访问量就有 2000W * 1/10= 200W

2、评估平均访问量QPS

QPS是每秒请求量,假设一天正常活动时间一般是11个小时多一点,那一天的时间长度以秒为单位:60*60*11 ≈ 4W, 再使用日访问时间再去除以4W总时间即可.

举个例子:

上面说的两个小时的活动时间,实际的总访问量最后确实是200W。

那么平均访问量QPS为:200W/(60*60)=555.5 QPS.

一个成熟系统日QPS也可以预估,比如 百度首页的日PV数量为 5000W,按照常规活动时间4W秒算,就是5000W / 4W = 1250 QPS.

3、评估高峰区间的QPS

做系统容量规划时,不仅仅是考虑平均QPS,最重要的是要承受住高峰区间的QPS,这个数据可以根据业务流量监控的曲线和28法则来评估,来看下具体是怎么做的?

3.1 业务流量监控的曲线

以下面这个云系统作为例子:

日均QPS为2900,业务访问趋势图如下图,来对峰值QPS做一下预估

从图中可以看出,峰值QPS大概是均值QPS的2.58倍,日均QPS为2900,于是评估出峰值QPS为2900*2.58=7482。

这种是日常流量情况,如果遇到很特别的业务,比如竞拍\抢订\秒杀情况,流量幅度还是比较大的.

3.2 使用二八法则计算

何为二八法则:80%的业务基本都是发生在20%的时间里面,所以有如下:

峰值QPS公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)

4、评估单实例极限承受的QPS

可以使用压测(nGrinder 或者 jmeter)方式来获取单个系统实例的QPS极限值。

在一个系统上线前,一般来说是需要进行压力测试,了解她实际的极限值在哪个地方,以上面流量图为例子(日平均QPS为2900,峰值QPS为7500),这个系统的架构可能是这样的:

1、经由APP和Web的的请求,会经过Nginx均衡到多台Web站点上去。

2、Web集群会调用并落地到Service集群上

3、Service集群向数据层请求数据,正常情况下其中90%会落到Cache集群中

4、Cache集群中不存在(假设10%),会进入DB集群去访问数据库。

通过压测数据发现,web层是瓶颈,tomcat压测单个实例只能支持2500的QPS。

Cache集群和DB集群足够强悍,能够轻松应对峰值7500的QPS,按比例分别是7500*0.9=6750 和 7500*0.1=750.

所以得到了web单实例极限的QPS是2500。这边需要下调,因为不建议让请求响应时长接近2S,最好是1S以内。所以下调至2000。

5、根据线上冗余度最终确认

通过上面的计算,已经得到了峰值QPS是7500,单个实例能够顺畅承载QPS是2000,那么Web集群中至少有4个实例能够承接这样的请求洪峰。

除此之外,其他类型的的容量预估,如数据量、带宽、CPU、MEMORY、DISK等都可以采用类似策略。

案例分析

结合项目:如何计算图书系统的QPS、峰值QPS、N个实例和并发数

1、图书预定系统的并发数计算:

1.1、二八法则定理:80%的业务基本都是发生在20% 的时间里面,如系统有早中晚高峰,历经9个小时(早上10点到晚上19点),9*3600=32400。

1.2、获取峰值QPS:公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)

即 ( 1500000 * 80% ) / ( 32400 * 20% ) = 600000/6480≈185/秒

1.3、并发数 = QPS * 平均响应时间 = 0.5*185 = 92.5 ,矫正为100

1.4、利用343估算法判定 154,向上矫正为200

Pessimism 悲观

30%

80

Normal 标准

40%

100

Optimism 乐观

30%

300

最后提供给性能测试QA 的测试标准数据是 建议支持并发 200+,QA最终的测试结果是 该并发下响应时间在 50~100ms

总结

系统设计容量评估时机:

1、临时的流量变化:比如 618、双11,新年大促搞活动等场景,预估流量会大涨,甚至到原来的数倍。这时候要做好应对的措施。

2、初始系统容量评估:假设开发了某个系统,这个系统初始上线,预估他的容量和负载会是多少。

3、容量基数的变化:比如某个系统,他的功能模块越来越多,数据流量越来越大,日活指数越来越高,迎来了第二波的增长曲线。原来定好的系统容量渐渐的不满足需求,这时候也要重新评估和扩容。

系统设计容量评估的步骤:

1、分析日总访问量:产品、运营的评估和线上数据的收集

2、评估日平均访问量QPS:评估运营时间内的平均QPS

3、评估高峰区间的QPS:流量曲线计算 或 28 法则估算

4、性能压力测试:评估实例能够承受的极限吞吐量

5、根据线上冗余度,与实际的差值进行调整,评估出能承载容量的实际结果值

显然,开头的运动会如果子报名结束后能够根据报名的人数对比,重新做容量设计,提早做好准备,情况就不会那么糟糕。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

世强硬创获德佑威授权代理,拓展UV胶粘剂/PUR热熔胶等产品布局

随着下游应用市场产品不断更新迭代,以及企业的环保意识提高,企业对电子胶粘材料的性能要求越来越高,从而推动上游原厂的技术创新与升级,为国内提供更多高性能国产胶粘材料。 基于优良的口碑,世强先进(深圳…

关于JVM-三色标记算法剖析

相关系列 深入理解JVM垃圾收集器-CSDN博客 深入理解JVM垃圾收集算法-CSDN博客 深入理解jvm执行引擎-CSDN博客 jvm优化原则-CSDN博客 jvm流程图-CSDN博客 三色标记产生的原因? 在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引…

面试题:volatile

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1. 保证线程间的可见性 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值…

Javascript进阶内容

1. 作用域 1.1 局部作用域 局部作用域分为函数作用域 和 块级作用域 块级作用域就是用 {} 包起来的,let、const声明的变量就是产生块作用域,var不会;不同代码块之间的变量无法互相访问,里面的变量外部无法访问 1.2 全局作用域…

安卓开机启动流程

目录 一、整体框架二、流程代码分析2.1 Boot ROM2.2 Boot Loader2.3 Kernel层Kernel代码部分 2.4 Init进程Init进程代码部分 2.5 zygote进程zygote代码部分 2.6 SystemServer进程SystemServer代码部分 2.7 启动Launcher与SystemUI 三、SystemServices3.1 引导服务3.2 核心服务3…

Linux|从 STDIN 读取 Awk 输入

简介 在之前关于 Awk 工具的系列文章中,主要探讨了如何从文件中读取数据。但如果你希望从标准输入(STDIN)中读取数据,又该如何操作呢? 在本文中,将介绍几个示例,展示如何使用 Awk 来过滤其他命令…

开创加密资产新纪元:深度解析ERC-314协议

随着加密资产市场的不断发展和区块链技术的日益成熟,新的协议和标准不断涌现,其中包括了ERC-314协议。本文将深入分析ERC-314协议的特点、功能以及对加密资产市场可能产生的影响。 1. ERC-314协议简介 ERC-314协议是一项建立在以太坊区块链上的新提案&a…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下: 1、页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换正…

设计模式之状态模式讲解

概念:又称为状态对象模式,该模式允许一个对象在其内部状态改变时改变其行为。状态模式的核心是封装,状态的变更引起行为的变动,从外部看来就好像该对象对应的类发生改变一样。 抽象状态:用以封装环境对象的一个特定状态…

thinkphp6使用阿里云SDK发送短信

使用composer安装sdk "alibabacloud/dysmsapi-20170525": "2.0.24"封装发送短信类 发送到的短信参数写在env文件里面的 #发送短信配置 [AliyunSms] AccessKeyId "" AccessKeySecret "" signName"" templateCode"&…

尚硅谷html5+css3(3)布局

1.文档流normal flow -网页是一个多层结构 -通过CSS可以分别为每一层设置样式 -用户只能看到最顶层 -最底层&#xff1a;文档流&#xff08;我们所创建的元素默认都是从文档流中进行排列&#xff09; <head><style>.box1 {background-color: blue;}/*它的父元…

精益管理培训在哪些行业比较适用?

在当今瞬息万变的市场环境中&#xff0c;企业竞争日趋激烈&#xff0c;如何提升内部管理水平、降低成本、提高效率&#xff0c;成为企业持续发展的关键。精益管理作为一种先进的管理理念和方法&#xff0c;正逐渐被越来越多的行业所采纳和应用。本文&#xff08;深圳天行健精益…

MSO7104A安捷伦MSO7104A示波器

181/2461/8938产品概述&#xff1a; 带宽:1 GHz通道:4个模拟通道和16个数字通道采样速率:4 GSa/s记录长度:标准8 Mpts MegaZoom III深内存垂直分辨率:8位自动量程和峰值检测有洞察力的应用软件分段存储器使用FFT的波形数学模拟高清电视/EDTV触发器 总线模式显示和简单的软件升…

代码随想录day42|背包问题、416. 分割等和子集

背包问题&#xff1a; 01 背包 二维数组dp[i][j]解法 纯01背包&#xff1a;有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 dp[i][j]:从…

React面试

React渲染流程(重点) jsx描述界面 jsx babel render function>vdom vdom fiber 在进行渲染 vdom 转换fiber reconcile 转换过程创建dom commit 到domvdom React Element 对象, 只记录了子节点, 没有记录兄弟节点, 因为渲染不可中断 fiber fiberNode 对象, 是一个链表 父节…

算法:完全背包问题dp

文章目录 一、完全背包问题的特征二、定义状态三、状态转移四、降维优化五、参考例题5.1、Acwing&#xff1a;3.完全背包问题5.2、Acwing&#xff1a;900. 整数划分 一、完全背包问题的特征 完全背包问题是动态规划中的一种经典问题&#xff0c;它的主要特征可以总结如下&…

政安晨:【深度学习神经网络基础】(四)—— 自组织映射

目录 自组织映射和邻域函数 理解邻域函数 墨西哥帽邻域函数 计算SOM误差 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

APx500音频分析仪硬件简介

两通道模拟输出&#xff0c;两通道或以上的模拟输入接口 线性编码数字音频接口&#xff08;AES/EBU,TOSLINK,SPDIF&#xff09;Linear PCM 脉冲密度调制码流&#xff08;需要APx-PDM选件支持&#xff09; Bluetooth蓝牙音频码流&#xff08;需APx-BT选件支持&#xff09; 最…

打印月历 Open Judge

题面链接: http://noi.openjudge.cn/ch0113/24/ 题目描述: 评析: 大模拟题&#xff0c;考察的是你的耐心和毅力&#xff01;很不错的模拟题练习题&#xff0c;小白(like me)可以练一练 思路: 先一个月一个月的模拟&#xff0c;求出来题目问的这个一年的这一个月的第一天是星期…

C#互联网区域医学检验中心云LIS系统源码

云LIS联通四级&#xff08;市、县、乡、村&#xff09;检验服务网构建互联网检验服务新体系落地检验资源区域共享建设。云LIS系统是一种基于云计算技术的区域实验室信息管理系统&#xff0c;它的主要功能是管理实验室中的各种信息数据&#xff0c;包括样品数据、检测结果、仪器…