CDN 原理与适合的文件

为什么需要 CDN

对象存储适合保存文件,但不一定适合直接承载所有下载流量:

  • 用户分布在不同地区,源站离用户越远,首字节时间越长。
  • 热门文件被频繁访问,源站带宽成本不断上升。

CDN 的作用,是把文件缓存到离用户更近的边缘节点:

CDN 分发链路
用户浏览器 / App
CDN 边缘节点缓存 / 签名校验 / 防盗链
对象存储源站文件本体 / 冷热分层
命中缓存用户直接获取,无需回源
未命中回源CDN 到对象存储拉取并缓存
签名失效重新向业务服务申请签名 URL
一致性是 CDN 的核心代价:文件内容变化后,要么刷新缓存,要么版本化 URL。对文件系统来说,内容不可变 + 版本化通常比频繁刷新更稳定。
  • 命中缓存:用户直接从边缘节点获取,快且不占源站带宽。
  • 未命中:CDN 回源到对象存储,再把结果缓存起来。

哪些文件适合 CDN

不是所有文件都适合:

适合不适合
公开访问的图片、附件、视频封面权限频繁变化的私有文件
访问量高、内容稳定的文件刚上传就要覆盖 / 删除的临时文件
可接受短时间缓存延迟的资源含敏感信息且无签名访问控制的文件

所以文件系统要在元数据里区分访问级别:公开、私有、临时、审核中。不同级别对应不同分发策略。

下载链路的演进

基础上传:  业务服务直接吐文件(带宽、CPU 双高)
对象存储:  直接访问对象存储(源站压力仍在,延迟随距离上升)
CDN:      边缘节点就近缓存(首字节快,源站压力下降)

每前进一步,都是把「大流量」往离用户更近、更擅长承载的位置推。

接入 CDN 的代价

CDN 让下载变快,但也引入新复杂度:

  • 缓存一致性:内容更新后,边缘节点可能还是旧版本(下一节)。
  • 私有文件:不能直接暴露存储地址,要签名访问(再下一节)。
  • 回源保护:缓存大面积失效时,回源风暴可能打垮源站(第四节)。

下一节先解决最核心的缓存一致性问题。

发现内容有问题?

告诉我们哪里需要改进。