Blob Store设计的要求


识别Blob Store的要求并进行估算。

要求

让我们了解以下功能和非功能要求:

功能需求

以下是Blob Store设计的功能需求:

  • 创建容器:用户应该能够创建容器以分组Blob。例如,如果一个应用程序想要存储特定于用户的数据,它应该能够将不同用户账户的Blob存储在不同的容器中。此外,用户可能想要将视频Blob分组并与图像Blob分开。一个Blob Store用户可以创建多个容器,每个容器可以有多个Blob,如下图所示。为了简化起见,我们假设我们不能在容器内部创建容器。

    QQ截图20230409211915

  • 存储数据:Blob Store应该允许用户将Blob上传到创建的容器中。

  • 获取数据:系统应该为上传的Blob生成一个URL,以便用户以后可以通过此URL访问该Blob。

  • 删除数据:用户应该能够删除Blob。如果用户想在指定的时间段(保留时间)内保留数据,我们的系统应该支持此功能。

  • 列出Blobs:用户应该能够获取特定容器中所有Blob的列表。

  • 删除容器:用户应该能够删除一个容器以及其中的所有Blob。

  • 列出容器:系统应该允许用户列出特定账户下的所有容器。

    QQ截图20230409212012

非功能性要求

以下是一个 Blob 存储系统的非功能性要求:

  • 可用性: 我们的系统应该高度可用。
  • 耐久性: 一旦上传数据,除非用户显式删除该数据,否则不应该丢失。
  • 可扩展性: 该系统应该能够处理数十亿个 Blob。
  • 吞吐量: 对于传输几 GB 的数据,我们应该确保高吞吐量。
  • 可靠性: 由于故障在分布式系统中是正常现象,我们的设计应该能够及时检测并恢复故障。
  • 一致性: 该系统应该具有强一致性。不同的用户应该看到相同的 Blob 视图。

QQ截图20230409212031

资源估算

让我们估算一下 Blob 存储系统所需的服务器、存储和带宽总数。

由于 Blob 可以具有各种数据,因此在我们的估算中提及所有这些数据类型可能不切实际。

因此,我们将使用 YouTube 作为示例,该平台将视频和缩略图存储在 Blob 存储中。

此外,我们将做出以下假设,以完成我们的估算。

假设:

  • 每天上传或观看视频的活跃用户数为 500 万。
  • 单个 Blob 存储服务器每秒可处理的请求数为 500。
  • 视频的平均大小为 50 MB。
  • 缩略图的平均大小为 20 KB。
  • 每天上传的视频数量为 25 万。
  • 单个用户每天的读取请求次数为 20。

服务器数量估算

根据我们的假设,我们使用每日活跃用户数(DAU)和 Blob 存储服务器每秒处理的查询数来估算所需的服务器数量。

我们使用以下公式计算所需的服务器数量:

Blob 存储系统专用于存储 YouTube 数据所需的服务器数量

存储空间估算

考虑上述假设,我们使用以下公式计算 YouTube 在一天内所需的总存储空间:

将上面的数字代入公式,我们得到每天约为 12.51 TB 的存储空间,用于在单个分辨率下保存上传的视频的单个副本。

存储视频和缩略图所需的总存储空间

每天上传的视频数量每个视频的存储空间 (MB)每个缩略图的存储空间 (KB)每天所需的存储空间 (TB)
250000502012.51

带宽估算

让我们估算上传和检索数据所需的带宽。

入站流量: 为了估算入站流量所需的带宽,我们考虑每天上传的总数据量,间接地意味着我们上面计算出的每天所需的总存储空间。每秒传输到服务器的数据量可以使用以下公式计算:

YouTube 上传视频所需的带宽

每天所需的存储空间 (TB)一天的秒数带宽 (Gb/s)
12.51864001.16

出站流量: 由于 Blob 存储是一种读密集型存储,因此大部分带宽用于出站流量。考虑上述假设,我们使用以下公式计算出站流量所需的带宽:

YouTube 下载视频所需的带宽

每天活跃用户数每个用户的请求次数数据大小 (MB)所需的带宽 (Gb/s)
50000002050462.96

QQ截图20230409213420

我们将使用的构建模块

我们在 Blob 存储系统设计中使用以下构建模块:

QQ截图20230409213450

  • 速率限制器: 需要速率限制器来控制用户与系统的交互。
  • 负载均衡器: 需要负载均衡器将请求负载分配到不同的服务器上。
  • 数据库: 使用数据库存储 Blob 的元数据信息。
  • 监控: 需要监控来检查存储设备和它们上面的可用空间,以便在需要时及时添加存储。

在本课程中,我们讨论了 Blob 存储系统的要求和估算。在下一课中,我们将设计 Blob 存储系统,并遵循所列出的要求。