很多人认为 CDN 就是缓存,其实缓存只是它最基础的能力。真正让互联网"快"起来的,是智能调度、边缘计算、缓存体系和网络优化共同作用的结果。
前言
几乎所有大型互联网产品都会使用 CDN。
无论是淘宝、京东、腾讯视频、抖音,还是企业官网、软件下载、对象存储,背后都离不开 CDN。
很多运维工程师知道如何接入 CDN,却不一定真正理解它的工作原理。
有人认为:
CDN = 缓存服务器。
其实并不准确。
缓存只是 CDN 的一种能力。
真正的 CDN,是一套覆盖全球的大规模分布式网络,它通过智能调度、边缘缓存、回源机制以及网络链路优化,在保证稳定性的同时,为用户提供更快、更可靠的访问体验。
本文将从以下几个方面,系统讲透 CDN 的设计思想:
- 为什么需要 CDN
- CDN 的整体架构
- CDN 的核心工作机制
- 三种典型工作模式
- 实际部署案例
- 常见配置误区
一、为什么需要 CDN?
假设你的业务部署在北京,而访问用户来自全国各地。
对于上海用户来说,每一次请求都需要跨越数千公里,经过多个运营商网络和大量路由设备才能到达源站。
随着访问量增加,问题会越来越明显:
- 网络距离远,访问延迟高
- 所有请求集中访问源站,容易形成性能瓶颈
- 一旦源站发生故障,所有用户都会受到影响
CDN(Content Delivery Network,内容分发网络)的核心思想,就是:
将内容尽可能分发到距离用户最近的位置,由边缘节点直接响应用户请求。
可以把 CDN 理解成物流体系:
- 源站:中央仓库
- CDN 边缘节点:区域仓库
- 用户:消费者
如果每次都从中央仓库发货,不仅运输时间长,而且中央仓库压力巨大。
而有了遍布全国甚至全球的区域仓库,大多数订单都可以在本地完成配送,速度更快,成本也更低。
没有 CDN
用户 ───────────────► 北京源站
有 CDN
上海节点
/
用户 ─────
\
广州节点
│
▼
北京源站
二、CDN 整体架构
现代 CDN 一般采用三层架构。每一层负责不同的任务,共同完成内容分发。
[配图③:CDN 三层架构图]
用户
│
智能 DNS 调度
│
┌──────┴──────┐
│ │
上海 Edge 广州 Edge
│ │
华东 Region 华南 Region
│ │
└──────┬──────┘
│
Origin 源站
① 边缘节点(Edge Node)
边缘节点距离用户最近,是 CDN 真正提供服务的位置。
主要职责包括:
- 响应用户请求
- 缓存热点资源
- HTTPS 终止
- 限流与安全防护
绝大部分静态资源都会直接在边缘节点完成响应,无需访问源站。
② 区域中心(Region)
区域中心位于多个边缘节点之上。它主要缓存区域内访问频率较高但未进入边缘缓存的数据。
当边缘节点缓存未命中时,优先访问区域中心,而不是直接回源。这样可以进一步减少源站压力。
③ 源站(Origin)
源站保存业务的完整数据。只有当 CDN 所有缓存都未命中时,才会访问源站。
因此,正常情况下,源站处理的大多数都是回源请求,而不是用户直接访问请求。
三、CDN 的核心工作机制
1. 智能 DNS 调度
当用户访问 www.example.com,首先发生的并不是 HTTP 请求,而是 DNS 解析。
CDN 会根据多个维度动态选择最佳节点:
- 用户所在地区
- 所属运营商
- 节点实时负载
- 网络质量延迟
- 健康状态
最终返回距离用户最近且状态最优的边缘节点 IP。
[配图④:DNS 调度流程图]
用户访问域名
│
DNS 查询
│
智能调度
│
返回最近 Edge
│
HTTP 请求
2. 缓存机制
缓存是 CDN 性能提升的核心。通常采用多级缓存设计:
- 内存缓存:保存热点资源,响应速度最快
- SSD 缓存:保存普通资源
- 磁盘缓存:保存访问频率较低的数据
缓存是否有效主要由 HTTP Header 控制,例如:
Cache-Control
Expires
ETag
Last-Modified
合理设置缓存策略,可以显著降低回源率。
3. 回源机制
如果边缘节点没有缓存资源,就需要访问上级节点或源站。整个过程称为回源(Back-to-Origin)。
| 场景 | 说明 |
|---|---|
| Cache Miss | 首次访问,缓存不存在 |
| Cache Expire | 缓存已过期 |
| Bypass | 配置要求直接回源 |
[配图⑤:回源流程图]
用户请求
│
缓存是否命中?
│ │
是 否
│ │
返回 回源
│
更新缓存
│
返回用户
回源率越低,源站压力越小。因此生产环境通常会通过缓存预热、缓存刷新等方式提高缓存命中率。
四、CDN 的三种工作模式
很多运维工程师容易混淆这三种模式,它们最大的区别在于是否缓存内容以及如何访问源站。
[配图⑥:三种模式对比图]
| 模式 | 是否缓存 | 是否回源 | 适用场景 |
|---|---|---|---|
| 透传模式 | ✗ | 每次 | 支付、实时接口 |
| 代理模式 | ✓ | 未命中时 | 图片、视频、静态资源 |
| 动态加速 | ✗ | 每次 | API、交易系统 |
① 透传模式(Pass Through)
透传模式下,CDN 不缓存任何数据。请求到达边缘节点后,会立即转发到源站。
用户 → CDN → Origin
适用于:
- 登录支付
- 实时交易
- 用户隐私数据
优点: 数据实时一致性最好
缺点: 基本没有缓存加速效果,每次都需要访问源站
② 代理模式(Proxy)
这是最常见,也是使用最广泛的 CDN 工作方式。
用户 → CDN → 缓存?
│ │
命中 未命中
│ │
返回 回源
│
更新缓存
适用于:
- 图片、CSS、JavaScript
- 视频文件、下载
- 企业官网
优点: 加速效果明显、源站压力小、带宽成本低
缺点: 缓存策略需要精细设计,不适用于实时数据
③ 动态加速(Dynamic Site Acceleration,DSA)
动态内容通常无法缓存,因此 CDN 会优化网络链路,而不是缓存数据。
核心技术包括:
- 智能路由
- TCP 优化
- HTTP/2、HTTP/3(QUIC)
- 长连接复用
[配图⑦:动态加速示意图]
普通公网
用户 → 公网 → 公网 → 源站
-------------------
DSA
用户 → CDN Edge → CDN 专网 → Origin
适用于:
- API 接口
- 金融交易
- 在线游戏
- 即时通讯
虽然不会缓存数据,但通常能够有效降低网络延迟,提高跨地域访问质量。
五、如何选择 CDN 工作模式?
| 业务类型 | 推荐模式 | 原因 |
|---|---|---|
| 图片、CSS、JS | 代理模式 | 缓存命中率高,成本低 |
| 视频点播 | 代理模式 | 大文件缓存效果明显 |
| API | 动态加速 | 优化网络链路 |
| 支付交易 | 透传模式 | 保证实时性和一致性 |
| 混合业务 | 代理 + 动态加速 | 静态缓存,动态优化 |
对于大多数互联网业务来说,通常不会只采用一种模式,而是组合使用:
- 静态资源采用代理缓存
- API 接口采用动态加速
- 支付、登录等敏感请求采用透传模式
这样既保证了性能,又兼顾了实时性和安全性。
六、生产环境常见配置误区
1. TTL 设置不合理
TTL 太短,会导致频繁回源;TTL 太长,又可能导致用户访问到旧数据。
建议根据业务特点设置不同缓存时间,而不是统一配置。
2. Cache Key 设计不合理
如果将 session_id、token、utm_source 等无关参数纳入 Cache Key,会导致同一资源产生大量重复缓存,降低缓存命中率。
应合理过滤无关参数,提高缓存利用率。
3. HTTPS 回源配置错误
源站与 CDN 的证书配置不一致,可能导致 SSL 握手失败或回源性能下降。
建议统一规划 HTTPS 配置,并定期检查证书有效期。
4. 回源超时配置过短
源站在发生 GC、慢 SQL 或高负载时,若 CDN 超时时间设置过短,容易引发大量重试请求,进一步放大源站压力。
建议结合业务特点合理设置回源超时和重试策略,避免雪崩效应。
七、CDN 常见面试题
Q:为什么 CDN 能降低访问延迟?
因为用户访问的是距离自己最近的边缘节点,同时减少了跨运营商和跨地域网络传输带来的时延。
Q:为什么支付接口通常不使用缓存?
支付数据要求强实时性和强一致性,缓存可能导致数据过期,因此通常采用透传模式。
Q:CDN 和 Nginx 反向代理有什么区别?
Nginx 是单点反向代理,而 CDN 是覆盖多个地域的分布式反向代理网络,具备智能调度、边缘缓存、回源优化和全局负载均衡等能力。
Q:CDN 为什么还能抵御 DDoS 攻击?
因为用户请求首先到达 CDN 边缘节点,源站 IP 被隐藏,大量恶意流量可在边缘完成清洗、限流和拦截,从而降低源站压力。
总结
CDN 并不仅仅是一个缓存系统,而是一套融合了智能调度、边缘缓存、回源优化和网络加速的分布式基础设施。
其核心能力可以概括为四个方面:
- 智能调度:根据地域、运营商、网络质量等因素,将用户请求分配到最佳节点。
- 边缘缓存:将热点内容缓存在离用户最近的位置,大幅降低访问延迟。
- 回源优化:通过多级缓存、缓存预热和合理的缓存策略,减少源站压力。
- 动态加速:针对无法缓存的动态请求,优化网络路径和传输协议,提升访问效率。
在实际生产环境中,透传模式、代理模式和动态加速模式并不是相互替代,而是相互配合。静态资源通常采用代理缓存,动态接口采用动态加速,支付等强一致性业务采用透传模式。
选择合适的 CDN 策略,不只是为了"更快",更是为了在高并发场景下获得更好的稳定性、可用性和用户体验。
关注公众号「运维之美」获取更多技术干货

浙公网安备 33010602011771号