一,需求缘起
互联网公司,这样的场景是否似曾相识:
场景一: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】 -> 压测很重要
【步骤五:根据线上冗余度回答两个问题】 -> 估计冗余度与线上冗余度差值
作者:58沈剑
[完]
欢迎加入“架构师微信”群,与更多专家、技术同行进行热点、难点技术交流。请添加微信:geekmainland或者扫描以下二维码加群主微信,申请入群,务必注明「姓名+公司+职位」。
相关推荐
### 互联网架构设计的核心知识点解析 #### 空间换时间 在互联网架构设计中,“空间换时间”是一种常见的设计理念,其核心在于通过预先占用一定的存储空间来换取更快的响应时间和更高的性能。这一理念主要体现在以下...
本文将基于提供的文档信息,详细解读京东应用架构设计的关键知识点,包括架构愿景、业务架构、应用架构、数据架构、技术架构以及618经验。 ### 架构愿景 架构愿景是指导整个应用架构设计的蓝图,它包含了对质量...
互联网广告平台系统架构设计是一个高度复杂的领域,涉及到众多的技术要素和设计理念。本架构设计以模块化、可扩展性和高可用性为原则,主要由以下几个部分构成:集群服务器构成的物理基础、前端访问代理、缓存策略、...
在构建大型互联网架构时,设计解决方案的目标是确保网站性能、可扩展性和稳定性。本文将从网络负载、Web应用服务器性能、数据库服务器性能以及不同Web应用的处理方式这四个关键方面来详细阐述这个问题。 首先,我们...
《互联网秒杀平台架构设计》 秒杀活动作为电商平台吸引流量和促进销售的重要手段,其背后的技术架构设计显得尤为重要。本文将围绕秒杀活动的特点、技术难点以及解决方案展开,探讨如何构建一个稳定、高效的秒杀平台...
《互联网架构是怎样炼成的》这一主题涵盖了众多关键的IT技术领域,让我们一起来深入探讨一下。 首先,我们从“大容量数据”出发。在互联网时代,数据量的爆炸性增长使得传统的数据处理方式无法应对。大数据技术...
在IT行业中,58同城作为一个知名的在线服务平台,其背后的技术架构设计对于支撑大规模业务运营至关重要。本篇文章将根据提供的文件信息,深入探讨58平台在架构设计、大数据处理以及分布式存储方面的实践和演进。 ...
《支付宝全局技术架构的设计漫谈》是一篇关于支付宝技术架构发展...同时,它也展示了支付宝在应对高并发、高可用挑战时的创新策略,如分布式架构、单元化和全链路压测等,这些都是现代互联网企业不可或缺的技术手段。
淘宝技术架构的设计围绕着“高稳定性、高数据安全、高可用性、高容量、高性能、高并发处理能力、高存储容量、低响应时间、低成本”等核心需求展开。通过备份、隔离、分割、异步、效率提升、自动化等策略,淘宝成功...
缓存技术是现代互联网架构中不可或缺的一部分,它不仅能够显著提高系统的性能,还能有效缓解数据库的压力。通过理解缓存的基本原理和应用场景,结合具体的缓存技术和策略,可以构建出高效稳定的缓存架构。希望本文...
### 互联网时代的架构变迁 #### 单机时代与单体架构 互联网的早期阶段,特别是在资源有限、人力资源紧张的情况下,为了...未来,随着新技术的发展和应用,互联网架构还将继续演进,以适应更加复杂多变的市场需求。
【互联网架构设计:高性能的后端】 在互联网产品开发中,构建高性能的后端服务是至关重要的,它涉及网络硬件、逻辑计算、通信协议和数据存储等多个层面。下面我们将深入探讨这些方面,以理解如何设计出高效且稳定的...
从给定的信息来看,本文档将重点探讨大型分布式网站架构的设计与实践,旨在为读者提供一个全面、深入的理解。由于给定的部分内容并未提供具体的技术细节,因此本篇内容将根据标题、描述以及标签来进行扩展。 ### ...
### 海量数据环境下Oracle数据库系统架构设计与优化的关键知识点 #### 一、大数据时代的背景与挑战 在当前的大数据时代背景下,随着社会信息化进程的不断深入和社会经济活动的日益数字化,企业面临的最大挑战之一...
超大型网站架构设计模型是针对高流量、大规模用户量的互联网平台所采用的一种复杂而高效的设计方式。在网站架构设计中,需要考虑到系统的可扩展性、数据一致性、服务器分布和性能优化等多个关键因素。本文以社交网站...
### 智慧校园系统集成总体架构设计方案 #### 一、项目概述 1. **项目背景**: - 智慧校园的概念旨在利用信息技术手段,构建一个集教学、科研、管理和服务于一体的智能化校园环境。 - 随着信息技术的发展,特别是...
传统金融注重安全稳定,而互联网金融则需要处理十亿级用户的百亿级日交易,这就要求架构具备高弹性,能够快速扩展容量,同时保证故障影响的隔离,确保资金安全,并降低运营成本。因此,弹性架构设计成为了互联网金融...
### 云计算架构设计与实现 #### 1.1 云计算概况 ##### 云计算的基本概念 云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以通过网络以按需自服务的方式提供给计算机和其他设备。云计算...
5. **弹性技术架构的体系化设计**:单元化架构是核心,它允许根据流量和用户维度进行动态调整,实现负载均衡。同时,通过数据拆分和流量控制,解决了数据库连接数和内存限制的问题。在数据中心层面,逻辑数据中心...