系统设计:Blob 存储
介绍 Blob 存储并准备进行设计。
什么是 Blob 存储?
Blob 存储是用于非结构化数据的存储解决方案。我们可以将照片、音频、视频、二进制可执行代码或其他多媒体项目存储在 Blob 存储中。每种类型的数据都以 Blob 的形式存储。它遵循扁平数据组织模式,没有层次结构,即目录、子目录等等。
大多数情况下,Blob 存储被带有特定业务需求的应用程序使用,称为 写入一次,多次读取(WORM),即数据只能被写入一次,而且任何人都无法更改它。就像在 Microsoft Azure 中一样,Blob 只创建一次,但可以多次读取。此外,这些 Blob 不能在指定的时间间隔内删除,也不能被修改以保护重要数据。
提示
并非所有应用程序都需要此 WORM 要求。但是,我们假设已写入的 Blob 无法修改。如果需要,可以上传 Blob 的新版本,而不是修改它。
为什么要使用 Blob 存储?
Blob 存储是许多数据密集型应用程序的重要组成部分,例如 YouTube、Netflix、Facebook 等等。下表显示了某些最着名应用程序使用的 Blob 存储。这些应用程序每天生成巨量的非结构化数据。它们需要一种易于扩展、可靠、高度可用的存储解决方案,以便存储大型媒体文件。由于数据量不断增加,这些应用程序需要存储无限数量的 Blob。据估计,YouTube 每天需要超过 1 PB 的额外存储。在像 YouTube 这样的系统中,一个视频以多个分辨率存储。此外,所有分辨率的视频都在不同的数据中心和地区之间多次复制以满足可用性要求。这就是为什么每个视频所需的总存储量不等于上传视频的大小。
系统 | Blob 存储 |
---|---|
Netflix | S3 |
YouTube | Google Cloud Storage |
Tectonic |
如何设计 Blob 存储系统?
我们将 Blob 存储的设计分为五个课程和一个测验。
- 需求: 在此课程中,我们确定 Blob 存储的功能和非功能需求。我们还估计了 Blob 存储系统所需的资源。
- 设计: 在此课程中,我们提供高级设计、API 设计和 Blob 存储的详细设计,同时解释所有组件和工作流程的详细信息。
- 设计考虑因素: 在此课程中,我们讨论了设计的一些重要方面。例如,我们了解数据库模式、分区策略、Blob 索引、分页和复制等。
- 评估: 在此课程中,我们根据需求评估我们的 Blob 存储。
- 测验: 在此课程中,我们评估 Blob 存储设计的理解程度。
让我们从 Blob 存储系统的需求开始。