又拍云架構(gòu)師黃慧攀:又拍云CDN技術(shù)探秘

11月1日到3日,由InfoQ 主辦的全球軟件開發(fā)大會(huì)(簡(jiǎn)稱QCon)在上海光大會(huì)展中心國(guó)際大酒店隆重召開,這是一次技術(shù)開發(fā)者的頂級(jí)盛宴,又拍云作為國(guó)內(nèi)最大的針對(duì)企業(yè)級(jí)的云服務(wù)平臺(tái),又拍云首席架構(gòu)師黃慧攀也受邀在會(huì)上分享《又拍云CDN技術(shù)架構(gòu)探秘》的主題。

分享過(guò)程中,黃慧攀著重介紹了又拍云的四大模塊--防盜鏈模塊,流量統(tǒng)計(jì)模塊,緩存調(diào)度模塊和防攻擊模塊。

防盜鏈模塊:防盜鏈模塊在Nginx啟動(dòng)時(shí)并沒(méi)有任何防盜鏈策略,但會(huì)到數(shù)據(jù)中心獲取一份完整的客戶域名列表,但針對(duì)某個(gè)空間域名的具體防盜鏈策略是未獲取的,而是在某個(gè)URL請(qǐng)求訪問(wèn)過(guò)來(lái)的時(shí)候觸發(fā)策略更新動(dòng)作(該次請(qǐng)求只判斷是否是合法的空間域名,如果該URL的空間域名不在客戶列表上是不允許被訪問(wèn)的),前往數(shù)據(jù)中心獲取該URL對(duì)應(yīng)空間域名的防盜鏈策略,并以自定好的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)于Nginx的共享內(nèi)存中,下次訪問(wèn)該空間的所有URL都能檢索到對(duì)應(yīng)的防盜鏈策略。也就是說(shuō)防盜鏈模塊是以按需被動(dòng)觸發(fā)、主動(dòng)更新的模式進(jìn)行操作,本地的防盜鏈策略不會(huì)跟數(shù)據(jù)中心保證嚴(yán)格一致,通常會(huì)延遲幾分鐘。因防盜鏈模塊會(huì)每間隔幾分鐘前往數(shù)據(jù)中心獲取一份防盜鏈策略更新的客戶列表,如檢測(cè)到某個(gè)空間域名的防盜鏈策略有更新,將把本地共享內(nèi)存中的對(duì)應(yīng)記錄標(biāo)記為“需更新”,當(dāng)該空間再次有訪問(wèn)請(qǐng)求進(jìn)來(lái)的時(shí)候再主動(dòng)觸發(fā)一個(gè)更新操作。

流量統(tǒng)計(jì)模塊:為降低數(shù)據(jù)統(tǒng)計(jì)的數(shù)據(jù)量,我們采用先在前端進(jìn)行初步統(tǒng)計(jì)一個(gè)中間結(jié)果再交予數(shù)據(jù)中心進(jìn)行大匯總的模式。每個(gè)URL訪問(wèn)請(qǐng)求進(jìn)入Nginx,將通過(guò)流量統(tǒng)計(jì)模塊并把該次請(qǐng)求的內(nèi)容大?。ㄈ纾?02400字節(jié))記錄到該請(qǐng)求對(duì)應(yīng)的空間域名記錄下,而不是直接就把這次請(qǐng)求的流量數(shù)字報(bào)到后端數(shù)據(jù)中心。在前端的流量統(tǒng)計(jì)模塊上暫時(shí)保留5分鐘的記錄,每隔5分鐘后進(jìn)行每個(gè)空間域名的匯總統(tǒng)計(jì),得到一個(gè)中間值再報(bào)入到數(shù)據(jù)中心進(jìn)行全部節(jié)點(diǎn)的匯總統(tǒng)計(jì)。這樣一來(lái),數(shù)據(jù)量從幾百萬(wàn)條記錄降低到每5分鐘幾百條記錄,那么在數(shù)據(jù)中心的匯總統(tǒng)計(jì)就相對(duì)簡(jiǎn)單很多。

緩存調(diào)度模塊:調(diào)度模塊在Nginx共享內(nèi)存中存有幾百萬(wàn)條URL信息,這些信息是標(biāo)記某個(gè)URL應(yīng)該調(diào)度到SSD磁盤或者SAS磁盤。這數(shù)百萬(wàn)條記錄主要通過(guò)Nginx內(nèi)部提供的RbTree 算法進(jìn)行查找,百萬(wàn)條記錄,最多只需20步就能定位到記錄。而我們?cè)赗bTree算法基礎(chǔ)上加入了LRU和MRU算法,以實(shí)現(xiàn)在固定范圍內(nèi)對(duì)這些URL進(jìn)行排序操作,當(dāng)某些URL訪問(wèn)密度明顯大于其他URL時(shí),它將被調(diào)到SSD磁盤的Squid緩存進(jìn)行讀寫。

雖然每個(gè)訪問(wèn)請(qǐng)求都會(huì)經(jīng)過(guò)緩存調(diào)度模塊的判斷,但模塊的判斷速度非???,不會(huì)帶來(lái)任何延遲??蓪衢T內(nèi)容(占訪問(wèn)總量70%以上)都被調(diào)度到SSD磁盤上讀取,明顯提高系統(tǒng)整體性能。

防攻擊模塊:該模塊核心算法跟緩存調(diào)度模塊類似,都是要對(duì)大量的URL進(jìn)行排序,對(duì)訪問(wèn)量大的URL進(jìn)行判斷。如果某個(gè)URL的訪問(wèn)頻密度超過(guò)正常閾值,系統(tǒng)將對(duì)此URL的所有請(qǐng)求進(jìn)行初步屏蔽處理(該次屏蔽以302重定向的方式進(jìn)行保護(hù),如果該次請(qǐng)求不是瀏覽器發(fā)起的正常訪問(wèn)一般是不會(huì)識(shí)別302重定向信號(hào),從而可屏蔽掉機(jī)器刷新類型的攻擊),如情況還繼續(xù)惡化,系統(tǒng)將禁止該URL的訪問(wèn)請(qǐng)求,每隔5分鐘再次審核該URL的請(qǐng)求量是否恢復(fù)到正常閾值,自動(dòng)判斷是否可以解除禁止。

黃慧攀還介紹:“雖然又拍云CDN系統(tǒng)的業(yè)務(wù)功能較傳統(tǒng)的CDN系統(tǒng)復(fù)雜,多了好幾個(gè)模塊運(yùn)算,但對(duì)訪問(wèn)請(qǐng)求的處理耗時(shí)并沒(méi)產(chǎn)生影響,可忽略。并且使用到SSD固態(tài)硬盤來(lái)提供熱門內(nèi)容的緩存服務(wù),整體的服務(wù)處理能力還大大增加(前后對(duì)比,使用SSD固態(tài)硬盤后單臺(tái)服務(wù)器的服務(wù)能力提升了1倍多)。

整體系統(tǒng)分為三層,可充分降低數(shù)據(jù)中心的訪問(wèn)壓力。我們還在第二層中間結(jié)點(diǎn)部署有圖片處理服務(wù)器和音頻處理服務(wù)器的集群,把一部分?jǐn)?shù)據(jù)中心工作向外擴(kuò),進(jìn)一步減輕壓力并能提高整體系統(tǒng)性能。

又拍云CDN系統(tǒng)上線正式投入服務(wù)到今已穩(wěn)定運(yùn)行3年多,較我們?cè)缒瓴渴鸬腃DN系統(tǒng)有了很大提升。未來(lái)我們還將繼續(xù)完善UpCDN系統(tǒng),在自動(dòng)化管理方面加大研發(fā)力度(這將涉及到服務(wù)器硬件、系統(tǒng)環(huán)境和軟件部署等方面,需制定軟硬件標(biāo)準(zhǔn)和完善的節(jié)點(diǎn)監(jiān)控系統(tǒng)),以實(shí)現(xiàn)一個(gè)智能化、自動(dòng)維護(hù)的CDN系統(tǒng)?!?/p>

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2013-11-11
又拍云架構(gòu)師黃慧攀:又拍云CDN技術(shù)探秘
11月1日到3日,由InfoQ 主辦的全球軟件開發(fā)大會(huì)(簡(jiǎn)稱QCon)在上海光大會(huì)展中心國(guó)際大酒店隆重召開,這是一次技術(shù)開發(fā)者的頂級(jí)盛宴,又拍

長(zhǎng)按掃碼 閱讀全文