
目标确认:明确日均请求量、并发流量、峰值QPS、平均码率与分辨率。
资源准备:准备源站(对象存储或自建NGINX),域名、SSL证书、访问日志与监控账户。
指标定义:确定上线指标(播放启动时间<2s、缓冲率<1%、缓存命中率>90%)。
比较要点:节点覆盖(地域/运营商)、支持协议(HTTP/2、QUIC/HTTP3、TLS)、视频特性(分片缓存、回源合并、分段并发)、价格与SLA。
拓扑决定:最近接入(边缘节点直出)或加速层+回源(origin shield)。推荐场景:国内外混合使用不同CDN或使用带回源加速的统一CDN。
对象存储(如S3/OSS):建立bucket,设置静态网站或匿名读策略;配置CORS允许域名;设置生命周期与版本。
自建NGINX源站:启用gzip、设置range请求支持、配置cache-control与expires头。示例:add_header Cache-Control "public, max-age=3600"; 配置支持byte-range以便播放定位。
切片工具:使用ffmpeg生成多码率HLS示例命令:ffmpeg -i input.mp4 -c:v libx264 -b:v 1200k -s 1280x720 -hls_time 6 -hls_segment_filename seg_720p_%03d.ts index_720p.m3u8。
清单合成:生成master.m3u8包含各分辨率的分流地址,确保相对路径正确并放在同一源站或CDN可访问位置。
域名规划:为视频内容创建专用域名(例如 video.example.com),配置CNAME指向CDN提供的域名。
证书管理:使用Let's Encrypt或CDN托管证书;HTTPS必启。验证:在CDN控制台绑定域名并上传/自动申请证书,等待生效后通过curl -I https://video.example.com 检查TLS链。
缓存粒度:对.m3u8设置短缓存(如60s),对.ts文件设置长缓存(如7天)。示例:Cache-Control: max-age=604800 对分片;Cache-Control: max-age=60 对清单文件。
回源策略:启用origin shield或回源合并,设置回源超时与最大并发回源,避免回源风暴。
签名URL(Token):CDN多数支持URL签名,后端生成带过期时间的签名字符串并拼接到URL中(如?token=xxx&expires=ts)。
防盗链:结合Referer白名单、签名和IP黑白名单,配置CDN防盗链策略并在回源处验证签名以防伪造。
CORS设置:在源站或CDN中配置Access-Control-Allow-Origin为播放域,允许OPTIONS预检。示例:add_header Access-Control-Allow-Origin "https://app.example.com";
Header透传:确保User-Agent、Range、Range-Unit等必要请求头透传到源站,且响应包含Accept-Ranges: bytes。
日志开启:开启边缘日志(访问日志、回源日志),定期拉取或使用CDN日志服务;配置格式包含status、uri、referer、bytes、client_ip、cache_status。
监控项:带宽/流量、QPS、cache hit率、回源QPS、4xx/5xx比率、播放失败率,设置阈值告警(如5xx>0.5%触发告警)。
功能测试:校验m3u8与ts能在CDN地址直接访问;检查跨域、签名、证书、响应头。命令示例:curl -I https://video.example.com/master.m3u8。
压力测试:使用压测工具模拟播放并发(例如k6、wrk),关注回源QPS、缓存命中率、边缘带宽,逐步放大压力到峰值并观察回源稳定性。
回滚策略:在接入CDN前保留原域名或通过权重切换流量;CDN配置版本化,出现问题时快速回滚到上一版配置。
容错组件:配置多CDN或多源站冗余,DNS采用短TTL与健康检查,实现故障流量切走。
必检项:域名解析正确、证书生效、m3u8/ts缓存策略正确、签名鉴权测试通过、监控与告警到位、回源响应稳定。
演练:做一次从小流量到大流量的灰度演练(例如10%、30%、60%、全部),每步观察关键指标达标方可继续。
步骤一:在CDN控制台将域名从测试态切为生产态并开始引流5%-10%。步骤二:监控30分钟至1小时,确认指标正常后继续放量。
步骤三:最终100%切换并持续监控24-72小时,脚本化自动化监控并保留快速回滚计划与联系人列表。
常规维护:定期检查缓存命中率、回源QPS、分片大小和切片时长;根据数据调整hls_time和分片策略以降低请求数或提升启动速度。
优化建议:启用HTTP/2与QUIC以降低握手延迟,使用边缘预热API预拉常播资源,分析日志进行热点缓存优化。
问题示例:播放卡顿但边缘命中率高——检查带宽瓶颈与并发连接数;播放404或403——检查签名/权限或CORS;高回源QPS——检查缓存配置和分片策略。
处理流程:定位(边缘/回源)→ 查日志(边缘/回源)→ 临时规则(短期降权或增加缓存时间)→ 根因修复。
答:使用curl查看响应头中的CDN相关字段(如X-Cache、x-cache-status、Age等),示例:curl -I https://video.example.com/seg_001.ts。首次请求可能显示MISS,重复请求应显示HIT。也可查看CDN控制台的边缘/回源日志与命中率报表。
答:可通过增大分片时长(如从4s到6-8s)减少请求数,同时保证码率与启动时间平衡;启用HTTP/2或QUIC减少TCP连接开销;使用边缘合并回源或长缓存策略减少回源QPS;预热热点切片。
答:立即启用回源限流或Origin Shield,临时延长分片及清单文件缓存时间,使用CDN的动态加速策略或降级为静态播放,必要时回滚DNS至旧版本或切换到备用CDN,同时排查根因(缓存未命中策略、签名过期等)。