SlideShare a Scribd company logo
构建⾼高效、安全的 CDN 
——阿⾥里 CDN 核⼼心技术揭秘 
! 
阿⾥里云-核⼼心系统部 
朱照远(叔度)
⼤大纲 
• 总���! 
• 性能优化! 
• 安全防御! 
• 展望
3 
总览
关于阿⾥里巴巴 
4
阿⾥里巴巴⾃自⾝身⾯面对的技术挑战 
• 2012年淘宝、天猫的交易额为11600亿元⼈人民币! 
• 超过Amazon与eBay之和! 
• 三个⺴⽹网站流量在全球排名前100(Alexa统计)! 
• taobao.com(#9) tmall.com(#18) alibaba.com(#68)! 
• 2013年双11⼤大促活动的⼀一些数据! 
• 6分钟成交10亿! 
• 当天总销售额350.19亿,其中⼿手机淘宝⽀支付53.5亿! 
• 成交总笔数1.71亿! 
• 全天独⽴立访客4.02亿⼈人 
5
阿⾥里CDN概况 
• 全球20⼏几个国家200多个节点! 
• 6Tbps服务能⼒力储备! 
• 1机柜单节点40Gbps服务能⼒力,20万QPS! 
• 2013年双11峰值流量3.4Tbps! 
• 处于业界技术前沿的开源技术研究及开发! 
• 从淘宝CDN到阿⾥里云CDN 
6
阿⾥里云CDN 
• 特点! 
• 稳定快速! 
• 安全防护! 
• 简单易⽤用! 
• 节约成本 
7
阿⾥里CDN⼤大图 
8
阿⾥里CDN组件分层 
9
10 
性能优化
阿⾥里CDN的⼤大脑:全局流量调度 
11
DNS服务器:Pharos 
• ⾃自主研发的调度系统,可控性,协议扩展性都更好,也省下 
了采购商⽤用设备的成本! 
• 单机⾼高性能,⽀支持百万级别的域名! 
• ⽀支持多级的策略调度,节点故障不会造成⽤用户的不可⽤用! 
• ⽀支持EDNS扩展协议! 
• 多系统联动,与安全防御系统,刷新系统,内容管理系统联 
动! 
• Portal,API,tcheck等多种管理⽅方式 
12
实时调度系统:CMOS 
• 数据化的调度! 
• 流量完全可控,降低了抖动造成的带宽成本! 
• LDNS级别、节点级别的流量预测,流量峰值到来前提前 
应对! 
• 精确、准实时的流量调度! 
• 平均误差⼩小于15%,精度可以到5M级别! 
• 单个Local DNS级别的调度! 
• 5分钟级别的准实时! 
• 调度质量、准确度的提升,直接影响着⽤用户体验! 
• ⾃自动化的调度! 
• 只要描述调度的场景,设定约束条件,⾃自动计算,⽣生成适 
应的策略,更新pharos 
13
Pharos+CMOS架构 
14
调度准确性的重要基础:IP地址库 
• 数据采集,多个数据源! 
• 数据运算与评估(加权投票、评估体系)! 
• 对各个数据源的数据质量,设置不同权重,进⾏行投票! 
• 权重的设置,是根据数据源质量的评估结果进⾏行设置,质 
量⾼高,权重⾼高,否则相反! 
• 根据淘宝包裹地址和IP做数据校验! 
• 根据上次的结果进⾏行迭代 
15
阿⾥里CDN节点系统:内部架构图 
• 关键组件! 
• LVS做四层负载均衡! 
• Tengine做七层负载均衡! 
• 安全! 
• 业务逻辑处理! 
• Swift做HTTP缓存! 
• ⾼高性能cache! 
• 磁盘(SSD/SATA) 
16
四层负载均衡:LVS 
• DR模式! 
• IN的流量经过LVS,OUT的不经过! 
• 负载均衡算法采⽤用wrr! 
• 双LVS做Active-Active互备,中间有⼼心跳监测 
17
七层负载均衡:Tengine 
• 阿⾥里基于Nginx开发的⾼高性能HTTP服务器! 
• 已经开源于:http://tengine.taobao.org! 
• ⼀一致性hash(consistent hashing)! 
• 提⾼高命中率! 
• 降低抖动! 
• 主动健康检查! 
• SPDY v3⽀支持! 
• SO_REUSEPORT⽀支持! 
• 提⾼高worker进程之间的均衡性! 
• 降低CPU使⽤用! 
• 热点对象发现 
18
阿⾥里HTTP缓存服务器:Swift 
• 基础功能! 
• HTTP/1.1协议、proxy功能! 
• 内存缓存、磁盘存储! 
• HTTPS协议关键特性的⽀支持! 
• 业务功能! 
• 精确purge/dir purge/正则purge! 
• 鉴权X-Referer-Acl! 
• ESI+gzip! 
• 运维和配置相关功能! 
• 按照域名配置的功能! 
• if、变量⽀支持! 
• 磁盘容错。磁盘为只读不再进⾏行写操作;磁盘不可读将磁盘摘掉! 
• 丰富的统计信息19
Swift总体架构图 
• 核⼼心组件! 
• HTTP处理引擎! 
• 回源! 
• 存储! 
• 索引! 
• 内容管理⼦子系统 
20
Swift性能优化点 
• 多线程事件驱动⺴⽹网络模型! 
• 减⼩小线程间上下⽂文切换! 
• 内存命中,⼀一个请求只需要⼀一个线程来处理! 
• 消除在万兆⺴⽹网卡上⺴⽹网络处理的瓶颈! 
• 304的请求没有Disk I/O! 
• 使⽤用trie树实现快速匹配,减少ACL字符串匹配! 
• 使⽤用完美hash计算header id,实现批量拷⻉贝、删除响应头! 
• 使⽤用libaio(Linux内核AIO)优化IO操作! 
• ⼤大⽂文件分⽚片不同⽚片可以分到所有的磁盘上,可以按⽚片做热点! 
• 七层负载均衡、热点cache! 
• 分级存储和热点迁移 
21
Swift的⽂文件存储系统 
• TCOSS(Taobao Cyclic Object Storage System)! 
• 基于Squid的COSS系统做的定制开发! 
• ⽀支持裸盘热拔插! 
• COSS对象访问导致平均2.13次I/O访问! 
• TCOSS对象访问导致平均1次IO访 
22
TCOSS存储系统 
• 没有open和close,尽量少的读写IO 
23 
图1 磁盘没满写数据图2 磁盘写满之后写数据 
图3 从磁盘读数据
Swift热点迁移算法 
• 三层存储! 
• 内存! 
• SSD! 
• SATA! 
• 根据对象热度决定到哪层 
24
Tengine+Swift性能优化 
• 集群的⼤大⽂文件分⽚片缓存功能! 
• 基于HTTP分段压缩算法! 
• 利⽤用SPDY的多路复⽤用技术! 
• 减少三路握⼿手和慢启动的影响! 
• 减少对本地端⼝口的占⽤用 
25 
HTTP SPDY 对⽐比 
QPS 33.5K 33.4K 基本相同 
User CPU 15.00 12.83 14.47%(优化降低) 
Sys CPU 16.20 12.77 21.17%(优化降低) 
Sirq CPU 10.04 8.48 15.53%(优化降低) 
Total CPU 41.25 34.10 17.33%(优化降低)
TCP协议栈优化 
• 改进措施! 
• 基于时间序的丢包发现机制! 
• 主动的丢包发现机制! 
• ⾃自适应的初始窗⼝口! 
• 更激进的拥塞避免算法! 
• 更⼩小的连接超时时间 
26
TCP协议栈优化效果:抗抖动 
27
TCP优化效果:减少连接时间 
28
⻚页⾯面优化 
• Trim:去除⻚页⾯面的空格、回⻋车换⾏行、TAB、注释等,以减少⻚页 
⾯面的⼤大⼩小! 
• 智能gzip:某些⽤用户的浏览器实际⽀支持gzip但是却被防⽕火墙或 
者proxy给改掉。智能gzip功能会对这个过程进⾏行测试,从⽽而 
允许gzip,减少⽤用户传输内容的⼤大⼩小! 
• SDCH:压缩算法优化,降低传输⼤大⼩小! 
• Combo:组合多个JavaScript/CSS⽂文件成⼀一个请求,从⽽而减 
少请求数⺫⽬目 
29
30 
安全防御
阿⾥里四层防攻击系统:AliGuard 
• 基于DPDK之上的⺴⽹网络框架! 
• ⽀支持集群部署! 
• 流量牵引! 
• 四层DDoS攻击防护! 
• DNS攻击防护 
31
阿⾥里七层防攻击:TMD系统架构 
32
TMD⼀一些关键技术 
• 模块化,如防CC模块、hotpatch模块等! 
• socketpair 实现多进程间配置更新通知! 
• 共享内存hash表实现⿊黑⽩白名单! 
• 漏桶,令牌桶算法实现QPS限流! 
• LRU,红⿊黑树实现CC统计算法! 
• 多线程,libev实现⺴⽹网络通信框架 
33
TMD防CC攻击的⼀一个例⼦子 
• 原⻚页⾯面60KB! 
• 攻击9万QPS! 
• 计算带宽41Gbps! 
• 实际节省200倍 
34
七层防攻击:Web应⽤用防⽕火墙 
• 基于Tengine的模块(WAF)! 
• ⾼高效的规则匹配引擎! 
• 防⽌止攻击! 
• SQL注⼊入! 
• XSS! 
• Web Shell! 
• … 
35
可运维性改进 
• 海量域名管理! 
• Tengine不再依赖配置⽂文件! 
• HTTP接⼝口去configserver拿域名对应的配置! 
• lazy更新,只记录访问过的! 
• 有cache时间! 
• 失效接⼝口! 
• 不需要reload 
36
37 
展望
阿⾥里CDN持续优化 
• 核⼼心应⽤用软件开发! 
• 节点架构优化! 
• 调度系统的精细化调度! 
• 运维⼯工具平台化、系统化! 
• 总⺫⽬目标! 
• 给阿⾥里云⽤用户提供稳定、安全、易⽤用、低成本的CDN服务 
38
我们在招聘! 
• ⼀一流的技术环境,⼀一流的技术挑战! 
• 招聘职位! 
• 资深CDN系统开发⼯工程师(C/C++)! 
• 资深Web服务器开发⼯工程师(C/C++)! 
• 资深Java开发⼯工程师! 
• 欢迎发送简历到! 
• 邮件:shudu@taobao.com! 
• 新浪微博:@淘叔度! 
• 来往:叔度 
39
阿里CDN技术揭秘

More Related Content

阿里CDN技术揭秘