Blog
云对象存储入门:给小白的一次系统科普
从对象存储是什么、为什么需要对象存储,到 Bucket、Object、权限控制、访问链路、CDN 加速和常见使用场景,系统讲清云对象存储基础。
学习云计算、后端部署或者前端资源发布时,经常会遇到一组词:
TOS、OSS、COS、OBS、Bucket、Object、CDN、静态资源、文件上传。
这些词看起来像一堆云厂商缩写,但它们背后其实围绕的是同一类能力:
把文件稳定地存到云上,并且能够低成本、可扩展、方便地访问和管理。
这个能力,就是云对象存储。
如果你是第一次接触它,可以先记一句最核心的话:
对象存储就是“放文件的云仓库”,适合存图片、视频、文档、日志、备份、静态资源等非结构化数据。
先用一句话理解对象存储
对象存储不是给你存表结构、跑事务 SQL 的。
它更适合存“文件类数据”。
比如:
- 用户上传的头像
- App 图片
- 音视频文件
- PDF、Word、Excel
- 前端静态资源
- 业务日志
- 数据备份包
所以,对象存储通常不是拿来替代 MySQL 的,而是和数据库配合使用。
一个很常见的组合是:
MySQL存文件的业务信息对象存储存文件本体
比如一张“用户头像表”里,数据库存的是:
- 用户 ID
- 文件 URL
- 上传时间
- 文件类型
而头像图片本身,则放在对象存储里。
为什么不能直接把文件放在应用服务器里
这是很多小白最自然的想法:
既然我有服务器,那我把图片、附件直接存到服务器磁盘里不就好了?
小项目有时确实能这么做,但一旦系统变大,问题会很快暴露出来。
1. 扩容不方便
如果文件都存某一台服务器本地磁盘,那当你把应用扩成多台机器时,就会遇到问题:
- A 机器有这张图
- B 机器没有这张图
这会导致访问不一致。
2. 运维成本高
服务器磁盘空间有限,还要考虑:
- 磁盘满了怎么办
- 文件备份怎么做
- 文件误删怎么恢复
- 多副本怎么保证
如果全部自己维护,成本会很高。
3. 不利于分离应用和资源
现代系统通常希望把“应用运行”和“文件存储”分开:
- 应用服务器负责处理业务逻辑
- 对象存储负责存放文件
这样职责更清晰,也更容易扩展。
4. 公网分发能力弱
如果图片、视频都从业务服务器直接对外提供:
- 带宽压力大
- 下载性能差
- 容易拖慢业务服务
而对象存储通常更适合和 CDN 搭配,做大规模分发。
对象存储和本地磁盘、数据库有什么区别
可以先粗略区分成三类存储:
1. 本地磁盘
就是服务器自己的硬盘。
特点:
- 访问快
- 配置简单
- 适合临时文件、本地运行文件
缺点:
- 扩展性差
- 不方便多机共享
- 可靠性和备份要自己管
2. 数据库
数据库更适合存结构化数据,比如:
- 用户信息
- 订单数据
- 支付记录
它擅长的是:
- 查询
- 事务
- 关系建模
不是为了大规模存文件而设计的。
3. 对象存储
对象存储更适合存文件对象,特点通常是:
- 容量大
- 成本相对低
- 易扩展
- 方便公网访问
- 适合和 CDN 配合
所以如果一句话总结:
数据库存“业务数据”
订单、用户、状态、关系和事务等结构化信息。
对象存储存“文件数据”
图片、视频、附件、日志、备份等大文件对象。
本地磁盘存“运行时临时数据或本机文件”
缓存、临时文件、单机运行依赖,通常不作为长期共享存储。
什么叫“对象”
对象存储之所以叫“对象存储”,核心概念就是“对象”。
一个对象通常可以理解成:
共同构成一个可被保存、定位、访问和管理的对象。
例如一张图片对象,除了图片本身,还可能带有:
- 文件名
- 大小
- 上传时间
- Content-Type
- 自定义标签
它不是数据库里的“对象”,而是“一个被存储和管理的文件单元”。
什么是 Bucket
Bucket 可以理解成对象存储里的“桶”或者“容器”。
它相当于一类文件的存放空间。
比如你可以按业务划分多个 Bucket:
user-avatarapp-static-assetsvideo-archivebackup-files
Bucket 的作用类似于:
- 存储边界
- 权限边界
- 生命周期管理边界
通常很多策略都是以 Bucket 为单位配置的。
什么是 Object Key
Object Key 可以理解成对象在桶里的“路径名”或“唯一标识”。
例如:
bucket: user-avatar文件所属的存储容器。
key: 2026/07/08/u123/avatar.png桶内唯一的对象标识。
user-avatar / 2026/07/08/u123/avatar.png最终访问和管理时定位到的对象。
注意一点:
很多对象存储里的“目录”其实不一定是真实目录,更像是 key 的前缀组织方式。
也就是说,看起来像:
images/2026/07/banner.png本质上经常只是一个完整 key,不一定真有多级文件夹的物理结构。
一张图看懂对象存储访问链路
用户端
用户、浏览器或 App 发起上传、查看图片、下载附件等动作。
业务系统
后端校验登录态、业务权限,并决定文件应该如何被访问。
上传凭证
系统生成临时凭证、对象 Key、文件路径或短期有效访问地址。
对象存储 Bucket
文件本体进入 Bucket,由对象存储负责持久保存和权限管理。
CDN 加速
可选环节。热门资源缓存到更靠近用户的节点,降低访问延迟。
访问资源
用户最终访问图片、视频、文档或其他附件资源。
这条链路里,对象存储负责“文件放在哪”,CDN 负责“更快地把文件送出去”。
一个最常见的业务例子:上传头像
我们把它放到一个具体例子里会更清楚。
第一步:用户选择文件
用户在页面上选择头像图片。
第二步:前端向业务后端申请上传信息
后端可能会返回:
- 上传地址
- 临时凭证
- 文件 key
- 上传策略
第三步:文件上传到对象存储
前端把图片传到对象存储,而不是传到应用服务器磁盘。
第四步:后端记录文件地址
上传成功后,业务系统把图片 URL 或对象 key 记录到数据库。
第五步:页面展示头像
前端从对象存储地址或 CDN 地址加载头像。
所以这里数据库和对象存储的职责是分开的:
- 数据库存“这是谁的头像、头像地址是什么”
- 对象存储存“头像文件本身”
对象存储为什么特别适合静态资源
前端项目上线后,常常会产生很多静态资源:
jscss- 图片
- 字体文件
- 下载包
这些资源有几个共同特点:
- 读多写少
- 适合缓存
- 不需要事务
- 希望公网访问快
这和对象存储的能力高度匹配。
所以很多网站会把静态资源放到对象存储中,再配上 CDN。
常见效果是:
- 页面打开更快
- 业务服务器压力更小
- 文件分发更稳定
对象存储和 CDN 是什么关系
很多人第一次接触会把它们混在一起。
其实它们不是同一个东西。
对象存储
重点解决:
- 文件放哪
- 文件怎么持久保存
- 文件如何按桶管理
CDN
重点解决:
- 文件怎么更快到达用户
- 各地区访问延迟怎么降低
- 热门资源如何缓存分发
可以这样理解:
对象存储 = 仓库
负责把文件放稳、管好权限、保留生命周期策略。
CDN = 配送网络
负责把热门资源缓存到更靠近用户的节点。
对象存储里有文件,但如果全国各地用户都直接回源去拿,速度可能一般。
加上 CDN 之后,热门文件可以缓存到离用户更近的节点。
常见访问方式有哪些
对象存储文件一般有几类访问方式。
1. 公共读
适合:
- 网站公开图片
- 静态资源
- 公开下载文件
特点是:
- 用户可以直接访问 URL
- 实现简单
但要注意不能把敏感文件误设成公开。
2. 私有读
适合:
- 用户私密附件
- 内部文档
- 受控下载资源
这时通常需要:
- 鉴权
- 临时签名 URL
- 后端代理下载
3. 临时授权访问
这是很常见的一种折中方案。
比如文件本身是私有的,但系统可以生成一个“短时间有效”的访问地址给用户下载。
这样既避免了完全公开,也比后端全程代理更轻。
什么是预签名 URL
预签名 URL 可以理解成:
一个带时效、带签名的临时访问地址。
它常用于:
- 临时下载私有文件
- 临时上传文件
例如后端生成一个有效期 10 分钟的链接,用户在这 10 分钟内可以用它访问对象。
这类机制很常见,因为它兼顾了:
- 安全性
- 易用性
- 访问效率
什么是生命周期管理
对象存储不是只管“存进去”,还会涉及文件长期管理。
很多云厂商支持生命周期策略,比如:
- 上传 30 天后转低频存储
- 上传 180 天后转归档存储
- 上传 365 天后自动删除
这样做的目的主要是控成本。
因为不同文件的访问频率差异很大:
- 热门头像、首页资源访问频繁
- 旧备份、老日志几乎不访问
如果全部一直放在高频热存储里,成本不一定最优。
什么是版本控制
有些对象存储支持版本控制。
意思是同一个 key 的文件多次覆盖后,可以保留历史版本。
这适合:
- 防误删
- 防误覆盖
- 回滚文件版本
例如:
- 某个配置文件被错误上传
- 某个静态资源被错误替换
如果有版本控制,就更容易恢复。
对象存储常见使用场景
对象存储几乎是现代云上系统里非常通用的一块基础设施。
1. 用户上传文件
例如:
- 头像
- 简历
- 合同扫描件
- 作品图片
2. 网站静态资源
例如:
- 图片素材
- 前端构建产物
- 下载附件
3. 音视频文件
例如:
- 短视频
- 课程视频
- 音频素材
4. 备份和归档
例如:
- 数据库备份
- 日志归档
- 历史文件存档
5. 大数据与数据处理中间文件
例如:
- 离线数据文件
- 导入导出文件
- 模型训练素材
常见云厂商缩写分别是什么
这一块很容易混。
常见对象存储命名大致是:
TOS:火山引擎对象存储OSS:阿里云对象存储COS:腾讯云对象存储OBS:华为云对象存储S3:AWS 对象存储服务
虽然名字不同,但核心概念往往都差不多:
- Bucket
- Object
- 权限策略
- 生命周期
- 域名访问
- CDN 加速
所以你学会的是“对象存储这类产品的通用思路”,不是只会某一家云厂商。
对象存储在云原生体系里处在什么位置
如果把一个典型云上系统画出来,大概是这样:
数据库
结构化业务数据对象存储
文件类数据在这张图里:
- 负载均衡负责流量入口
- 应用服务负责业务处理
- 数据库负责结构化业务数据
- 对象存储负责文件类数据
所以对象存储不是“替代后端”的,而是云原生系统中的一个基础存储组件。
小白最容易混淆的几个点
对象存储是不是网盘
有点像,但不完全一样。
网盘更偏终端用户产品。
对象存储更偏云基础设施能力。
对象存储是不是数据库
不是。
它不擅长事务型关系查询,核心能力是文件对象的存储和访问。
对象存储是不是 CDN
也不是。
对象存储负责存,CDN 负责加速分发。
对象存储是不是本地磁盘
不是。
本地磁盘更像单机存储,对象存储更像云上的可扩展文件仓库。
一份适合记忆的总图
存什么
- 图片
- 视频
- 文档
- 静态资源
- 日志
- 备份
为什么不用服务器本地磁盘
- 不方便扩容
- 不利于多机共享
- 运维成本高
- 公网分发不友好
核心概念
- Bucket:桶
- Object:对象
- Key:对象标识
- ACL / Policy:权限控制
- Lifecycle:生命周期
- Presigned URL:临时签名地址
常见链路
- 用户上传
- 后端生成凭证
- 上传到对象存储
- 数据库存文件地址
- 用户通过对象存储或 CDN 访问
最后怎么真正理解对象存储
不要把对象存储只理解成“云盘”或者“文件服务器”。
更准确的理解方式是:
对象存储是一种面向海量文件对象的云上存储能力,适合承载静态资源、用户上传文件、音视频、备份和归档,并常常与数据库、应用服务、CDN 一起构成完整的云上系统。
当你能把这句话和下面这些概念对应起来时,说明你已经真正入门了:
- 为什么文件不直接存应用服务器
- Bucket 和 Object 分别是什么
- 数据库和对象存储如何配合
- 为什么对象存储常常和 CDN 一起出现
- 为什么私有文件需要签名 URL 或权限控制
- 为什么还要做生命周期和版本管理
如果后面你继续深入,这条学习线通常会顺着延伸到:
- 文件上传架构设计
- 对象存储权限与安全
- 静态资源发布和 CDN 缓存
- 前端直传与后端中转的区别
- 云上多媒体处理链路