互联网架构,如何进行容量设计?

一,需求缘起

互联网公司,这样的场景是否似曾相识:

场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题:

(1)机器能抗住么?

(2)如果扛不住,需要加多少台机器?

场景二:系统设计阶段,技术老大杀过来,又问了两个问题:

(1)数据库需要分库么?

(2)如果需要分库,需要分几个库?

技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能之一。常见的容量评估包括数据量、并发量、带宽、CPU/MEM/DISK等,今天分享的内容,就以【并发量】为例,看看如何回答好这两个问题。

二,容量评估的步骤与方法

【步骤一:评估总访问量】

如何知道总访问量?对于一个运营活动的访问量评估,或者一个系统上线后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呢?

答案是:压力测试

在一个服务上线前,一般来说是需要进行压力测试的(很多创业型公司,业务迭代很快的系统可能没有这一步,那就悲剧了),以APP-push运营活动落地页为例(日均QPS2000,峰值QPS5000),这个系统的架构可能是这样的:

1)访问端是APP

2)运营活动H5落地页是一个web站点

3)H5落地页由缓存cache、数据库db中的数据拼装而成

通过压力测试发现,web层是瓶颈,tomcat压测单机只能抗住1200的QPS(一般来说,1%的流量到数据库,数据库500QPS还是能轻松抗住的,cache的话QPS能抗住,需要评估cache的带宽,假设不是瓶颈),我们就得到了web单机极限的QPS是1200。一般来说,线上系统是不会跑满到极限的,打个8折,单机线上允许跑到QPS1000。

【步骤五:根据线上冗余度回答两个问题】

好了,上述步骤1-4已经得到了峰值QPS是5000,单机QPS是1000,假设线上部署了2台服务,就能自信自如的回答技术老大提出的问题了:

(1)机器能抗住么? -> 峰值5000,单机1000,线上2台,扛不住

(2)如果扛不住,需要加多少台机器? -> 需要额外3台,提前预留1台更好,给4台更稳

除了并发量的容量预估,数据量、带宽、CPU/MEM/DISK等评估亦可遵循类似的步骤。

三,总结

互联网架构设计如何进行容量评估:

【步骤一:评估总访问量】 -> 询问业务、产品、运营

【步骤二:评估平均访问量QPS】-> 除以时间,一天算4w秒

【步骤三:评估高峰QPS】 -> 根据业务曲线图来

【步骤四:评估系统、单机极限QPS】 -> 压测很重要

【步骤五:根据线上冗余度回答两个问题】 -> 估计冗余度与线上冗余度差值

个人一些经验分享,大伙轻拍,有更好的建议欢迎回复,下篇文章会将好的经验share给更多的同学。

本文分享自微信公众号 - 架构师之路(road5858)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏视频加密

培训班视频加密如何选择?

最近培训班视频加密的咨询越来越多,视频教学给广大老师和学生带来了便捷,但是老师辛辛苦苦录制的视频如何得到有效保护呢?通过小编团队多年视频加密经验,特别推出适合教...

26600
来自专栏DevOps时代的专栏

台湾资深老专家:Scrum 和 Kanban 你选对了吗?

对于初学者或新人而言,由测试开始是再好不过的了,一旦写程序的功力够了,制造缺陷的机率自然会下降些,这个时候再来写程序,才不会害己害人。原因很简单;因为缺陷是程序...

67200
来自专栏智能计算时代

网站可靠性工程:DevOps 2.0

在DevOps中有没有更好的时间?电视节目如“兴趣人物”和“先生机器人“正在越来越好地显示开发人员的实际工作,使用大量的工作代码。像迈克尔·曼(Michael ...

42970
来自专栏吉浦迅科技

AMD的GPU究竟在并行优化上有什么优势?

今天从华硕得知,德国法兰克福某超算中心采用华硕ESC4000G2超算系统,搭载了总共700片AMD FireProS9150,准备冲击Top500。一...

35960
来自专栏大数据架构师专家

我们离Google SRE还有多远?

原文链接:https://www.jianshu.com/p/6c222a0832ee

33620
来自专栏zhisheng

想成为「不那么差」的程序员,离不开这个 buff

一周前,我分享了篇文章《如何成为一位「不那么差」的程序员》,当时主要是从硬技能和软实力两方面分享经验,今天我想做一点补充:其实,做一名不那么差的程序员,也离不开...

14620
来自专栏web前端教室

接昨天,电商网站的购物车的情况介绍

电商网站有大有小,大到淘宝,小到我曾经做过的那个。虽然不同级别的电商网站的体量是太阳和地球一样的差别,但我觉得思路应该都是类似的。就像太阳和地球都是圆球,开玩笑...

26050
来自专栏SEO

「知识」2018年的搜索引擎优化该怎么去做?

379120
来自专栏媒矿工厂

视频编码复杂度持续增加,云端硬编码方案优势凸显

过去十年,基于H.264/AVC的视频编解码器一直在流媒体应用领域占主导地位,但随着Apple在iOS 11中采用H.265/HEVC以及Googl...

63670
来自专栏WeTest质量开放平台团队的专栏

浪漫七夕!相“约”云端!

? 【活动内容】 在七夕这个充满浪漫气氛的节日里,云真机也是应约而来。第一批只限安卓手机用户报名,限100名,想获得测试资格?很简单啊。得抢!抢!抢!重要的事...

9510

扫码关注云+社区

领取腾讯云代金券