Amit Raghuvanshi · 2026-01-27

为什么 S3 比你的硬盘更快:分布式架构

摘要

文章解释了 Amazon S3 如何通过数据分布架构解决"热盘"问题。当 10,000 个用户同时下载一个 10GB 的电影文件时,单一硬盘会因为 IOPS 限制而崩溃,但 S3 可以通过将文件分片存储到数百个不同的硬盘中,实现并行读取,从而提供无限的吞吐量。

内容框架与概述

文章提出了"热盘"问题:想象你有一个单一的 10TB 硬盘,上传了一个 4K 电影文件(10GB),然后 10,000 个用户试图同时下载它。磁盘头开始疯狂跳动,IOPS 撞墙,服务器崩溃。在简单的存储系统中,性能受限于存储数据的物理设备的速度。

但 Amazon S3 没有这个限制。你可以从单个 S3 存储桶中每秒拉取太比特的数据。为什么?因为在 S3 中,你的文件不存在于一个地方。今天探索的是数据分布架构——S3 用来将慢速的物理硬盘变成无限可扩展存储引擎的机制。

文章解释了数据分布的架构概念,它旨在解决两个特定的架构失败:热管理和爆炸半径。热管理是指如果文件受欢迎,一个服务器无法处理负载,必须将读取吞吐量分散到 100 个服务器。爆炸半径是指如果数据中心烧毁,我们不能丢失数据,必须将风险分散到地理区域。

文章介绍了地理分布(可用区策略):当你将文件上传到 us-east-1(弗吉尼亚北部)时,你不是上传到"数据中心",而是上传到一个区域。一个区域由多个可用区组成,这些是物理上独立的数据中心,通常相距数英里,位于不同的电网和洪水平原上。写入路径:当你 PUT 一个对象时,S3 充当事务协调器。在你的数据被持久地提交到多个 AZ 之前,它不会说"成功"(HTTP 200)。

文章还介绍了设备级分布(分片策略):S3 不会将你的 5GB 文件存储为单个磁盘上的连续块。它会分片文件。过程:S3 将大对象分解为微小的块(如 4MB 或 16MB 块)。分散:这些块被分散到数百个不同的硬盘中,跨越不同的机架,跨越不同的 AZ。

为什么要这样做?想象你想读取那个 5GB 文件。单一磁盘:你以 100 MB/s 的速度读取(一个 HDD 的速度)。总时间:50 秒。分布式磁盘:你同时从 50 个磁盘读取。总速度:5,000 MB/s。总时间:1 秒。通过分片你的文件,S8 将对象的性能与硬件的性能解耦。

核心概念及解读

热盘问题:当多个用户同时访问存储在单一设备上的流行文件时,设备的 IOPS 限制会成为性能瓶颈,导致服务器崩溃。

数据分布:S3 将文件分片并分散存储到多个设备、机架和可用区的架构策略,使系统能够实现并行访问和更高的吞吐量。

可用区(AZ):物理上独立的数据中心,通常相距数英里,位于不同的电网和洪水平原上,用于实现地理冗余和高可用性。

分片策略:将大文件分解为小块(如 4MB 或 16MB)并分散存储到数百个不同的硬盘中,使并行访问成为可能。

共享无架构:通过将数据分散到多个地理位置独立的可用区,确保单个数据中心的问题(如洪水)不会影响其他数据中心,从而实现高持久性和高可用性。


原文信息

字段内容
原文Ep #77: Why S3 is Faster Than Your Hard Drive
作者Amit Raghuvanshi (The Architect’s Notebook)
发表日期2026-01-27

此摘要卡片由 AI 自动生成