这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
CDN 原理与适合的文件
为什么需要 CDN
对象存储适合保存文件,但不一定适合直接承载所有下载流量:
- 用户分布在不同地区,源站离用户越远,首字节时间越长。
- 热门文件被频繁访问,源站带宽成本不断上升。
CDN 的作用,是把文件缓存到离用户更近的边缘节点:
CDN 分发链路
用户浏览器 / App
CDN 边缘节点缓存 / 签名校验 / 防盗链
对象存储源站文件本体 / 冷热分层
命中缓存用户直接获取,无需回源
未命中回源CDN 到对象存储拉取并缓存
签名失效重新向业务服务申请签名 URL
一致性是 CDN 的核心代价:文件内容变化后,要么刷新缓存,要么版本化 URL。对文件系统来说,内容不可变 + 版本化通常比频繁刷新更稳定。
- 命中缓存:用户直接从边缘节点获取,快且不占源站带宽。
- 未命中:CDN 回源到对象存储,再把结果缓存起来。
哪些文件适合 CDN
不是所有文件都适合:
| 适合 | 不适合 |
|---|---|
| 公开访问的图片、附件、视频封面 | 权限频繁变化的私有文件 |
| 访问量高、内容稳定的文件 | 刚上传就要覆盖 / 删除的临时文件 |
| 可接受短时间缓存延迟的资源 | 含敏感信息且无签名访问控制的文件 |
所以文件系统要在元数据里区分访问级别:公开、私有、临时、审核中。不同级别对应不同分发策略。
下载链路的演进
基础上传: 业务服务直接吐文件(带宽、CPU 双高)
对象存储: 直接访问对象存储(源站压力仍在,延迟随距离上升)
CDN: 边缘节点就近缓存(首字节快,源站压力下降)
每前进一步,都是把「大流量」往离用户更近、更擅长承载的位置推。
接入 CDN 的代价
CDN 让下载变快,但也引入新复杂度:
- 缓存一致性:内容更新后,边缘节点可能还是旧版本(下一节)。
- 私有文件:不能直接暴露存储地址,要签名访问(再下一节)。
- 回源保护:缓存大面积失效时,回源风暴可能打垮源站(第四节)。
下一节先解决最核心的缓存一致性问题。
发现内容有问题?
告诉我们哪里需要改进。
