您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

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

时间:2019-08-02 10:05:44  来源:  作者:

一,需求缘起

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

场景一: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】 -> 压测很重要

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

私信头条号,发送:“资料”,获取更多“秘制” 精品学习资料

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!



Tags:互联网架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系...【详细内容】
2020-07-30  Tags: 互联网架构  点击:(85)  评论:(0)  加入收藏
数据库中可以用 datetime、bigint、timestamp 来表示时间,那么选择什么类型来存储时间比较合适呢?前期数据准备 通过程序往数据库插入 50w 数据 数据表:CREATE TABLE `users`...【详细内容】
2020-06-28  Tags: 互联网架构  点击:(80)  评论:(0)  加入收藏
什么是高并发?高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关的常见指标有哪些? ...【详细内容】
2019-10-08  Tags: 互联网架构  点击:(106)  评论:(0)  加入收藏
对于一个大型网站,主要有以下几个特征: 支撑海量数据 非常高的访问量我们常见的大型网站,如百度、淘宝、京东等,都是一个分布式系统。这么复杂的系统也不是一天建成的,每个系统都...【详细内容】
2019-09-03  Tags: 互联网架构  点击:(137)  评论:(0)  加入收藏
一,需求缘起互联网公司,这样的场景是否似曾相识:场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题:(1)机器能抗住么?(2)如果扛不住,需要加多少台机器?场景二:系统设计阶段,技术...【详细内容】
2019-08-02  Tags: 互联网架构  点击:(264)  评论:(0)  加入收藏
1. 大型网站系统的特点 高并发、大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,迭代频繁 渐进式发展2. 大型网站架构演化历程2.1. 初始阶段架...【详细内容】
2019-04-29  Tags: 互联网架构  点击:(217)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条