一、对象存储概述:从传统存储到对象存储的进化
大家好,我是你们的讲师。今天我们来聊聊对象存储。我最早接触存储时,脑子里只有“文件”和“块”。后来做云原生项目,第一次看到对象存储的API,心里想:这不就是个简单的键值对数据库吗?嗯,后来我发现我错了——它远比想象中更强大,也更有趣。
说白了,对象存储是一种扁平化的数据存储方式。每个数据单元叫做一个“对象”,有唯一的ID,没有层级目录。你存进去,它给你一个URL;你拿着URL就能取出来。就跟塞进储物柜拿个钥匙一样。
1.1 对象存储 vs 传统存储:差别在哪?
传统存储分两种:文件存储(NAS)和块存储(SAN)。文件存储用树状目录,像Windows的文件夹;块存储则把硬盘切成小块,直接挂给操作系统。而对象存储——它既没有目录树,也不管文件系统,它只管「对象」。
我做过一个视频平台项目,早期用NFS存用户上传的视频。文件一多,ls命令卡死,备份也慢。换成对象存储后,直接按ID存取,性能稳得很。为什么?因为对象存储的元数据是分布式索引,查找速度不随文件数量增长而下降。
| 对比维度 | 文件存储 | 块存储 | 对象存储 |
|---|---|---|---|
| 数据组织 | 树形目录 | 块设备映射 | 扁平桶+对象ID |
| 访问方式 | 文件路径/NFS | SCSI/iSCSI | RESTful HTTP API |
| 扩展性 | 有限(单节点瓶颈) | 中等(SAN扩容复杂) | 无限(分布式) |
| 适用场景 | 办公文档、小文件 | 数据库、虚拟机磁盘 | 云存储、静态文件、备份 |
| 成本 | 中 | 高(专用硬件) | 低(通用服务器) |
我曾经在一个项目里,把MySQL的ibd文件直接放到对象存储上。结果呢?你要的随机读写根本不行,延迟高,最后全表扫描都跑不完。记住:对象存储适合顺序读写的大文件,不适合小文件的频繁随机IO。
1.2 常见厂商:AWS S3、阿里云OSS、MinIO
目前市面上三足鼎立。AWS S3是祖师爷,几乎所有对象存储的API都向它看齐;阿里云OSS是国内用得最多的;MinIO是开源的自建方案。我个人的习惯是:上云用S3或OSS,边缘或私有部署用MinIO。
| 特性 | AWS S3 | 阿里云 OSS | MinIO |
|---|---|---|---|
| 协议标准 | S3原生 | S3兼容 + 自有API | S3兼容 |
| 部署方式 | 公有云 | 公有云 / 专有云 | 自建 / 容器 / 混合 |
| 核心优势 | 生态最丰富,全球节点 | 国内网络好,CDN集成 | 开源、高性能、轻量 |
| 收费模式 | 按量付费 | 按量付费 + 资源包 | 免费(开源) |
| 加密支持 | SSE-S3 / SSE-KMS / SSE-C | KMS / 客户端加密 | SSE-S3 / 客户端加密 |
💡 小贴士:如果公司预算紧张,又想体验对象存储,我建议先用MinIO跑在笔记本电脑上。docker run一下就起来了,API和S3完全兼容,后面无缝迁移到云上。
1.3 对象存储的核心概念
你必须理解这几个名词:
- Bucket(桶):对象的容器,全局唯一命名空间。比如你的图片都放在
my-awesome-photos桶里。 - Object(对象):实际数据 + 元数据 + 唯一标识符(Key)。Key就是对象的路径,但本质只是个字符串。
- Endpoint(端点):服务地址,比如
s3.amazonaws.com或oss-cn-beijing.aliyuncs.com。 - Access Key / Secret Key:访问凭证,相当于用户名密码。保管好,泄露了数据就没了。
// 最简单的S3 PUT对象示例(伪代码)
PUT /my-bucket/my-photo.jpg HTTP/1.1
Host: s3.amazonaws.com
Authorization: AWS4-HMAC-SHA256 ...
x-amz-content-sha256: ...
Content-Length: 1048576
[二进制数据体]
🔑 核心要点:对象存储的操作就是四个动词:PUT、GET、DELETE、LIST。你的SDK封装了签名和传输,但底层就是HTTP。
1.4 对象存储的知识体系图
我画了一张图,帮你把本章内容串起来。你一看就明白对象存储在整个系统中的位置。
这张图你应该能看到:对象存储横跨核心概念、与传统存储的对比、主流厂商,最后落地到我们课程的主题——SDK加密上传下载。后面的章节,我会带着你一步步拆解这些方块里的细节。
📌 我建议你把这张图保存下来。每次学新章节前回看一眼,就知道当前知识在体系里的位置,不会迷路。
1.5 本章小结
我们这一章认识了对象存储:它不是文件存储也不是块存储,而是通过HTTP对桶中对象进行操作的扁平存储。三大家:AWS S3、阿里云OSS、MinIO,API高度兼容,但各有侧重。核心概念就四个:桶、对象、端点、密钥。掌握这些,你已经站在门槛上了。
接下来,我会手把手带你配置SDK、处理签名、处理加密。别担心,我会把踩过的坑全都告诉你。