S3 通俗指南:云端的“无限大”储物柜
·
S3 通俗指南:云端的“无限大”储物柜
S3 (Simple Storage Service) 是由亚马逊 AWS 推出的对象存储服务。
虽然它起初只是 AWS 的一个产品,但现在“S3 协议”已经成为了存储界的通用语(Lingua Franca)。
不管你后面用的是 AWS、阿里云 OSS、MinIO 还是 Ceph,大家基本都在讲 S3 协议。
1. 它是做什么的?(代客泊车的比喻)
为了理解 S3(对象存储),我们要把它和我们电脑里的硬盘(文件存储)区分开。
传统硬盘(文件系统):
- 像一个树状的文件柜。
- 你需要打开 C 盘 -> 打开 Users -> 打开 Parker -> 找到 Photos。
- 你可以只修改文件里的某一行字。
S3(对象存储):
- 像一个巨大的平铺的代客泊车场(或者超市储物柜)。
- 你把东西(Object)给管理员。
- 管理员给你一个唯一凭证(Key)。
- 下次你把凭证给管理员,他把东西原封不动还给你。
最核心的区别:
在 S3 里,没有真正的“文件夹”。
所谓的 photos/2023/beach.jpg,其实只是这个文件的名字(Key)这就叫这么长而已!
2. 三大核心概念
-
Bucket (桶)
- 这是最顶层的容器。
- 必须全球唯一(就像域名一样)。你叫了
my-test-bucket,别人就不能叫这个名了。 - 所有东西都得扔进桶里。
-
Object (对象)
- 也就是你的文件(图片、视频、日志)。
- 不可修改:你不能说“把这个视频得第 3 分钟剪掉”。在 S3 里,你只能覆盖上传一个新的视频来替换旧的。
-
Key (键)
- 文件的唯一标识符。
- 比如
images/logo.png。再次强调,images/只是名字列表的一部分,不是物理文件夹。
3. 为什么大家都爱用 S3?
A. 所谓“11 个 9”的持久性
AWS 宣称 S3 的持久性是 99.999999999%。
这意思是:如果你存了 1 万个文件,大概每 1000 万年才会丢一个。
它通过在不同的物理机房疯狂备份来实现这一点。你存进去一份,它背后可能存了 3 份以上。
B. 无限扩展
你不需要像买硬盘一样担心“存满了怎么办”。
S3 对用户来说是无限的。你只管存,背后的扩容是云厂商的事。
C. 静态网站托管
因为 S3 是通过 HTTP 协议访问的,你可以直接把 HTML/CSS/JS 扔进桶里,开启“静态网站托管”。
瞬间,你就拥有了一个不需要服务器的网站!
4. S3 协议:存储界的 USB 接口
现在,“支持 S3” 已经变成了存储系统的必修课。
- MinIO:开源界的 S3,让你可以自己在私有服务器上搭建一个“AWS S3”。
- Alluxio:支持 S3 接口,让大数据计算任务(Spark/Presto)能像访问 S3 一样访问各种底层存储。
- Ceph:老牌分布式存储,也提供 S3 兼容网关。
当你开发应用时,只要用了 S3 SDK,理论上你可以无缝切换以上任何一种后端,而不用改代码。
5. 开发者的注意事项
-
最终一致性 vs 强一致性:
- 早期的 S3 是最终一致性的(你刚上传完,立刻读可能读不到)。
- 好消息:现在 AWS S3 已经是强一致性了(写完立刻能读到)。
- 坏消息:某些兼容 S3 的其他存储系统可能还是最终一致性的,开发时要留心。
-
费用陷阱:
- 存储很便宜。
- 但是流量(出口带宽) 和 请求次数(API 调用) 是要钱的。
- 千万别写个死循环去轮询 S3 桶里的文件,那是“破产脚本”。
总结
- S3 就是互联网上的无限硬盘。
- 它是Key-Value结构,不是树状结构。
- 它是原子操作,文件只能整体上传/下载,不能局部修改。
更多推荐
所有评论(0)