资源估算示例


试试手头的一些估算计算。

简介

现在我们已经打下了资源估算的基础,让我们利用我们的背景知识来估算服务器、存储和带宽等资源。下面,我们考虑一个场景和一个服务,做出假设,并根据这些假设进行估算。让我们马上开始吧!

需要的服务器数量

让我们对类似Twitter的服务做出以下假设。

假设:

  • 每天有5亿活跃用户(DAU)。
  • 每个用户平均每天发出20个请求。
  • 还记得单个服务器可以处理8000个RPS。

估算需要的服务器数量

搜狗截图20230406180650

  • 系统每秒流量数:

  • 所需服务器数量:

事实上,上面的数字看起来不对。

如果我们只需要15台商用服务器来服务5亿活跃用户,那么为什么大型服务在数据中心中使用数百万台服务器呢?

主要原因是RPS不足以估算提供服务所需的服务器数量。

此外,我们在上面的计算中做出了一些基本假设。其中一个假设是一个请求仅由一个服务器处理。

实际上,请求经过网站服务器,并可能与应用服务器进行交互,可能还从存储服务器请求数据。

每个服务器处理每个请求所需的时间可能不同。

此外,每个请求可能因数据中心、应用程序和请求本身的状态而得到不同的处理。请记住,我们有各种服务器用于在数据中心内提供各种服务。

我们已经确定了以下事实:

  1. 由于许多因素,例如每个服务的设计不同、具有不同的扇出规则和硬件、服务器的职责随时间变化等等,因此找到准确的容量估算是具有挑战性的。
  2. 在设计级别上,粗略的估算是合适的,因为目的是得出所需资源的合理上限。我们还可以使用排队理论和运营研究的高级方法来作出更好的估算。然而,在面试或初始设计时使用这样的策略是不合适的。现实系统使用各种方法(初步计算、模拟、原型制作和监测)逐步改进它们的初始(可能松散的)估算。

因此,我们通过描述服务器在给定日期处理多少客户端来近似服务器数量:

为了得到更好的近似值,让我们做出以下两个假设:

  1. 我们假设服务的每个日活跃用户(DAU)每天只发送一个请求。

  2. 我们假设整个服务的所有用户的请求都在一天中的特定时间同时到达服务。我们使用此假设来获取峰值负载的容量估算。要做得更好,我们需要请求和响应分布,这可能在原型制作时可用。我们可以假设分布遵循特定类型的分布,例如泊松分布。通过将DAU作为特定秒的峰值负载的代理,我们避免了找到请求和响应的到达率的困难。

因此,DAU将成为每秒请求的数量。我们已经有了服务器的RPS值,因此方程(1)变为:

通过在上面的方程中插入值,我们得到了以下服务器数量:

提示

注意: 我们的计算是基于一种可能不能给我们服务器数量的紧密界限的近似方法,但它仍然是现实的。

因此,在解决设计问题时,我们使用这种方法来估算服务器数量。

简单来说,上面给出的方程假定一个服务器可以每秒处理8000个用户。我们在本课程的其他部分中也使用这个参考值。

存储需求

在这个部分中,我们尝试通过使用Twitter作为例子来理解如何进行存储估计。我们估计Twitter在一年内发布新推文所需的存储空间。让我们从以下假设开始:

  • 我们拥有250M日活跃用户。
  • 每个用户每天发布三条推文。
  • 十分之十的推文包含图像,而百分之五的推文包含视频。任何包含视频的推文将不包含图片,反之亦然。
  • 假设平均而言,一个图像大小为200KB,一个视频大小为3MB。
  • 推文文本及其元数据在数据库中需要总共250字节的存储空间。

因此,会需要以下存储空间:

估算存储需求

搜狗截图20230406180846

  • 每日推文量:
  • 每天所需推文存储空间:
  • 每天所需的图片存储空间:
  • 每天所需视频存储空间:
  • 每天所需的总存储空间:
  • 每年所需存储空间:

搜狗截图20230406180903

带宽需求

为了估算服务的带宽需求,我们采用以下步骤:

  1. 估算服务每天接收的数据量。
  2. 估算服务每天发出的数据量。
  3. 通过将输入和输出数据除以一天的秒数来估算以Gbps(千兆比特每秒)为单位的带宽。

进入流量: 让我们继续使用Twitter的前一个例子,这需要每天128 TB的存储空间。因此,进入流量应支持以下每秒带宽:

提示

注意: 我们乘以8是为了将字节(B)转换为比特(b),因为带宽是以每秒比特为单位进行度量的。

输出流量:

假设单个用户每天查看50条推文。

在保持五分之一和十分之十的视频和图像比例的情况下,对于这50条推文,有2.5条将包含视频内容,而五条将包含图片。

考虑到每天有2.5亿活跃用户,我们得到以下估计:

估算带宽需求

搜狗截图20230406180916

  • 每日推文查看量:
  • 每秒推文查看量:
  • 每秒推文所用带宽(一篇推文等于250字节):
  • 10%图片每秒所用带宽:
  • 5%视频推文所用带宽:

所需总输出流量为:

假设上传内容未压缩, Twitter 所需总流量为:

Twitter所需总带宽计算

Twitter是一个全球知名的社交平台,每天有数以百万计的用户通过该平台发送消息、图片、视频等信息。

因此,高速、稳定的网络带宽对于Twitter来说至关重要。

我们可以通过简单的计算来确定Twitter所需的总带宽:

假设:

  • 每个用户每天平均发送10条消息
  • 平均每条消息大小为100 KB
  • Twitter的用户数量为1.2亿

计算方式:

每天总共发送的数据量 = 每个用户发送的消息数量 x 平均每条消息大小 x 用户数量

每天总共发送的数据量 = 10 x 100KB x 1.2亿

每天总共发送的数据量 = 1.2 x 10^11 KB

每天总共发送的数据量 = 1.2 x 10^13 B

每秒钟总共发送的数据量 = 每天总共发送的数据量 / 每天的秒数

每秒钟总共发送的数据量 = 1.2 x 10^13 B / (24 x 60 x 60 s)

每秒钟总共发送的数据量 = 139.44 MB/s

因此,Twitter每秒钟所需的总带宽为139.44 MB/s。

此外,由于用户数量和视频等富媒体信息的增长,这个数字可能还会增加。因此,Twitter需要不断优化网络架构,以确保稳定的带宽,并为用户提供最佳体验。