阿里CDN技术揭秘
- 5. 阿⾥里巴巴⾃自⾝身⾯面对的技术挑战
• 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
- 13. 实时调度系统:CMOS
• 数据化的调度!
• 流量完全可控,降低了抖动造成的带宽成本!
• LDNS级别、节点级别的流量预测,流量峰值到来前提前
应对!
• 精确、准实时的流量调度!
• 平均误差⼩小于15%,精度可以到5M级别!
• 单个Local DNS级别的调度!
• 5分钟级别的准实时!
• 调度质量、准确度的提升,直接影响着⽤用户体验!
• ⾃自动化的调度!
• 只要描述调度的场景,设定约束条件,⾃自动计算,⽣生成适
应的策略,更新pharos
13
- 15. 调度准确性的重要基础:IP地址库
• 数据采集,多个数据源!
• 数据运算与评估(加权投票、评估体系)!
• 对各个数据源的数据质量,设置不同权重,进⾏行投票!
• 权重的设置,是根据数据源质量的评估结果进⾏行设置,质
量⾼高,权重⾼高,否则相反!
• 根据淘宝包裹地址和IP做数据校验!
• 根据上次的结果进⾏行迭代
15
- 16. 阿⾥里CDN节点系统:内部架构图
• 关键组件!
• LVS做四层负载均衡!
• Tengine做七层负��均衡!
• 安全!
• 业务逻辑处理!
• Swift做HTTP缓存!
• ⾼高性能cache!
• 磁盘(SSD/SATA)
16
- 17. 四层负载均衡:LVS
• DR模式!
• IN的流量经过LVS,OUT的不经过!
• 负载均衡算法采⽤用wrr!
• 双LVS做Active-Active互备,中间有⼼心跳监测
17
- 18. 七层负载均衡:Tengine
• 阿⾥里基于Nginx开发的⾼高性能HTTP服务器!
• 已经开源于:http://tengine.taobao.org!
• ⼀一致性hash(consistent hashing)!
• 提⾼高命中率!
• 降低抖动!
• 主动健康检查!
• SPDY v3⽀支持!
• SO_REUSEPORT⽀支持!
• 提⾼高worker进程之间的均衡性!
• 降低CPU使⽤用!
• 热点对象发现
18
- 19. 阿⾥里HTTP缓存服务器:Swift
• 基础功能!
• HTTP/1.1协议、proxy功能!
• 内存缓存、磁盘存储!
• HTTPS协议关键特性的⽀支持!
• 业务功能!
• 精确purge/dir purge/正则purge!
• 鉴权X-Referer-Acl!
• ESI+gzip!
• 运维和配置相关功能!
• 按照域名配置的功能!
• if、变量⽀支持!
• 磁盘容错。磁盘为只读不再进⾏行写操作;磁盘不可读将磁盘摘掉!
• 丰富的统计信息19
- 21. Swift性能优化点
• 多线程事件驱动⺴⽹网络模型!
• 减⼩小线程间上下⽂文切换!
• 内存命中,⼀一个请求只需要⼀一个线程来处理!
• 消除在万兆⺴⽹网卡上⺴⽹网络处理的瓶颈!
• 304的请求没有Disk I/O!
• 使⽤用trie树实现快速匹配,减少ACL字符串匹配!
• 使⽤用完美hash计算header id,实现批量拷⻉贝、删除响应头!
• 使⽤用libaio(Linux内核AIO)优化IO操作!
• ⼤大⽂文件分⽚片不同⽚片可以分到所有的磁盘上,可以按⽚片做热点!
• 七层负载均衡、热点cache!
• 分级存储和热点迁移
21
- 22. Swift的⽂文件存储系统
• TCOSS(Taobao Cyclic Object Storage System)!
• 基于Squid的COSS系统做的定制开发!
• ⽀支持裸盘热拔插!
• COSS对象访问导致平均2.13次I/O访问!
• TCOSS对象访问导致平均1次IO访
22
- 25. 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%(优化降低)
- 26. TCP协议栈优化
• 改进措施!
• 基于时间序的丢包发现机制!
• 主动的丢包发现机制!
• ⾃自适应的初始窗⼝口!
• 更激进的拥塞避免算法!
• 更⼩小的连接超时时间
26
- 29. ⻚页⾯面优化
• Trim:去除⻚页⾯面的空格、回⻋车换⾏行、TAB、注释等,以减少⻚页
⾯面的⼤大⼩小!
• 智能gzip:某些⽤用户的浏览器实际⽀支持gzip但是却被防⽕火墙或
者proxy给改掉。智能gzip功能会对这个过程进⾏行测试,从⽽而
允许gzip,减少⽤用户传输内容的⼤大⼩小!
• SDCH:压缩算法优化,降低传输⼤大⼩小!
• Combo:组合多个JavaScript/CSS⽂文件成⼀一个请求,从⽽而减
少请求数⺫⽬目
29
- 36. 可运维性改进
• 海量域名管理!
• Tengine不再依赖配置⽂文件!
• HTTP接⼝口去configserver拿域名对应的配置!
• lazy更新,只记录访问过的!
• 有cache时间!
• 失效接⼝口!
• 不需要reload
36
- 39. 我们在招聘!
• ⼀一流的技术环境,⼀一流的技术挑战!
• 招聘职位!
• 资深CDN系统开发⼯工程师(C/C++)!
• 资深Web服务器开发⼯工程师(C/C++)!
• 资深Java开发⼯工程师!
• 欢迎发送简历到!
• 邮件:shudu@taobao.com!
• 新浪微博:@淘叔度!
• 来往:叔度
39