揭祕阿里CDN核心技術(http://wenku.baidu.com/view/ffc63474b4daa58da1114a45.html?re=view)

NO IMAGE

中國專業CDN行業近年來呈現了迅猛增長的態勢。根據國內諮詢機構艾瑞的統計,從2006年至2012年,中國第三方CDN市場營收規模增長率均保持在30%以上。艾瑞預測,未來幾年CDN市場將繼續保持40%以上的高增長。

 

今天將會給大家揭祕阿里CDN核心技術!圖片來自阿里雲-核心系統部 朱照遠。

構建高效、安全的CDN,阿里CDN核心技術揭祕
阿里雲-核心系統部 朱照遠(叔度)


大綱:總覽,效能優化,安全防禦,展望
 


阿里自身面對的技術挑戰
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億。
 


阿里CDN概況:
全球20幾個國家200多個節點
6Tbps服務能力儲備
1機櫃單節點40Gbps服務能力,20萬QPS
2013年雙11峰值流量3.4Tbps
處於業界技術前沿的開源技術研究及開發
從淘寶CDN到阿里雲CDN
 


阿里雲CDN特點:
穩定快速
安全防護
簡單易用
節約成本
 


阿里CDN大圖
 


阿里雲CDN元件分層:
服務層(基礎服務-靜態檔案分發,大檔案分發,流媒體分發,應用加速;輔助服務-檔案上傳,內容重新整理,日誌分析)
應用層(全域性負載均衡-Pharos,CMOS;本地負載均衡-LVS,Tengine;快取-Swift,監控-Alimonitor,Tsar,Alibench,Kunlunjing;配置管理-Salt,Puppet)
系統層(RHEL,CentOS)
裝置層(伺服器,路由器,交換機,防火牆,其他專用裝置)
 


效能優化
 


阿里CDN大腦:全域性流量排程
LDNS,GSLB,CMOS,策略
 


DNS伺服器:Pharos
自主研發的排程系統,可控性,協議擴充套件性都更好,節省採購商用裝置成本
單機高效能,支援百萬級別的域名
支援多級的策略排程,節點故障不會造成使用者的不可用
支援EDNS擴充套件協議
多系統聯動,與安全防禦系統,重新整理系統,內容管理系統聯動
Portal,API,tcheck等多動管理方式
 


實時排程系統CMOS
資料化的排程:流量完全可控,降低抖動造成的頻寬成本;LDNS級別、節點級別的流量預測,流量峰值到來前提前應對
精確、準實時的流量排程:平均誤差小於15%,精度可到5M級別;單個Local DNS級別的排程;5分鐘級的準實時
排程質量、準確度的提升,直接影響著使用者體驗
自動化的排程:只要描述高度場景,設定約束條件,自動計算,生成適應的策略,更新Pharos
 


Pharos CMOS架構

 


排程準確性的重要基出:IP地址庫
資料採集,多個資料來源
資料運算與評估(加權投票、評估體系):對各個資料來源的資料質量,設定不同的權重,進行投票;權重的設定,是根據資料來源質量的評估結果進行設定,質量高,權重高,否則相反;根據淘寶包裹地址和IP做資料校驗;根據上次的結果進行迭代

 


阿里CDN節點系統:內部架構

關鍵元件:
LVS做四層負載均衡
Tengine做七層負載均衡(安全、業務邏輯處理)
Swift做HTTP快取(高效能CACHE,磁碟-SSD/SATA)
 


四層負載均衡:LVS
DR模式(IN的流量經過LVS,OUT的不經過
負載均衡演算法採用wrr
雙LVS做Active-Active互備,中間有心跳監測
 


七層負載均衡:Tengine
阿里基於Nginx開發的高效能HTTP伺服器(已經開源於:http://tengine.taobao.org)
一致性Hash(提高命中率、降低抖動)
主動健康檢查
SPDY V3支援
SO_REUSEPORT支援(提高worker程序之間的均衡性、降低CPU使用)
熱點物件發現
 


阿里HTTP快取伺服器:Swift
基礎功能(Http/1.1協議、proxy功能;記憶體快取、磁碟儲存;HTTPS協議關鍵特性支援)
業務功能(精確purge/dir purge/正則purge;鑑權X-Referer-Acl;ESI gzip)
運維和配置相關功能(按照域名配置的功能;if、變數支援;磁碟容錯:磁碟為只讀不再進行寫操作及磁碟不可讀將磁碟摘掉;豐富的統計資訊)

 


Swift總體架構圖
核心元件(HTTP處理引擎;回源;儲存;索引;內容管理子系統)

 


Swift效能優化點
多執行緒事件驅動網路模型
減小執行緒間上下文切換
記憶體命中,一個請求只需要一個執行緒來處理
消除在萬兆網絡卡上網路處理的瓶頸
304的請求沒有DISK I/O
使用trie樹實現快速匹配,減少ACL字串匹配
使用完美hash計算head id,實現批量拷貝、刪除響應頭
使用libaio(Linux核心AIO)優化IO操作
大檔案分片不同片可以分到所有的磁碟上,可以按片做熱點
七層負載均衡、熱點cache
分級儲存和熱點遷移
 


Swift的檔案儲存系統
TCOSS(taobao Cyclic Object Storage System)
基於Squid的COSS系統做的定製開發
支援裸盤熱拔插
COSS物件訪問導致平均2.13次IO訪問
TCOSS物件訪問導致平均1次IO訪問
 


TCOSS儲存系統
沒有open和close,儘量少的讀寫IO
 


Swift熱點遷移演算法
三層儲存(記憶體、SSD、SATA)
根據物件熱度決定到哪一層
 


Tengine Swift效能優化
叢集的大檔案分片快取功能
基於HTTP分段壓縮演算法
利用SPDY的多路複用技術(減少三路握手和慢啟動的影響、減少對本地埠的佔用)
 


TCP協議棧優化
改進措施
*基於時間序的丟包發現機制
*主動的丟包發現機制
*自適應的初始視窗
*更激進的擁塞避免演算法
*更小的連線超時時間
 


TCP協議棧優化效果:抗抖動
 


TCP優化效果:減少連線時間
 


頁面優化:
*Trim:去除頁面的空格、回車換行、TAB、註釋等,減少頁面的大小
*智慧Gzip:某些使用者的瀏覽器實際支援gzip但是卻被防火牆或者proxy給改掉。智慧gzip功能會對這個過程進行測試,從而允許gzip,減少使用者傳輸內容的大小
*SDCH:壓縮演算法優化,降低傳輸大小
*Combo:聯合多個JavaScript/CSS檔案成一個請求,從而減少請求數目
 


安全防禦
 


阿里四層防攻擊系統:AliGuard
基於DPDK之上的網路框架
支援叢集部署
流量牽引
四層DDOS攻擊防護
DNS攻擊防護
 


阿里七層防攻擊:TMD系統架構
 


TMD一些關鍵技術
模組化,如防CC模組、hotpatch模組等
socketpair實現多程序間配置更新知
共享記憶體hash表實現黑白名單
漏桶,令牌桶演算法實現QPS限流
LRU、紅黑樹實現CC統計演算法
多執行緒,libev實現網路通訊框架
 


TMD防CC攻擊的一個例子
原頁面60KB
攻擊9萬QPS
計算頻寬41Gbps
實際節省200倍
 


七層防攻擊:Web應用防火牆
基於Tengine的模組(WAF),高效的規模匹配引擎
防止攻擊(SQL隱碼攻擊、XSS、web shell、…)
 


運維性改進
海量域名管理
*Tengine不再依賴配置檔案
*HTTP介面去configserver拿域名對應的配置
*lazy更新,只記錄訪問過的
*有cache時間
*失效介面
*不需要reload
 


展望
 


阿里CDN持續優化
核心應用軟體開發
節點架構優化
排程系統的精細化排程
運維工具平臺化、系統化
總目標(給阿里雲使用者提供穩定、安全、易用、低成本的CDN服務)