作为一名开发,你说你不会估算这些,我忍了,但是作为一名系统架构师或者有志成为系统架构师的人,这个都不会的话,我无法忍受,这个是在常见不过的了!!!

一、背景

你们技术老大问你:针对这次活动咱们的系统能抗住么?需要加机器不?加多少台?你是不是一脸懵逼?这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台扛不住呀,到达高峰期的时候会垮掉。三台稳妥妥,四台更好,哈哈。

6、总结

  • 总访问量预估

问产品、问运营,他们比较清楚这次活动、这次秒杀会招来多少人参与。

  • 平均吞吐量QPS预估

总量除以总时间,一天按照4w秒来算,别按照24小时的八九万来算。因为并不是24小时都是活跃的。

  • 高峰期吞吐量QPS预估

根据日均QPS趋势图来算、二八原则。

  • 单机极限QPS预估

压测!压测!压测!

广告时间

你还在为面试发愁吗?你还在为面试找不到面试题,找不到标准答案发愁吗?你还在为面试题找不全面,没有系统的文档发愁吗?你的福利来了!

Java超神之路-带你装逼带你飞

Logo

开源、云原生的融合云平台

更多推荐