優(yōu)化CDN不用愁,從全鏈路入手就會找到答案

原標(biāo)題:優(yōu)化CDN不用愁,從全鏈路入手就會找到答案

CDN是一種新型網(wǎng)絡(luò)構(gòu)建方式,目的是提高用戶訪問響應(yīng)速度和準(zhǔn)確率。CDN代表了一種基于質(zhì)量與秩序的網(wǎng)絡(luò)服務(wù)模式。本專欄將從技術(shù)角度探討CDN的應(yīng)用前景,同時結(jié)合實際場景中的問題和解決辦法,希望能夠幫助企業(yè)更好的用好網(wǎng)絡(luò),服務(wù)用戶。

今天,我們先介紹CDN優(yōu)化的核心要點(diǎn)和關(guān)鍵環(huán)節(jié)。

1、質(zhì)量與規(guī)模均是業(yè)內(nèi)領(lǐng)先

百度智能云CDN自2016年開始對外商業(yè)化,搭上百度智能云發(fā)展的快車道,不斷打磨與改進(jìn),CDN的規(guī)模與質(zhì)量都得到了很大提升。目前儲備帶寬50T+,利用率在60%左右,全球可用節(jié)點(diǎn)在600+,擁有國內(nèi)與海外完整的加速解決方案。

用戶非??粗谻DN的質(zhì)量,經(jīng)常會用“PK”的方式從N家中選擇1-2家作為供應(yīng)商。百度智能云CDN經(jīng)過2017~2018這兩年的不斷自我進(jìn)化與客戶打磨,目前整體質(zhì)量綜合排名在業(yè)界處于領(lǐng)先位置。

百度智能云CDN架構(gòu)與優(yōu)勢

當(dāng)前,百度智能云CDN的主要特點(diǎn)如下:

  • 邊緣CDN節(jié)點(diǎn)支持QUIC、HTTP2.0、TLS1.3等新特性。
  • 節(jié)點(diǎn)內(nèi)部支持私有協(xié)議,主要用于節(jié)點(diǎn)間加速與內(nèi)部回源防劫持。
  • 上傳加速,節(jié)點(diǎn)間使用QUIC、長連接復(fù)用等技術(shù)打造上傳加速差異。
  • 中心節(jié)點(diǎn)與百度內(nèi)網(wǎng)有高速專線連接,總體利用率不到40%。
  • 與BOS結(jié)合,有一套完整的上傳與分發(fā)解決方案。

由于百度智能云的CDN表現(xiàn)出色,不少重量級的企業(yè)已經(jīng)在使用。例如,我們服務(wù)的長視頻類客戶主要有愛奇藝、芒果點(diǎn)播等,短視頻類客戶主要有快手、手百Feed、全民視頻、好看視頻等,手機(jī)APP下載類客戶有魅族、小米、華為等。

2、從全鏈路入手進(jìn)行優(yōu)化

如何做到CDN的優(yōu)化?我們從全鏈路分析著手,涉及到客戶端、網(wǎng)絡(luò)、節(jié)點(diǎn)和回源整個請求的生命周期。

就拿手機(jī)百度APP的Feed小視頻來說,當(dāng)用戶點(diǎn)擊一個視頻后,一個HTTPS請求會從端上觸發(fā),經(jīng)歷端上APP及播放器再到底層網(wǎng)絡(luò)協(xié)議棧發(fā)出,再通過公網(wǎng)途經(jīng)就近CDN網(wǎng)絡(luò),首次未命中回源獲取,同步響應(yīng)第一個用戶。在CDN上緩存后,便能加速后續(xù)的請求。從這個過程來看,一個請求的生命周期大概經(jīng)過以下階段。

? 客戶端:需要不同調(diào)整策略

端上的數(shù)據(jù)往往是我們優(yōu)化的突破點(diǎn),因端上APP實現(xiàn)邏輯的差異,不同的實現(xiàn)形式可能需要服務(wù)端有不同的對應(yīng)調(diào)整。HTTPS現(xiàn)在基本是端上的標(biāo)配,有效的HTTPS Session復(fù)用能大大提升加載資源的速度,手機(jī)百度APP通過多種Session復(fù)用技術(shù),可以做到0-1RTT的時延。

我們團(tuán)隊與手機(jī)百度網(wǎng)絡(luò)團(tuán)隊聯(lián)合優(yōu)化時發(fā)現(xiàn),手機(jī)百度端上網(wǎng)絡(luò)庫存在以目標(biāo)IP為粒度的Session復(fù)用,雖說這樣能大幅度提升Session復(fù)用率,但在目前以SNI為基石的多域名復(fù)用CDN加速機(jī)制下,會出現(xiàn)握手失敗的情況,最后通過端上網(wǎng)絡(luò)庫的打點(diǎn),我們能及時發(fā)現(xiàn)并解決問題。

另外,我們還結(jié)合端上的卡頓分析,發(fā)現(xiàn)4G網(wǎng)絡(luò)用戶因受運(yùn)營端套餐的限制,會出現(xiàn)每月從1號開始,卡頓比或loading率持續(xù)上升,再到次月初恢復(fù)的現(xiàn)象。

? 網(wǎng)絡(luò):注意域名解析

在發(fā)請求前,域名解析是一個必不可少的環(huán)節(jié),大部分端會首先用DNS來解析,但國內(nèi)的DNS劫持與污染一直是非常嚴(yán)重的問題。我們給用戶建議使用HTTP DNS后有效解決了劫持問題。例如,在某些弱網(wǎng)絡(luò)環(huán)境下,手機(jī)百度APP端上會自動升級到QUIC協(xié)議,主動改善用戶體驗。

? CDN節(jié)點(diǎn):分層優(yōu)化

節(jié)點(diǎn)內(nèi)的優(yōu)化一直是我們的重點(diǎn),優(yōu)良架構(gòu)的選型與核心模塊的優(yōu)化都有顯著的效果。百度智能云CDN采用典型的分層結(jié)構(gòu),接入業(yè)務(wù)層與Cache存儲層分離,各自分工明確,通過四層BGW加七層Nginx的兩層負(fù)載,應(yīng)對各種故障場景。

CDN節(jié)點(diǎn)上內(nèi)核協(xié)議棧的行為,對性能有很大的影響,如初始窗口、發(fā)包策略、重傳策略等,我們線上內(nèi)核大量嘗試BBR、Boost等較為先進(jìn)的發(fā)包算法,有效提升傳輸速度與可用性。

另外,協(xié)議棧層面,我們還自研了一套系統(tǒng),能自定義監(jiān)控一條TCP流上所有的形為,這樣就能有效快速的定位到應(yīng)用層數(shù)據(jù)發(fā)完后,是協(xié)議棧沒有及時處理還是端上網(wǎng)絡(luò)不好。

? 回源:用私有協(xié)議應(yīng)對劫持

回源劫持一直是比較頭疼的問題,如302劫持、DNS劫持等。比較有技術(shù)含量的運(yùn)營商能根據(jù)Host進(jìn)行阻斷,可能是為了減少跨網(wǎng)流量或主動封堵。此問題可以用HTTPS得到有效解決。但HTTPS就會要求用戶必須提供有效的證書,且存在大量的SSL握手,在節(jié)點(diǎn)內(nèi)部回源,就顯得有點(diǎn)太重。

為此我們開發(fā)了一套私有回源協(xié)議,盡量使問題簡單有效的得到解決。另外,如果使用百度智能云的BOS存儲,還會有額外的優(yōu)化,如高速專線回源、獨(dú)享公網(wǎng)帶寬、常態(tài)有40%的允余,足以應(yīng)對各種突發(fā)。

3、重點(diǎn)優(yōu)化Nginx接入層

為了能有效的衡量七層接入層Nginx的優(yōu)化效果,我們團(tuán)隊構(gòu)建了一個能體現(xiàn)Nginx運(yùn)行狀況的卡頓指標(biāo),具體為Nginx每分鐘處理事件cycle時間超過50ms(50ms的選擇是可配置的,主要是考慮優(yōu)化影響較大的場景)的個數(shù)。

一次處理cycle超過50ms意味著這個Nginx worker上的所有請求,都會在這個時間段(50ms內(nèi))得不到及時的處理。就小文件場景來說,就會體現(xiàn)在首包時間長,而我們的優(yōu)化往往就是毫秒級進(jìn)行。對于Nginx這樣一個高效的異步事件驅(qū)動的模型來說,這有背于高并發(fā)設(shè)計原則,我們應(yīng)該全力降低并消除回調(diào)callback過于占用CPU的情況。通過我們線上的實踐,大體發(fā)現(xiàn)兩類問題。

1、智能壓縮減少CPU消耗:這個問題大家都比較容易理解,壓縮本來是一個CPU密集性任務(wù)。為了有效降低CDN的出口帶寬,部分文件類型的壓縮是不可少的。但我們也發(fā)現(xiàn),有部分用戶的文件類型,壓縮比很低,這類基本沒有壓縮的必要,所以我們CDN支持了智能壓縮,自動計算與識別壓縮比,來決定壓縮與否。

2、解決系統(tǒng)調(diào)用卡頓:系統(tǒng)writev調(diào)用卡頓,是我們逐步縮小定位到的,發(fā)現(xiàn)線上機(jī)器因內(nèi)存使用不當(dāng),產(chǎn)生大量的內(nèi)存碎片,而每次writev調(diào)用時,在申請內(nèi)存不夠時,會時不時的觸發(fā)reclaim或compaction。經(jīng)過與內(nèi)核同學(xué)一起定位,通過修改內(nèi)核行為得到有效解決。

經(jīng)過以上調(diào)整之后,收益明顯:可以做到小文件首包降低30ms+,與多家競品對齊或超越;同時,每分鐘事件處理超過50ms的卡頓數(shù)降低90%(從每分鐘40次到每分鐘4次)。

小提示:后續(xù)百度智能云CDN團(tuán)隊將持續(xù)撰寫相關(guān)文章,敬請關(guān)注。

極客網(wǎng)企業(yè)會員

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

2019-05-08
優(yōu)化CDN不用愁,從全鏈路入手就會找到答案
我們團(tuán)隊與手機(jī)百度網(wǎng)絡(luò)團(tuán)隊聯(lián)合優(yōu)化時發(fā)現(xiàn),手機(jī)百度端上網(wǎng)絡(luò)庫存在以目標(biāo)IP為粒度的Session復(fù)用,雖說這樣能大幅度提升Session復(fù)用率,但在目前以SNI為基石的多域名復(fù)用CDN加速機(jī)制下,會出

長按掃碼 閱讀全文