9.0 CDN 全景:它到底是什么

一句话

CDN 不是 “一堆缓存服务器”,而是三层系统的组合:调度层(DNS / GSLB / anycast)决定 “去哪个节点”,边缘层(PoP + 缓存 + 回源)决定 “内容怎么出去”,控制面(配置、预热、刷新、日志、计费)决定 “谁能改、改完多久生效”。

为什么需要它:四个物理事实

事实 后果 CDN 怎么解
光速有上限(约 5μs/km 单程) 跨洲 RTT 150–250ms,首包就慢 把内容搬到离用户一跳以内
运营商互联质量不均 跨网访问丢包、抖动 多线节点 + 就近接入
带宽成本随流量线性涨 回源带宽是最大成本项 边缘命中,减少回源
流量有突发(热点、直播、大促) 源站扛不住瞬时峰值 边缘吸收,源站只承受回源

所以 CDN 的价值可以写成一句话:用 “边缘存储 + 调度” 换延迟、换回源带宽、换突发承受力。

五个组成部分

层 组成 它决定什么 出问题时的表现
调度 DNS / GSLB / anycast / HTTP 302 用户被分到哪个节点 被调度到远端节点,延迟反而更高
边缘 PoP 机房、缓存进程、TLS 终结 命中率、首字节时间 命中率低 → 回源打满
回源链路 回源 HOST/协议、专线、多源 源站压力与一致性 回源风暴、源站被打挂
控制面 配置下发、预热、刷新、证书 变更生效速度与正确性 配错规则全站 404、刷新不生效
计费与观测 流量/请求计费、日志、报表 成本与排障能力 账单不可解释、故障无法定位

产品形态:先分清你买的是哪一种

形态 加速对象 关键能力 典型场景
静态加速 图片、JS/CSS、下载包 缓存命中、压缩、图片处理 站点、App 资源
下载分发 大文件(GB 级) 分片回源、断点续传、限速 安装包、视频文件
动态加速 API、HTML(不可缓存) 路由优化、连接复用、协议优化 全站加速、跨境 API
流媒体 点播 / 直播 切片、转码、低延迟协议 视频平台
边缘计算 轻量逻辑 边缘函数、KV A/B、鉴权、重写
安全 攻击流量 WAF、DDoS 清洗、BOT 管理 对外门户

选型时常被忽略的一点:同一家厂商的不同产品,调度与回源是两套系统。静态加速的节点未必适合动态加速,动态加速的链路也未必走静态节点。

五个指标,决定 “值不值”

指标 定义 目标量级 说明
命中率 边缘命中请求 / 总请求 静态 90%+ 由缓存键、容量、分布决定(见 9.1 边缘缓存原理)
回源率 回源请求 / 总请求 静态 < 10% 直接决定源站带宽(见 9.2 回源策略与回源率)
首字节(TTFB) 边缘到用户首字节 静态 < 100ms 含 TLS 与调度
可用性 边缘可用 / 总时间 99.9%+ 多厂商时看 “整体” 而非单家
单位成本 元 / GB 或 元 / 万请求 随量下降 计费模式差异极大(见 5.6 云成本结构)

计费:三种模式,算出来的数不一样

模式 怎么算 适合 陷阱
按流量 GB × 单价(阶梯) 流量平稳 突发时账单不可预测
按峰值带宽 95 分位峰值 × 单价 大流量、可预测 一次尖峰抬高整月账单
按请求 万次请求 × 单价 小文件多请求 命中率高时请求数才是主成本

比价时必须换算到同一个口径:静态小文件按请求计费可能比按流量贵得多,大文件反之。

本章地图

节 回答什么
9.1 边缘缓存原理 命中率由什么决定(缓存键 × 容量 × 分布)
9.2 回源策略与回源率 回源怎么配、回源率怎么降
9.3 缓存键设计 键里放什么、怎么规范化
9.4 预热、刷新与失效 发布时怎么让新内容立刻生效
9.5 动态加速 不能缓存的东西怎么加速
9.6 边缘计算模型 什么时候把逻辑放到边缘

反模式

反模式 后果
把 CDN 当 “便宜带宽”,不看命中率 回源率没降,账单反而多一份
只比单价,不比调度与回源 便宜但调度到远端,体验更差
认为 “上了 CDN 就安全” WAF/DDoS 是独立能力,不是缓存附赠
不做多厂商/多线 单家故障 = 全站静态资源不可用
不接入日志与命中率监控 出问题时无法判断 “是源站慢还是边缘慢”
把动态接口也缓存 用户看到别人的数据(最严重的一类事故)

三条铁律

🔑 CDN 的收益 = 命中率 × 流量;不谈命中率的加速方案都是猜。

🔑 调度决定体验下限:节点再近,调度错了也白搭。

🔑 缓存是 “按 URL 的承诺”:键设计错,等于把不同用户的内容混在一起。

自检

Q1 上了 CDN,源站带宽只降了 10%,最可能的原因是什么?

▸ 答案:命中率没起来。常见原因有三:① 缓存键里带了随机参数或全量 Cookie(每次都是新键);② TTL 太短或内容本身不可缓存(动态接口);③ 请求分散在大量不同 URL 上(长尾),单 URL 命中率天然低。诊断顺序:先看命中率与回源率,再看键的构成,最后看 TTL 与内容类型。

Q2 为什么 “按峰值带宽 95 分位” 计费可能比按流量更贵?

▸ 答案:因为它惩罚尖峰:一小时内因为一次直播或热点把带宽顶到 10Gbps,95 分位会把整月的计费带宽抬高,即使总流量不大。按流量则只付实际传输量。判断依据是 “流量是否平稳”:平稳选峰值带宽(通常更便宜),突发多选按流量或提前买保底。

Q3 选 CDN 时,为什么 “节点数量” 不是最重要的指标?

▸ 答案:因为体验由调度准确性 + 到源站的链路质量决定,而不是节点总数。节点多但调度到远端、或回源链路绕路,体验依然差。更该问的是:目标用户所在运营商/地域的覆盖质量、回源是否走专线、命中率与刷新时效、以及故障时的切换能力。

Q4 静态资源放 CDN 后,为什么还要在源站保留一套?

▸ 答案:因为 CDN 是缓存,不是存储:未命中、刷新、回源失败时都要回源站取。源站不存在 = 边缘也无法提供(除非开启了 “源站不可用时返回旧副本”)。同时发布流程也需要源站作为 “唯一真相”,由它推送/预热到边缘。

Q5 什么情况下不该用 CDN?

▸ 答案:三类:① 用户高度集中且离源站很近(收益趋近于零,只剩成本);② 内容几乎全部不可缓存且没有链路问题(动态加速可能不划算);③ 数据合规要求内容不得出特定区域(需先确认 CDN 节点与日志的落地区域)。判断标准始终是 “命中率 × 流量 × 单位成本” 这笔账,而不是 “别人都用了”。

跨篇相关:命中率的数学与缓存键的相互作用见 9.1 边缘缓存原理;回源链路与回源率见 9.2 回源策略与回源率;键设计见 9.3 缓存键设计;发布时的预热与刷新见 9.4 预热、刷新与失效;不可缓存内容的加速见 9.5 动态加速;边缘逻辑见 9.6 边缘计算模型;计费结构见 5.6 云成本结构。