中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

 首頁(yè) > 新聞 > 專家觀點(diǎn) >

姚偉斌:阿里云CDN技術(shù)演變之路

2015-03-02 11:29:53   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  2015年1月31日,阿里云課堂第六期在北京開課,“大型互聯(lián)網(wǎng)應(yīng)用架構(gòu)之存儲(chǔ)與分發(fā)”主題分享在眾多朋友的期待下精彩上演,現(xiàn)場(chǎng)觀眾再次爆滿。本次活動(dòng)中,姚偉斌(花名:文景)和李文兆兩位講師為大家獻(xiàn)上了精彩演講,并在OpenSpace環(huán)節(jié)與觀眾展開討論,積極互動(dòng)。應(yīng)廣大用戶要求,我們將云課堂講師現(xiàn)場(chǎng)分享內(nèi)容全文整理出來(lái),供大家參考。阿里云課堂會(huì)繼續(xù)在全國(guó)各地陸續(xù)開課,歡迎大家繼續(xù)支持!

  以下為講師姚偉斌(花名:文景)的分享內(nèi)容:

  我前面會(huì)講一下CDN的用途,也會(huì)講一些CDN產(chǎn)品,在后面我會(huì)講CDN的架構(gòu)和設(shè)計(jì)。

  一、CDN的用途

  目前,CDN主要是分幾個(gè)方向發(fā)展,比如靜態(tài)內(nèi)容的分發(fā)、視頻流媒體的分發(fā)、動(dòng)態(tài)資源的加速、源站保護(hù)等,其中最基本的是用來(lái)做靜態(tài)內(nèi)容分發(fā)。阿里CDN現(xiàn)在最大的用途是用作淘寶所有圖片的分發(fā)。視頻流媒體的分發(fā)功能使用,發(fā)展速度也非常之快。CDN一些特色功能的應(yīng)用,如動(dòng)態(tài)資源的加速,還有SSL的接入、SPDY的接入等。CDN還有一個(gè)功能是源站保護(hù),它可以通過(guò)各種安全防御,實(shí)現(xiàn)源站流量的減少。

  二、CDN的加速原理

  CDN最大的特色在于加速。那么,CDN是如何實(shí)現(xiàn)各種“加速”,發(fā)揮“加速”功用呢?如下圖所示,CDN有很多節(jié)點(diǎn),通過(guò)域名實(shí)現(xiàn)就近接入。當(dāng)用戶發(fā)起一個(gè)請(qǐng)求后,CDN會(huì)回源取,然后把文件就近緩存在那個(gè)節(jié)點(diǎn)的服務(wù)器上。假設(shè)北京的用戶到北京節(jié)點(diǎn)只需4毫秒,后面寫了一個(gè)90%的請(qǐng)求其實(shí)都直接命中到了服務(wù)器,那么還有10%的流量回到了二級(jí)cache節(jié)點(diǎn)。而二級(jí)cache節(jié)點(diǎn)也是同樣的緩存服務(wù)器,假設(shè)它的命中率也是90%,那么最終只有1%的流量到源站。如果純粹回到源站可能需88毫秒,而通過(guò)訪問(wèn)CDN就會(huì)大大縮短時(shí)間,甚至4毫秒就可以讓用戶拿到一個(gè)文件。這是CDN實(shí)現(xiàn)加速的基本原理。

  三、阿里CDN分布

  CDN加速的載體在于節(jié)點(diǎn),阿里CDN節(jié)點(diǎn)分布可謂星羅棋布,如下圖所示。阿里CDN服務(wù)器原先主要用于淘寶圖片的分發(fā),在全國(guó)32。ㄊ、區(qū))均有服務(wù)器,有200多個(gè)節(jié)點(diǎn),在一線城市運(yùn)營(yíng)商均有機(jī)房,甚至在外國(guó)也有30余個(gè)節(jié)點(diǎn)分布,以提供國(guó)外用戶的加速服務(wù)。

  四、阿里CDN應(yīng)用

  這兩天,我去拜訪了一些客戶。他們把我們的CDN與業(yè)界其他一些比較有名的商業(yè)CDN進(jìn)行比較統(tǒng)計(jì),得出的結(jié)論是:我們CDN的平均延遲大概能有10%到20%的下降。

  阿里從2008年開始,就著手自建CDN。不知不覺我們已成為世界上最大的圖片CDN。這可能跟中國(guó)的網(wǎng)上購(gòu)物習(xí)慣有關(guān)--  一個(gè)商品需要幾十張圖片進(jìn)行介紹。這使得我們圖片CDN可能跟某些視頻CDN流量有的一拼。從2014年3月起,阿里CDN正式開啟商業(yè)化運(yùn)營(yíng)模式。商業(yè)化運(yùn)營(yíng)對(duì)阿里云CDN的需求,跟圖片CDN區(qū)別是非常大的,這對(duì)于我們有很多的挑戰(zhàn)。原來(lái)的圖片CDN,對(duì)于我們來(lái)說(shuō),主要是每年大促期間帶來(lái)的壓力,至少到2012年,我們CDN唯一任務(wù)就是為了“雙十一”。那時(shí),我們會(huì)做很多預(yù)案以應(yīng)對(duì)瘋狂的流量。下面這一張是CDN的流量圖,就可以看到我們2009到2012年,我們整個(gè)水位是非常滿的。這對(duì)于我們CDN來(lái)說(shuō),主要的挑戰(zhàn)在于:做到良好的均衡性。比如這個(gè)節(jié)點(diǎn)要把流量定量切到另外一個(gè)節(jié)點(diǎn),我們做了很多的工作。另外,我們?cè)诠?jié)點(diǎn)內(nèi)對(duì)軟件穩(wěn)定性和性能等方面也做很多優(yōu)化。比如說(shuō)現(xiàn)在一個(gè)節(jié)點(diǎn)能服務(wù)40G,但是有時(shí)候節(jié)點(diǎn)面對(duì)突然涌過(guò)來(lái)的大流量時(shí),你甚至來(lái)不及調(diào)度。這就要求你的軟件至少需要扛過(guò)大于40G的能力。每年我們會(huì)做5次以上的壓測(cè)。在跑滿40G的情況下面,連續(xù)跑一個(gè)星期,檢驗(yàn)以保障我們CDN節(jié)點(diǎn)不會(huì)掛掉,能夠繼續(xù)提供比較可靠的服務(wù)。這對(duì)于軟件的可靠性方面,壓力也是非常大的。

  從去年開始,我們整個(gè)團(tuán)隊(duì)的開發(fā)方向就轉(zhuǎn)向做對(duì)外服務(wù)。從2013年開始,我們CDN的服務(wù)能力已經(jīng)遠(yuǎn)超我們自用的能力。就像我們一些PE所說(shuō),我們CDN團(tuán)隊(duì)基本上可以坐在那里喝著茶看著雙十一的流量就可以了。

  現(xiàn)在阿里CDN的目標(biāo)是:做到能夠快速、安全、易用,能幫用戶減少成本。

  下面是CDN的一些關(guān)鍵組件:

  • IP庫(kù)
  • 調(diào)度系統(tǒng)
  • 緩存系統(tǒng)
  • 刷新系統(tǒng)
  • 日志系統(tǒng)

  CDN需要知道用戶從哪里來(lái),才能調(diào)度, IP數(shù)據(jù)庫(kù)我們已經(jīng)做了好幾年。如果你們想去查一下某個(gè)IP是從哪里來(lái)的,ip.taobao.com這個(gè)外部的接口可以用。為了提高準(zhǔn)確性,我們還會(huì)拿淘寶的收貨IP做對(duì)比,查是否這個(gè)IP是屬于這個(gè)地區(qū)的。現(xiàn)在在市一級(jí)的準(zhǔn)確率能做到96%左右。ECS用戶應(yīng)該可以免費(fèi)調(diào)用我們IP庫(kù)的接口。

  現(xiàn)在CDN有兩個(gè)維度可以進(jìn)行調(diào)度。一是地域的概念,比如說(shuō)你去瀏覽器里面輸一個(gè)www.taobao.com,域名查詢請(qǐng)求會(huì)提交到運(yùn)營(yíng)商本地的DNS服務(wù)器,DNS服務(wù)器有一個(gè)迭代查詢的過(guò)程,最后到了調(diào)度中心。調(diào)度服務(wù)器會(huì)根據(jù)源IP。比如你是北京電信的DNS的IP,就將你調(diào)度到北京電信的機(jī)房去。二是CDN是有高可用性的,調(diào)度中心在不停的監(jiān)控所有節(jié)點(diǎn)的健康狀況,一旦發(fā)現(xiàn)這個(gè)節(jié)點(diǎn)有問(wèn)題,會(huì)將用戶切換到另外一個(gè)節(jié)點(diǎn)。

  上圖是CDN節(jié)點(diǎn)的緩存系統(tǒng),LVS是4層的代理,Tengine主要進(jìn)行并進(jìn)行負(fù)載均衡,swift是一個(gè)高效的緩存服務(wù)器,作靜態(tài)文件的緩存用。Tengine和Swift進(jìn)行一致性hash,可以提高命中率。其他還有一些控制機(jī)器,做刷新和配置這些功能。

  上圖是Swift的緩存架構(gòu)淘汰邏輯,F(xiàn)在我們能做到內(nèi)存、SSD、SATA三級(jí)緩存、可以適應(yīng)各種尺寸的文件。我們的服務(wù)器既能做圖片的緩存,也能做視頻大文件緩存,熱對(duì)象會(huì)自動(dòng)上升到內(nèi)存,冷對(duì)象會(huì)被淘汰到SATA。為了提高IO性能,我們沒有使用文件系統(tǒng),直接使用整個(gè)裸磁盤。在裸盤上,我們實(shí)現(xiàn)了Squid的COSS文件系統(tǒng)。COSS文件系統(tǒng)中都是一個(gè)Stripe進(jìn)行IO寫操作。我們使用8M一個(gè)Stripe,新來(lái)的文件就append在Stripe里面,每次都是8M的寫,這樣就可以提高IOPS。當(dāng)Stripe滿以后,寫SSD時(shí),看原有的內(nèi)容是否熱的,如果是熱點(diǎn),就放到內(nèi)存。如果是冷的,就淘汰到內(nèi)存。

  去年阿里CDN開始對(duì)外應(yīng)用以后,用戶增加非常迅速。原來(lái)以配制文件的形式管理的配置系統(tǒng),已經(jīng)不能滿足業(yè)務(wù)需求。于是,我們開發(fā)了一個(gè)加載配制模塊,它是lazy的。它的局部性效果非常明顯,雖然我們線上有幾萬(wàn)個(gè)域名,但在一個(gè)節(jié)點(diǎn)上,我們發(fā)現(xiàn)也就一兩千個(gè)域名在服務(wù),所以按需加載的方式較好。另外我們也做了很多優(yōu)化,10萬(wàn)域名只占500兆內(nèi)存,非常高效。同時(shí),我們也能做到全網(wǎng)分鐘級(jí)別配置分發(fā),總體來(lái)說(shuō),我們的配制可以做到高可靠、可運(yùn)維。

  有時(shí),CDN上的緩存文件更新了,我要把它刪掉。刷新需要全網(wǎng)分發(fā),而全網(wǎng)的每一臺(tái)機(jī)器,每一個(gè)cache節(jié)點(diǎn)全部要刷,因?yàn)槲也恢牢募嬖谀睦,都是廣播的,而現(xiàn)在,我們按調(diào)度頻道來(lái)刷,就能減少一定量的刷新。另外,我們?cè)黾恿撕喜⒐δ。比如,現(xiàn)在有100個(gè)URL過(guò)來(lái)刷新,可以合并為一次提交到Cache服務(wù)器,從而減少刷新的QPS。此外,Swift支持正則和目錄刷新,只需提交一個(gè)請(qǐng)求就可以刷很多內(nèi)容,F(xiàn)在從統(tǒng)計(jì)數(shù)據(jù)上看,全球節(jié)點(diǎn)99%以上能做到1分鐘的刷新。

  目前,我們阿里內(nèi)部已經(jīng)實(shí)現(xiàn)了海量日志搜集與分析系統(tǒng)。原來(lái)我們也是用syslog來(lái)搜集日志,在40G跑滿時(shí),syslog丟包非常嚴(yán)重。特別是在對(duì)外商用以后,日志需要計(jì)費(fèi),對(duì)可靠性要求非常高,所以后來(lái)就開發(fā)了一個(gè)傳輸日志和實(shí)時(shí)分析系統(tǒng)。同時(shí),內(nèi)部也做了一些優(yōu)化,比如合并功能,多條日志合并后再發(fā)到日志服務(wù)器上,使用LZO進(jìn)行流式壓縮,最終收集到中心。現(xiàn)在我們可以做到產(chǎn)生的日志10分鐘傳到OSS上以供下載。這個(gè)速度在業(yè)界來(lái)說(shuō)是非?斓摹,F(xiàn)在,我們整個(gè)CDN的量級(jí)大概每天有幾百T的訪問(wèn)日志,最終都會(huì)導(dǎo)入到阿里云ODPS上進(jìn)行大數(shù)據(jù)分析,比如用戶行為分析。

  阿里CDN針對(duì)TCP協(xié)議棧的做了優(yōu)化,比如說(shuō)我們做了基于時(shí)間序的丟包發(fā)現(xiàn)機(jī)制,TCP的包是有序號(hào)的,我們按照序號(hào)來(lái)查看,如果發(fā)現(xiàn)高序號(hào)的TCP的ACK,但是低的沒有發(fā)過(guò)來(lái)。我們會(huì)以更快的一個(gè)重傳機(jī)制來(lái)確保我們低序丟失的包能夠快速發(fā)過(guò)來(lái)。結(jié)合自適應(yīng)的初始窗口等單邊優(yōu)化措施,最終我們將小對(duì)象的平均RT降低20%以上。

  這個(gè)功能是頁(yè)面內(nèi)容優(yōu)化,就是按照前端優(yōu)化準(zhǔn)則進(jìn)行自動(dòng)化的內(nèi)容調(diào)整。比如說(shuō)減少頁(yè)面中請(qǐng)求的數(shù)量。我們會(huì)做一些靜態(tài)資源文件合并。還有就是盡可能減少頁(yè)面大小,我們會(huì)主動(dòng)刪除頁(yè)面空白符,還有一個(gè)智能Gzip,通過(guò)主動(dòng)發(fā)起JS異步請(qǐng)求,進(jìn)行探測(cè),即使沒有Accept-Encoding頭也會(huì)主動(dòng)做壓縮。CDN這邊也在跟前端的同學(xué)一起來(lái)做,比如做一個(gè)UA的數(shù)據(jù)庫(kù),去保存每一個(gè)User Agent對(duì)應(yīng)的分辨率,不同的分辨率選擇不同尺寸的圖片。

  CDN其實(shí)不僅僅是靜態(tài)內(nèi)容的HTTP加速,還可以做TCP協(xié)議的加速。如上圖所示案例顯示,我們最近發(fā)現(xiàn)臺(tái)灣用戶訪問(wèn)淘寶頁(yè)面非常慢,特別是從國(guó)內(nèi)到國(guó)外這個(gè)鏈路是比較差的。我們?cè)谂_(tái)灣有節(jié)點(diǎn),香港有節(jié)點(diǎn),上海有節(jié)點(diǎn),臺(tái)灣到上海延時(shí)有200毫秒,臺(tái)灣到香港是20毫秒,香港到上海60毫秒。我們發(fā)現(xiàn),從臺(tái)灣、香港再回來(lái)反倒更短,所以做了CDN之間的路由優(yōu)化,對(duì)TCP連接進(jìn)行加速。這個(gè)圖最終會(huì)有很多節(jié)點(diǎn),就是一個(gè)有向圖,我們?cè)诿恳粋(gè)CDN節(jié)點(diǎn)上做相互節(jié)點(diǎn)之間的網(wǎng)絡(luò)探測(cè),檢測(cè)整個(gè)網(wǎng)絡(luò)的丟包率和延時(shí),構(gòu)建出一個(gè)有權(quán)值的表格,然后我們?nèi)ビ?jì)算最短路徑。

  流媒體這個(gè)業(yè)務(wù)跟圖片有很大的區(qū)別。圖片的文件大小只有30到50K,但是視頻的平均文件大小可能會(huì)到500K到2M。首先,流媒體對(duì)于CDN節(jié)點(diǎn)的流量沖擊會(huì)非常大,基于傳統(tǒng)的DNS調(diào)度有緩存時(shí)間,一般有5到10分鐘的延時(shí),甚至有一些節(jié)點(diǎn)都調(diào)不走。我們這邊就設(shè)計(jì)了一個(gè)中心式的,基于HTTP協(xié)議的調(diào)度方法。當(dāng)請(qǐng)求某個(gè)URL的時(shí)候,CDN根據(jù)節(jié)點(diǎn)的負(fù)載會(huì)直接返回資源或者302重定向,作精確調(diào)度。幾乎就沒有延時(shí)時(shí)間,甚至可以在每個(gè)節(jié)點(diǎn)的機(jī)器間相互調(diào)度。

  最近阿里云這邊在做無(wú)線加速的產(chǎn)品,我們現(xiàn)在使用了HTTP DNS。無(wú)線APP有自己的客戶端,HTTP DNS集成在APP SDK中,當(dāng)APP啟動(dòng)時(shí)會(huì)發(fā)起一個(gè)定期異步的請(qǐng)求,去中心請(qǐng)求域名解析,然后把IP保存下來(lái)。當(dāng)下次發(fā)起真實(shí)請(qǐng)求時(shí),可以直接去請(qǐng)求了。所以HTTP DNS可以節(jié)省域名解析的時(shí)延,也可以避免國(guó)內(nèi)的一些運(yùn)營(yíng)商作的域名劫持。

  另外一個(gè)就是做了SPDY的優(yōu)化,多路優(yōu)化有什么好處呢,一個(gè)是復(fù)用連接,減少連接數(shù),提高頁(yè)面打開的速度,就手機(jī)淘寶這邊的經(jīng)驗(yàn)來(lái)看,做SPDY鏈路復(fù)用最終是能有20%到30%加載頁(yè)面時(shí)間的降低。

  最后一個(gè)是安全功能,現(xiàn)在CDN提供了4、7層的DDoS安全防御和WAF,可以使用戶免于攻擊,并提供一站式解決方案。CDN可以提供源站保護(hù)功能,靜態(tài)資源CDN可以緩存,最終落到源站的流量都會(huì)合并,流量是非常小的,F(xiàn)在安全服務(wù)是不額外收費(fèi)的。

  這是7層攻擊的一個(gè)案例,經(jīng)常有一些用戶說(shuō),你們?cè)趺捶拦舻牧髁克阄义X,實(shí)際上防攻擊不是免費(fèi)的。這是我昨天截的圖,這是7層的攻擊,突然間針對(duì)原來(lái)那個(gè)小站有15萬(wàn)QPS的攻擊流量,它的響應(yīng)大小是15KB?梢钥吹街灰蜷_安全功能,CDN已經(jīng)擋了99%以上的攻擊,并保證它的正常服務(wù),幫用戶節(jié)省了17Gbps的流量費(fèi)用。

分享到: 收藏

專題