CDN 层(下)— OpenResty 静态缓存、灰度发布、Lua 脚本、CDN 演进
概述
Day30 深入 CDN 自建方案,覆盖 OpenResty(Nginx + LuaJIT)的静态文件缓存实现、灰度发布(金丝雀发布)、Lua 脚本在 Nginx 阶段中的应用、缓存策略对比(传统/分发/静态 CDN 架构演进对比表),以及生产环境的灰度比例分流配置。
核心内容
CDN 架构演进
| 阶段 | 架构 | 说明 |
|---|---|---|
| 阶段1 | 传统架构 | 用户直接请求后端应用 |
| 阶段2 | 分发架构 | CDN 分发 + 应用服务器 |
| 阶段3 | 静态CDN | Nginx 缓存静态文件,CDN 回源到 Nginx |
| 阶段3+ | 动静结合 | 静态文件 CDN,动态请求负载均衡(生产推荐) |
OpenResty
- = Nginx 核心 + LuaJIT + 众多 Lua 模块
- Nginx 阶段:
set_by_lua(变量设置)→rewrite_by_lua(URL 重写)→access_by_lua(访问控制)→content_by_lua(内容生成)→log_by_lua(日志记录) - 文件缓存:对静态文件设置过期时间(
expires),结合proxy_cache提高命中率
灰度发布(金丝雀发布)
- 引入分流(少量用户先跑新版本)→ 持续观察 → 全量升级
- 灰度策略:按权重、按 IP、按地域、按用户分组