关于容量设计、规划、治理 你知多少?
为什么要容量设计、规划、治理?
前言:系统的处理能力是有限的!
所谓容量,即系统处于最大负载状态或某项指标达到所能接受的最大阈值下对请求的最大处理能力。
设计》》规划》》治理
设计
存储类型:myisam、innodb、mongo、habase
CPU类型:计算型、内存型、GPU、大数据型
架构设计:是否合理划分、解耦
规划
为应对预期流量所做的工作
治理
基于规划化结构数据、数据模型、趋势预测、可视化、一站式操控平台
容量设计
如果你不能度量它,你就无法改进它 --管理学大师彼得.德鲁克
度量指标
数据量、增长量
带宽
基础指标(CPU、内存、磁盘)
TPS QPS
容量规划、四步走
业务流量预估阶段
通过分析历史数据以及实时的线上监控,预估未来某个时间点或者某个业务可能会有多少多少的流量冲击
系统容量评估阶段
根据具体的业务场景,分析每个业务场景的流量配比,然后计算每个业务大概需要多少服务节点来提供可靠稳定的性能支撑
系统容量测试阶段
通过全链路压测或者PAT/UAT环境的压测,来模拟真实的业务场景,确定每个服务节点的具体性能表现,进行针对性的调整
流量分配调整阶段
根据压测的结果,设定限流、服务降级等系统保护措施,来预防当实际流量超过系统所能承受的最大流量时,系统无法提供服务
容量规划
统计方法
- 埋点统计
- 日志、数据库
- Agent\探针
摸底手段
- 单机压测
- 全链路压测
- 流量COPY
- 场景化压测
容量规划、并发量评估的方法和步骤
【步骤一:评估总访问量】
如何知道总访问量?对于一个运营活动的访问量评估,或者一个系统上线后PV的评估,有什么好的方法?
答案是:询问业务方,询问运营同学,询问产品同学,看对运营活动或者产品上线后的预期是什么。
举例:58要做一个APP-push的运营活动,计划在30分钟内完成5000w用户的push推送,预计push消息点击率10%,求push落地页系统的总访问量? 回答:5000w*10% = 500w
【步骤二:评估平均访问量QPS】 如何知道平均访问量QPS?
答案是:有了总量,除以总时间即可,如果按照天评估,一天按照4w秒计算。
举例1:push落地页系统30分钟的总访问量是500w,求平均访问量QPS 回答:500w/(30*60) = 2778,大概3000QPS
举例2:主站首页估计日均pv 8000w,求平均访问QPS 回答:一天按照4w秒算,8000w/4w=2000,大概2000QPS
提问:为什么一天按照4w秒计算?
回答:一天共24小时*60分钟*60秒=8w秒,一般假设所有请求都发生在白天,所以一般来说一天只按照4w秒评估
【步骤三:评估高峰QPS】
系统容量规划时,不能只考虑平均QPS,而是要抗住高峰的QPS,如何知道高峰QPS呢?
答案是:根据业务特性,通过业务访问曲线评估
举例:日均QPS为2000,业务访问趋势图如下图,求峰值QPS预估?
回答:从图中可以看出,峰值QPS大概是均值QPS的2.5倍,日均QPS为2000,于是评估出峰值QPS为5000。
【步骤四:评估系统、单机极限QPS】
如何评估一个业务,一个服务单机能的极限QPS呢?
答案是:压力测试
一般来说,线上系统是不会跑满到极限的,打个8折,单机线上允许跑到QPS1000。
服务治理
度量、管控、管理这三大举措,构建三位一体、围绕服务治理的闭环体系。
弹性伸缩
- 定时模式:自定义自动伸缩发生的时间和频率,如每天 13:00增加 ECS 实例
- 动态模式:基于云监控性能指标(如 CPU 利用率),自动增加或减少 ECS 实例
- 固定数量模式:通过设置 最小实例数 (MinSize),即健康运行的ECS 实例最小数量,以保证可用性
- 自定义模式:通过 API 调用您的自有监控系统,您可以执行手工伸缩
- 手工执行伸缩规则
- 手工添加或移出既有的 ECS 实例
- 自定义 MinSize、MaxSize,弹性伸缩会自动创建或释放 ECS 实例,将当前 ECS 实例数维持在 MinSize 与 MaxSize 之间
- 健康模式:如 ECS 实例为非 Running 状态,弹性伸缩将自动移出或释放不健康的 ECS 实例
- 多模式并行:以上所有模式都可以组合配置。例如设置了每天 13:00 ~ 14:00 创建 20 个 ECS 实例以应对业务高峰,但实际需求有可能需要多于20个实例, 则您可以选择其他伸缩模式,与定时模式配合一起使用
服务限流
- 限流策略:
- 漏桶算法、令牌桶算法
- 限流难度点:
- 标准化
- 体系化
- 限流原则:
- 限流动作尽量前置
集群容错
策略:快速失败、快速转移、失败重试、聚合调用、广播调用
注意:在使用集群容错的时候,一定要设置最大重试次数
服务熔断、降级
手段:容错降级、静态返回值降级、Mock降级、备用服务降级
难点:标准化、体系化、预案化
拓展:标准划、流程化、规则自动化、AI运维
看完这篇有关容量的文章对你有帮助吗?希望能够在评论区留下你的困惑或你的见解,让我们大家一起来交流吧!
关于容量设计、规划、治理 你知多少?相关推荐
- 纽约市街道规划设计与治理启示
" 写在前面: 街道作为城市交通与市民生活的空间载体,其空间品质与运行特征直观彰显城市规划设计的顶层逻辑与城市交通的治理能力.自2014年实施交通死亡与重伤<零愿景行动计划>以来 ...
- 架构思维:系统容量设计
背景 单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道.一次比赛10人齐跑,所以至少需要6场比赛. 2000米的完成时间要求是20分钟 ...
- 架构与思维:系统容量设计
背景 单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道.一次比赛10人齐跑,所以至少需要6场比赛. 2000米的完成时间要求是20分钟 ...
- 互联网架构,如何进行容量设计?
互联网架构,如何进行容量设计? 一,需求缘起 互联网公司,这样的场景是否似曾相识: 场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题: (1)机器能抗住么? (2)如果扛不住,需要加多 ...
- 亿级京东应用架构设计与治理
经过十年的业务快速发展,京东信息系统复杂度越来越高:一般电商系统只需关心"进销存"中的"销",京东系统需要管理采购(进).销售(销)和库存(存)三个环节.系统做 ...
- 京东应用架构设计与治理
https://www.sohu.com/a/233365048_444159 经过十年的业务快速发展,京东信息系统复杂度越来越高:一般电商系统只需关心"进销存"中的"销 ...
- 【架构设计】软件架构师应该知道的97件事
摘要:软件架构师是 IT 行业里独一无二的职业,既要精通软件开发技术,又要掌握业务知识,还要周旋于公司不同部门之间,协调各种予盾.做到这些绝非易事, 博文视点 即将翻译出版的新 软件架构师是IT 行业 ...
- 成为会带团队的技术人 架构设计:治理好系统复杂度才最务实
上一讲我们以架构之名聊了一下理解业务这件事儿,这一讲我想进一步来聊一聊日常工作中架构工作的核心关注点是什么? 我是在接触分布式开发之后,才对"架构"有了概念,从三高(高可用.高性能 ...
- 21天设计Arm芯片|移知公开课
前言 这篇文章主要概述了芯片前端.验证.后端.DFT.综合.Sign-off,都是芯片设计和制造涉及到的的主要流程,每个流程都给了简单的概述.希望这篇文章对大家有用! 本文基于网易云课堂或者移知官网学 ...
最新文章
- mongodb spring 超时时间_spring data mongodb 配置遇到的几个问题
- Git005--工作区和暂存区
- Xorequ(BZOJ3329+数位DP+斐波那契数列)
- linux connect自动重连,Linux系统中使用sshfs挂载远程主机的目录到本地系
- (转)输入pipt提示:AttributeError: 'module' object has no attribute 'HTTPSConnection'
- Linux环境进程间通信 信号量
- VS2017生成一个简单的DLL文件 和 LIB文件——C语言
- 试着翻译24小时自学SQL第四版
- c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp
- Java数组相关知识
- Python内置函数sorted()高级排序用法
- 微信小程序 指纹识别
- 易网云授权php,网易云音乐热评api php源码
- Autojs之QQ 群发消息(是QQ 群发,不是QQ群 发)
- Windows 打开和关闭默认共享方法汇总
- HTTP(S) 路由器 fabio
- JFinal+Quartz动态任务调度控制台
- JAVA高级工程师笔试面试题
- 定时关闭(程序)进程
- pytest接口测试轻松入门
热门文章
- 大数据学习笔记23:MR案例——采用Combiner做词频统计
- 【BZOJ4455】小星星,容斥原理+树形DP
- C ++ 类 | 类与数组(Array)_4
- 基础html交代选择器,html 选择器之基础选择器
- linux arm 64 hard float abi,ARMHF(hard-float ABI for ARM)
- ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...
- win7为什么打开桌面上的计算机很卡很慢,Win7系统运行不流畅卡半天才进入桌面的六种解决方法...
- 【Python】【Python语言】Python3.7.2的关键字与保留字
- Handler源码解析2
- 大华的支持rtmp推流吗_海康大华DSS视频拉流-RTSP转RTMP多媒体播放技术