这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
冷热分离
账单上的一记闷棍
“光影”上线第 4 个月的一天早上,我收到一封阿里云的月度账单邮件。随手点开一看——存储费 380 元。
380 块?我们才 8000 个用户、5 万张图片,怎么就 380 了?
我打开 OSS 控制台一看,存储量已经飙到 2.1 TB。原因很简单:用户每上传一张 5MB 的原图,我们会生成 5 张缩略图(大/中/小/WebP/AVIF),加上原图本身,一张图片就占了将近 8MB 的存储空间。
但更让我不安的不是这些——而是这些存储的利用率。
帕累托法则现身
我写了一个脚本,分析过去 30 天所有图片的访问日志:
20% 的图片贡献了 84.3% 的流量。
更极端的是,前 1% 的图片(520 张)贡献了 42% 的流量——这些都是热门摄影师的作品、首页推荐图和社区活动中的照片。
而底部的 60% 图片(31,200 张),在 30 天内一次都没被访问过。它们就静静地躺在 OSS 上,每个月产生标准存储的费用。
42.7% 的图片是僵尸图片,30 天内无人问津,却在用最贵的标准存储。
这就是冷热分离的价值——把钱花在刀刃上。
设计分层策略
OSS 提供了三种存储类型,价格差距巨大:
存储类型 价格(元/GB/月) 适用场景 读取延迟
───────────────────────────────────────────────────────────────
标准存储 0.12 频繁访问(热数据) 毫秒级
低频存储 0.08 偶尔访问(温数据) 毫秒级
归档存储 0.03 极少访问(冷数据) 1~5 分钟(需解冻)
冷归档存储 0.01 合规归档 1~12 小时(需解冻)我的分层策略:
自动分层引擎
接下来是核心——自动分析访问频率并迁移存储层级的定时任务。
缩略图的特殊处理
这里有个细节值得注意:缩略图不应该跟原图走同一套分层规则。
存储费直接砍掉 45%! 从 30.48 元降到 16.63 元。
归档图片的”复活”机制
冷数据归档后,如果用户突然想看一张老照片怎么办?
前端配合:解冻等待体验
定时任务配置
冷热分析是一个定时任务,每天凌晨运行: