对象存储 OSS

Object Storage Service

一个能装下几乎无限多文件的大仓库,图片、视频、备份都往里放,用网址就能取出来。

存储与数据出现时间 · 2010 年前后按存储容量、请求次数与流出流量计费;归档类型单价很低,但取回有额外成本与等待。对象存储海量文件图片视频备份归档
看官方文档

01 它是干嘛的

OSS 是阿里云的对象存储服务,用「存储空间 + 对象」的扁平结构保存任意文件。它不像硬盘有容量上限、也不怕文件多,适合存放图片、音视频、日志、备份等海量数据,并可直接配合 CDN 对外分发。

02 为什么会有它

硬盘会满、目录会乱:海量文件为什么需要专门的仓库

普通服务器用文件夹和硬盘存东西,有两个天花板:一是容量有限,硬盘就那么大,装满就得加盘、迁移;二是目录一多就乱,几百个文件夹、几百万个文件塞在一台机器上,找文件越来越慢,管理和备份都是噩梦。

更现实的是业务形态变了。一个图片社区每天新增几十万张图,一个视频站每年产生几十万小时素材,一个 App 每天写几个 TB 的日志。这些文件「写一次、读很多次」,几乎从不修改,但要长期保存、随时能取。用传统文件系统扛这种量级,成本与运维都受不了。

对象存储就是为这种场景设计的:它假装自己是「桶」,你把文件丢进去,每个文件配一把唯一的钥匙(键);取的时候拿钥匙换文件。文件数量对系统几乎无感,容量随存随扩,还能自动做多地冗余。OSS 是国内最早大规模商用的对象存储之一,伴随阿里自身海量图片与视频业务成长起来。

03 它怎么工作

OSS 把文件当「对象」处理:大文件被切成多块并发上传,系统记录每个对象的元数据用于检索,读取时通过网址或 CDN 从最近的节点返回。

一个文件从上传到被全球读取① 申请上传凭证② 授权分片直传③ 合并为一个对象④ 记录元数据⑤ 热点自动上边缘客户端浏览器 / App存储服务 API签发临时上传凭证分片并发上传大文件切块,失败只重传一块桶(Bucket)无数个对象,没有目录树元数据索引大小 / 类型 / 哈希 / 标签边缘缓存热点文件就近返回对象存储不是硬盘:不能像文件夹那样随意改名,一个文件改名 = 复制一份再删除旧的。控制入口数据流向
重点看「分片并发上传」和「读取先经边缘缓存」两处:前者保证大文件稳定,后者让海量访问又快又省。

一个文件从上传到被访问:分片、元数据与就近分发

  1. 1
    ① 创建存储空间

    存储空间(Bucket)就像一个大抽屉,你为业务建一个桶,命名全局唯一,并选择它所在的地域。

  2. 2
    ② 分配权限与凭证

    设置桶是私有还是公开读,并给程序发放只含必要权限的访问密钥,密钥绝不写进前端。

  3. 3
    ③ 分片并发上传

    大文件被自动切成多个分片同时上传,单片失败只重传该片,几百 GB 的文件也能稳定传完。

  4. 4
    ④ 记录元数据

    每个对象的类型、大小、哈希、自定义标签都被记录,用于检索、分类与生命周期管理。

  5. 5
    ⑤ 读取与分发

    客户端用网址直接下载,热点内容经 CDN 就近命中边缘节点,不必每次回源到存储。

04 谁在用它

图片与视频的源站

用户的头像、商品图、短视频原片存进 OSS,再由 CDN 分发,是内容类应用的标配。

网站与应用附件

表单附件、下载包、安装包、静态资源统一放入 OSS,避免挤占应用服务器的磁盘。

数据备份与归档

数据库备份、历史日志长期存放,按低频或归档类型存储,成本大幅降低。

大数据分析的数据湖底

作为 MaxCompute、Flink 等计算引擎的原始数据存放地,实现存储与计算分离。

静态网站托管

把纯静态的前端页面放在 OSS,绑定域名即可访问,无需购买服务器。

05 怎么用

会用浏览器上传文件就能起步;要用得安全高效,需要理解权限与生命周期规则。

  1. 01在控制台创建一个存储空间,选择地域(尽量与你的业务资源同区域)。
  2. 02创建 RAM 子账号并只授予该存储空间的读写权限,生成访问密钥给程序使用。
  3. 03用控制台、ossutil 命令行或 SDK 上传文件。
  4. 04为需要对外访问的内容绑定自定义域名并开启 CDN 加速。
  5. 05配置生命周期规则:自动删除临时文件、把冷数据转为低频或归档存储。
用 Python SDK 上传并生成下载链接(示意)python
import oss2

auth = oss2.Auth('<AccessKeyId>', '<AccessKeySecret>')
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'my-bucket')

# 上传一个本地文件
bucket.put_object_from_file('photos/cat.jpg', '/tmp/cat.jpg')

# 生成一个 60 秒内有效的临时下载链接(不会暴露密钥)
url = bucket.sign_url('GET', 'photos/cat.jpg', 60)
print(url)

避坑提示

  • !访问密钥千万不要写进前端代码或提交到代码仓库,公网读取请用签名链接或 CDN 回源鉴权。
  • !对象存储没有「重命名」操作,改名等于复制加删除,大文件改名之前先估算耗时与流量费用。
  • !存储空间名全局唯一且创建后不可修改,命名时带上业务与环境的语义,方便后续管理。

06 关键概念

对象存储
用「桶 + 键」方式保存文件的仓库,没有真正的目录树,也不支持随意修改文件中途一段。
存储类型
标准、低频、归档等档位,访问越少越便宜,但取回可能需要等待与额外费用。
签名链接
服务端临时签发的带权限与有效期的网址,让客户端直接上传下载而不暴露密钥。
生命周期规则
按时间自动转移或删除对象的策略,用来控制长期存放的成本。

07 容易混淆的对比

AWS S3 / 腾讯云 COS同类对象存储,接口思路一致,选择主要看合规要求、地域覆盖与生态集成。
NAS 文件存储提供传统目录结构,适合多台服务器共享读写同一个目录;对象存储更适合海量与低频修改的文件。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态