Appearance
实现技术栈
- Openresty + Lua 接口及系统
- Vue UI 管理界面
- Kafka 日志管道
- Flink 实时统计,历史计算
- ClickHouse 日志存储、日志查询
- Golang 编写工具、内容分发,边缘节点
内容预取
分层缓存
- 用户域名请求 DNS 服务器,DNS 服务器解析域名,指向全局负载均衡服务器上,全局负载均衡服务器将获取离用户最近的缓存服务器, 返回 320 跳转,重定向离用户最近的缓存服务器。
- 用户向缓存服务器发起请求
- 如果缓存服务器有用户所需的缓存,则返回用户所需的内容
- 命中服务器内存缓存直接返回,命中本地文件缓存,将文件缓存缓存至内存中,淘汰最近最少使用的缓存
- 如果缓存服务器没有用户所需要的缓存
- 层层向上一级缓存服务器请求内容,直到追溯到
源服务器
将内容拉回本地
- 层层向上一级缓存服务器请求内容,直到追溯到
- 如果缓存服务器有用户所需的缓存,则返回用户所需的内容
实时缓存清除
- API 将
一定规则(正则)的URL
提交到缓存服务器上,缓存服务器匹配 URL 进行删除,删除内存缓存、以及本地文件缓存 - 删除
ATS缓存
本机 WAF
- SQL 注入,根据 SQL 的特证,判断
- 白名单,自由设置 IP 白名单,URL 白名单
- 恶意拦截,cc 防御,对于频繁请求的 IP,进行限速,验证
- 所有的拦截和 WAF 日志,写入 kafka,供实时统计分析
保护 Web 应用
- 免费颁发 SSL 证书,自动申请,配置,Let's Encrypt
- 动态配置 SSL 证书,用户上传自己的证书
请求改写
- 请求头、响应头、URL 及参数改写
- 全局负载均衡服务器负责读取用户设置的配置,对配置内容进行修改,如添加 header、删除 header、修改 header 等
- 对 URL 重新、重定向等,增加删除 URL 参数
数据和日志采集
https://patents.google.com/patent/CN107332719A/zh
- 错误日志采集
- 统一写入 kakfa,流式(Flink)实时统计分析
- 用户请求日志
- 按域名归档、用户请求日志下载(分时)
- 统一写入 kakfa,流式(Flink)实时统计分析
CDN 后台管理系统功能
- 刷新 CDN
- 用户输入多条 URL,工具异步逐一移除缓存服务器的内存、文件缓存,进度反馈,历史明细
- 域名管理
- 接入域名
- 域名配置
- SSL 配置,免费、用户自定义上传
- 统计分析
- 错误日志
- 访问量
- IP
- 状态码
- top
- 命中率
- 日志管理
- 短期内日志查询
- 日志归档,批量下载
- 访问管理
- URL、QueryString、header、response 改写
- IP 白名单
- 限速
缓存逻辑
网页加速的小文件走边缘节点,大文件走中心节点,点播加速的 热门资源走边缘节点,冷门资源走中心节点,大文件下载加速默认走中心节点这种