架构设计的时候,怎样做流量评估和容量设计?

低调的牛肉


作为开发/架构,经常会被问到这样的问题:

  • “这个产品(功能)上线后,预计会有大量的用户进来,你们系统能不能扛得住”;

  • “马上就要到业务节点了,你们系统用不用加一些资源”;

这些问题都涉及到了流量评估和容量设计,我分享一下我经常用的一些方法,当然项目的流量和互联网公司没法比,大家也别见笑。

先算总访问量

也就是PV,如果是网页的话,打开一次网页,这个网站的PV就增加了一次,如果是接口的话,就是接口的访问次数。

访问总量的预估,可以问业务/产品/运营的伙伴,这个产品(功能)上线后的预期是多少,或者用以往产品(功能)上线后的访问量作参考,做一个预估。

比如我之前参与过的项目,每天要给过生日的用户发送生日祝福短信,那么就可以大概评估出每天这个功能的总量大约是:总客户数量/365。

(图为10%的数据采样,相当于每天大约160万的访问量)

评估平均访问量

  • TPS:是指每秒内的事务数,如果执行了DML操作,那么相应的TPS会增加;

  • QPS:是指每秒内查询次数,如果执行了select操作,相应的QPS会增加。

QPS的计算公式也比较简单,就是总量/时间;如果是平均访问量的话,就除以60*60*24=86400秒;当然我们通常可以按照访问量都集中在白天,那么就按照60*60*12进行评估(评估高一些,总比低了要好)。

评估高峰期间的访问量

在做流量评估和容量设计的时候,不能只考虑平均QPS,一定要考虑高峰的QPS,我们系统的容量,一定要能抗住高峰的QPS。

如果每天80%的访问集中在30%的时间里,这30%时间叫做峰值时间;那么高峰期的访问量=(总访问量*80%)/(每天秒数*30%);

例如我们系统的访问量,主要集中在9:30-11:30和13:30-17:30期间,大约有6个小时。

评估每台机器的QPS,进而评估出需要多少服务器资源

通过压力测试,评估出一台服务单机能的极限QPS,比如单台服务器QPS极限是500;

生产环境中预估高峰期间的访问量是3000,那么至少需要6台服务器,当然当台机器极限是500,我们可以按照400进行预估,那么就需要8台机器,当然为了保险期间,部署10台是比较保险的(有一定的冗余度)。

希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


分享到:


相關文章: