UpYun CDN


INTRO









2013.08.25

Numbers


全国 53 个节点 / 200 多台服务器
平均每节点承载 300m+ 带宽 / 大节点承载 1g+ 带宽

200+ 个 Nginx / 平均每个 Nginx 承载 100m+ 带宽 / 1800+ qps

Softwares


Nginx

Apache Traffic Server / Squid

Development

Nginx/ 

防盗链
流量统计

一致性哈希
缓存调度
防攻击

外围功能:

缓存刷新
日志分析


防盗链模块

问题:

域名太多 (2w+)
防盗链规则复杂、数量多

把规则写入 nginx.conf 不现实

1. 数量庞大
2. 需 -s reload 重启

解决方案:

动态防盗链规则引擎

流量统计模块

问题:
53个地方节点 / 200多台服务器
以1800/qps计算
每秒产生40多万条访问记录,接近200MB数据

如何才能实时按空间计算流量?

解决方案:
利用前端CDN节点服务器进行初步计算、汇总
每间隔分钟上报数据中心进行合并输出

数据量缩小到之前的千分之一

一致性哈希

问题:

Nginx upstream 负载均衡随机性
因此降低缓存命中率
且浪费存储空间

解决方案:

upstream 使用一致性哈希算法

注意事项:
节点失效的处理
缓存刷新请求的特殊处理

缓存调度

问题:

如何提高小文件的读写性能?
区分大小文件 / 区分冷热文件

解决方案:

高效率的调度算法
MRU+LRU+rbtree
Nginx 上存有200万条热门记录
可把SSD磁盘完全消化

防攻击模块


跟缓存调度模块算法一样,
但是把超过正常阀值的记录做 444 禁止访问处理


另有访问频率控制模块,
可自定义计算器算法,可把访问量控制在一个稳定的阀值内

Additional


  1. 缓存刷新系统
    (多层加速架构,刷新任务量庞大)

  2. 访问统计 (Hadoop)

  3. 访问日志
    (主要是按空间/时间对 CDN 节点的日志文件进行合并和切分)

  4. 镜像 CDN 系统

  5. CDN 文件处理(缩略图/音频压缩)

  6. CDN DDoS 防护

Future


  • 运维自动化
    • 节点服务标准化
    • 软件标准/中心化
    • 监控自动化
    • 灰度更新

UpYun

By oneoo huang

UpYun

CDN intro

  • 1,095