文章目录
作为一名开发,你说你不会估算这些,我忍了,但是作为一名系统架构师或者有志成为系统架构师的人,这个都不会的话,我无法忍受,这个是在常见不过的了!!!
一、背景
你们技术老大问你:针对这次活动咱们的系统能抗住么?需要加机器不?加多少台?你是不是一脸懵逼?这TM我哪知道能不能抗住,我哪知道加多少台。
二、什么情况需要进行容量评估?1、三种情况
- 容量有质变性增长,比如秒杀
- 临时运营活动,比如运营配置了大额度优惠的新年活动
- 新系统上线,我需要部署几台机器?
2、举例说明
2.1、场景一
pm要做双十一大额促销活动,你的技术老大直接杀过来问你:咱们现有的机器能抗住么?需要加机器么?需要加几台?
2.2、场景二
过年了,运营团队要在后台配置大量的活动,你们老大又来三连问:咱们现有的机器能抗住么?需要加机器么?需要加几台?
2.3、场景三
新系统上线之前,老大又来问:你这个数据库需要分库分表么?分多少库表合适?线上部署几台机器合适?
三、有哪些指标需要进行容量评估?- 数据量,比如:qq/微博/抖音等这种海量数据的应用。
- 并发/吞吐量,比如:12306,票的信息很少,但是并发极高。
- 带宽,比如:音视频直播等
- CPU/内存/硬盘等,比如:解压缩大文件,加解密大文件等。
1、总访问量预估
假设要做一个推送的功能给运营用于过年活动需求:
- 计划在30分钟内完成8000w的用户推送。
- 预计推送消息点击率为10%。
请问:这次活动推送页的总访问量是多少?
答案:8000w * 10% = 800w
2、平均吞吐量QPS预估
(1)30分钟内完成8000w的用户推送,推送页的总访问量是800w,那么平均QPS是多少?
答案:800w / (30 * 60) = 4445,大约4445QPS。
(2)假设微博首页 日平均PV是8000w,那么平均QPS是多少?
答案:8000w / (24 * 60 * 60) = 925QPS,但是一天24小时不可能都活跃的,所以到不了八万多秒,就按照4w秒来算,那么是:8000w / 4w = 2000QPS。
3、高峰期吞吐量QPS预估
可以看业务的日平均QPS趋势图,可以从中看出高峰期的QPS平均值是普通的时间QPS的多少倍,然后乘一下就行了。假设某业务日均QPS为1500,峰值QPS是大概是普通时间的3倍。那么高峰期吞吐量QPS就约等于1500 * 3 = 4500。
但是如果没有每天的QPS趋势图可以看的话,那么就采取业界的二八原则,也就是80%的请求发生在20%的时间里(除了秒杀这种针对性的之外,因为这种不适合二八)。比如日均QPS为1500,那么1500 * 0.8=1200,也就是说1200的请求是峰值。其他300是普通时间,那么峰值QPS也就是普通时间QPS的四倍。
4、单机极限QPS预估
压测是最好的最准确的方式!
5、回答老大问题老大问:2台机器能抗住么?
我算了下,峰值4500,单机压测出的结果是2000,2台扛不住呀,到达高峰期的时候会垮掉。三台稳妥妥,四台更好,哈哈。
- 总访问量预估
问产品、问运营,他们比较清楚这次活动、这次秒杀会招来多少人参与。
- 平均吞吐量QPS预估
总量除以总时间,一天按照4w秒来算,别按照24小时的八九万来算。因为并不是24小时都是活跃的。
- 高峰期吞吐量QPS预估
根据日均QPS趋势图来算、二八原则。
- 单机极限QPS预估
压测!压测!压测!