对象存储概述
大家好,欢迎来到这门课。今天咱们先聊聊最基础的东西——对象存储到底是什么。我刚开始接触存储时,也分不清对象、块、文件这仨到底有啥区别。别说,当年第一次用 AWS S3 的时候,我甚至觉得它就是个云盘。后来踩了坑才明白,完全不是一回事。
什么是对象存储?
对象存储(Object Storage),说白了就是把数据当做一个“对象”来存。每个对象包含三部分:真正的数据、元数据(比如文件名、大小、创建时间)和一个全局唯一的 ID。你想想看,它就像图书馆里的一本书——书的内容是数据,书脊上的编号是 ID,图书馆的目录卡片就是元数据。你只要知道编号,就能找到那本书,不用管它在哪个书架、哪一层。
对象存储的典型代表就是 AWS S3、阿里云 OSS、MinIO 这些。它的核心特点是无层级结构、扁平命名空间,通过 HTTP API 访问,天生适合海量非结构化数据。我在项目中遇到过客户把几十亿张图片存在 OSS 上,检索一张图只需要一次请求,速度飞快。
http://域名/桶名/对象键,而不是文件系统的目录树。
对象存储 vs 块存储 vs 文件存储
这三者的区别,我画了张图帮你直观理解。记住一句话就行:块存储管“盘”,文件存储管“目录”,对象存储管“东西”。
主流对象存储服务
现在市面上用得最多的对象存储服务,我列了个表,方便你对比。我个人习惯根据部署环境来选:公有云用 S3 或 OSS,私有云或边缘直接用 MinIO。
| 服务 | 所属公司 | API 兼容性 | 部署方式 | 我的评价 |
|---|---|---|---|---|
| AWS S3 | Amazon | 行业标准 | 公有云 | 事实标准,学习首选 |
| 阿里云 OSS | 阿里云 | 兼容 S3 | 公有云 | 国内生态好,文档中文友好 |
| MinIO | MinIO, Inc. | S3 兼容 | 自建/私有云 | 开源轻量,适合测试 |
| 华为云 OBS | 华为 | 兼容 S3 | 公有云/混合云 | 政企场景多 |
| Ceph RGW | 开源社区 | S3 兼容 | 自建分布式 | 大厂自建首选 |
你可能会问:既然都能存对象,为啥要区分这么多家?说白了,就是锁定与生态的博弈。AWS S3 是祖宗,几乎所有 SDK 都优先支持它。但如果你在国内用阿里云,OSS 的内网传输免流量,还能配合 CDN 加速,这就是生态优势。MinIO 呢?我经常在开发环境跑一个 MinIO 容器,本地调试完直接换连接地址上线,无缝切换,相信我,这比每次都连远端 OSS 省事多了。
最后说一句:对象存储的加密上传下载,是本课程的核心。这一章你先记住,对象存储的本质是“通过 HTTP 协议操作对象”,加密只是加了一层安全壳。后面我们会手写 SDK 调用,包括 AES-256 客户端加密、KMS 服务端加密,甚至自己写一个加密中间件。现在打好基础,后面才不慌。