Skip to content

实现技术栈

  • 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 后台管理系统功能

  1. 刷新 CDN
    • 用户输入多条 URL,工具异步逐一移除缓存服务器的内存、文件缓存,进度反馈,历史明细
  2. 域名管理
    • 接入域名
    • 域名配置
    • SSL 配置,免费、用户自定义上传
  3. 统计分析
    • 错误日志
    • 访问量
    • IP
    • 状态码
    • top
    • 命中率
  4. 日志管理
    • 短期内日志查询
    • 日志归档,批量下载
  5. 访问管理
    • URL、QueryString、header、response 改写
    • IP 白名单
    • 限速

缓存逻辑

网页加速的小文件走边缘节点,大文件走中心节点,点播加速的 热门资源走边缘节点,冷门资源走中心节点,大文件下载加速默认走中心节点这种