CDN原理与缓存架构
双十一凌晨,运营发现:
"为什么华南用户访问特别慢?华东只要1秒,华南要5秒!"
小张排查发现:服务器在华东机房,华南用户跨了半个中国。
"加CDN!"领导一拍脑袋。
小张配置了CDN,但发现缓存命中率只有30%,大量请求还是回源。
"CDN不是加上就完事了吗?"小张慌了。
【直观类比】
把CDN想象成超市配送网络:
- 没有CDN:北京用户买农夫山泉,水从杭州工厂发货,要3天
- 有CDN:北京用户买农夫山泉,从北京仓库发货,只要1小时
CDN就是在全国各地建"前置仓库",让用户从最近的仓库拿货。
CDN核心概念
什么是CDN?
CDN(Content Delivery Network,内容分发网络)是一组分布在不同地理位置的服务器群,缓存源站内容,就近提供给用户。
CDN的作用
核心指标
CDN工作原理
1. 域名解析阶段
用户访问时,DNS根据用户IP返回最近的CDN节点IP:
GSLB(Global Server Load Balance):
2. 缓存阶段
CDN节点检查是否有缓存:
3. 缓存过期策略
CDN使用TTL(Time To Live)控制缓存时间:
CDN缓存策略
1. 缓存key设计
缓存key决定了缓存的唯一性:
问题:URL参数顺序不同、大小写不同,算不算同一个key?
2. 缓存分级
边缘节点(Pop):最接近用户的节点 区域节点:省级/区域级缓存 中心节点:大区级缓存 回源:边缘→区域→中心→源站
3. 缓存刷新
CDN缓存配置最佳实践
1. 按资源类型设置TTL
2. 版本化资源URL
面试官追问"为什么CSS更新后用户还是看到旧的",答案是:
- URL没变:CSS更新了但URL没变化,CDN/浏览器直接返回缓存
- TTL太长:CDN缓存时间设置太长
- 浏览器缓存:用户本地有缓存
解决方案:使用基于内容的hash命名,或主动刷新CDN缓存。
3. 防盗链配置
防止其他网站盗用你的CDN资源:
CDN常见问题与解决方案
问题一:缓存命中率低
表现:CDN回源率高,源站压力没有减轻
原因分析:
解决方案:
问题二:缓存更新不及时
场景:用户看到过期内容
解决方案:
问题三:CDN故障导致服务不可用
场景:CDN节点故障,大量用户无法访问
解决方案:
CDN与高并发
峰值流量应对
CDN的优势:
- 吸收峰值流量
- 跨运营商访问
- 就近访问低延迟
缓存失效的"惊群效应"
问题:缓存过期瞬间,大量请求同时回源
解决方案:
CDN安全
1. HTTPS配置
2. WAF防护
CDN通常集成Web应用防火墙:
3. DDoS防护
边界与特例
1. CDN不适用场景
2. CDN成本考量
3. 私有CDN
大型互联网公司可能自建CDN:
优势:完全可控、成本可控 劣势:运维复杂、需要专业团队
常见误区
误区一:CDN就是缓存
错! CDN的核心是就近访问 + 缓存:
- 就近访问降低延迟
- 缓存减轻源站压力
- 还有负载均衡、安全防护等功能
误区二:CDN配置好就不用管了
错! CDN需要持续优化:
- 命中率监控
- TTL调整
- 故障应急演练
- 成本优化
误区三:CDN能解决所有性能问题
错! CDN的局限:
- 不缓存个性化内容
- 首次访问还是会回源
- 跨CDN切换有延迟
误区四:HTTPS一定比HTTP安全
不完全对。 HTTPS加密传输,但:
- CDN节点能看到明文(解密后再缓存)
- 需要选择可信的CDN厂商
- 配置不当仍然有安全风险
记忆技巧
CDN核心概念
"就近访问、缓存为王、源站减负、用户飞起"
- 就近访问:GSLB返回最近节点
- 缓存为王:命中率是CDN的核心指标
- 源站减负:CDN吸收大部分流量
- 用户飞起:访问速度大幅提升
CDN缓存TTL设置
"HTML短命、图片长寿、JS/CSS版本控"
- HTML:5-10分钟
- 图片:7-30天
- JS/CSS:1-7天(配合版本号)
- 字体:30天-1年
CDN故障排查口诀
"先看DNS、再看缓存、最后源站"
- dig确认CDN解析正确
- 检查缓存是否命中
- 确认源站可访问
实战检验
自测题一
问题:用户反馈CDN加速不明显,怎么排查?
解析:
- 检查DNS解析:确认用户访问的是CDN节点IP,不是源站IP
- 检查缓存命中率:
- 检查跨运营商:
- 电信用户访问联通CDN节点可能很慢
- 需要选择有多线接入的CDN厂商
- 检查HTTPS握手:
- HTTPS比HTTP多一次TLS握手
- 检查证书配置和TLS版本
自测题二
问题:如何设计一个高效的缓存策略?
解析:
自测题三
问题:CDN如何防止资源被盗用?
解析:
- Referer防盗链:检查请求来源
- IP黑白名单:允许/禁止特定IP访问
- URL签名:生成带时效的签名URL
- UA限制:禁止爬虫等非浏览器访问
- WAF规则:配置频率限制、SQL注入防护等