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

一,需求缘起

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

场景一: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给更多的同学。

互联网架构,如何进行容量设计?相关推荐

  1. 互联网架构设计漫谈 (3)

    互联网架构设计漫谈 (3) 中小型互联网公司在并发量不高的情况下可以选用软件负载均衡作为代理层,他们通常和更靠外的"接入层"的硬件负载均衡器合作,为用户提供更好的服务.软件负载均衡 ...

  2. 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

    朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助 ...

  3. 架构思维:系统容量设计

    背景 单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道.一次比赛10人齐跑,所以至少需要6场比赛. 2000米的完成时间要求是20分钟 ...

  4. 架构与思维:系统容量设计

    背景 单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道.一次比赛10人齐跑,所以至少需要6场比赛. 2000米的完成时间要求是20分钟 ...

  5. 架构与思维:设计容量,到底有多重要 ?

    背景 单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道.一次比赛10人齐跑,所以至少需要6场比赛. 2000米的完成时间要求是20分钟 ...

  6. 互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理

    互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理 工作流是互联网中常见的应用场景,目前国内有很多厂商提供各种各样的工作流引擎.在国际也有一些知名的工作流引擎,比如:jBPM 和 Activ ...

  7. 互联网架构设计漫谈 (5)-搞清SpringCloud

    互联网架构设计漫谈 (5)-搞清SpringCloud 微服务发展至今有许多公司都提供了架构来协助搭建微服务平台,比较著名的有 Dubbo,DubboX,Spring Cloud.今天带大家来了解一下 ...

  8. 互联网架构设计漫谈 (4)-你知道微服务的“分与合”

    互联网架构设计漫谈 (4)-你知道微服务的"分与合" 业务高速发展的今天,单应用已经无法支撑庞大/复杂的业务系统.所以需要根据业务进行拆分,方便业务做扩容,并且增加大系统的团队协作 ...

  9. 互联网架构设计漫谈 (2)

    互联网架构设计漫谈 (2) 应用的接入层通常需要承载大量的网络请求,有些互联网企业几十万PV请求,在软件负载均衡无法支撑的情况下会考虑采用硬件负载均衡的技术帮助控制流量,然后再转发给软件负载均衡进行进 ...

最新文章

  1. 新一代算法模型:从搜索、推荐到广告!
  2. Linux常用指令---find | locate(查找)
  3. zabbix snmp trap 监控
  4. loadrunner—参数化
  5. 获取SQL Server数据库表的列名
  6. 测试一年多,上线就崩溃!微服务到底应该怎么测试?
  7. maven添加子工程_重量级!Maven史上最全教程,看了必懂
  8. java集合继承_java集合继承关系
  9. c# 访问hbase_大数据技术之C#通过Thrift连接查询HBase主要方法总结
  10. 管理新语:搞绩效考评需谨慎,切勿随意
  11. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一导读
  12. 二级MS office考试中一些常考的函数(Excel)(2)
  13. websocket断开重连解决方案,基于子慕大诗人博客修改 健壮强化版
  14. Python利用xpath和正则re爬取新浪新闻
  15. 生育指南(写给临产准妈妈)
  16. 史上最全的软件测试面试题
  17. MindMapper屏幕捕获功能该如何使用
  18. java ip加入黑名单_关于黑名单IP的设置
  19. 机器码、序列号、认证码、注册码的生成算法(二)
  20. 大气采样器的结构介绍

热门文章

  1. python里order_volume_Python 基础知识:Method Resolution Order (MRO) 和 super
  2. 输变电设备物联网传感器数据通信规约_输变电设备“智慧物联”提升电网质效...
  3. 从程序员到项目经理(12):如何管理自己的时间(上)
  4. 【Java数据结构与算法】第十六章 图
  5. 力扣.236二叉树的最近公共祖先
  6. Hadoop、storm和Spark的区别、比较
  7. 如何在Android中使用OpenCV
  8. js 阻止冒泡事件和默认事件
  9. 20145302张薇《Java程序设计》第十周学习总结
  10. Python3 下找不到urllib2的问题