騰訊視頻:如何更好地利用CDN支持業(yè)務(wù)?
提起CDN,大家一定立即想到圖片,下載,視頻等靜態(tài)內(nèi)容的分發(fā)和就近接入等加速應(yīng)用。今天的互聯(lián)網(wǎng)應(yīng)用場(chǎng)景下,通過(guò)CDN承載的內(nèi)容越來(lái)越多,CDN已經(jīng)成為了一項(xiàng)不可或缺的網(wǎng)絡(luò)基礎(chǔ)設(shè)施了;騰訊CDN上運(yùn)營(yíng)的帶寬總量已經(jīng)超過(guò)30Tbps,儲(chǔ)備的帶寬超過(guò)60Tbps,占到業(yè)務(wù)產(chǎn)生的總體帶寬量的八成以上。根據(jù)我們?cè)隍v訊云和內(nèi)部業(yè)務(wù)的運(yùn)營(yíng)數(shù)據(jù),全國(guó)范圍內(nèi)使用CDN可以把用戶到機(jī)房的“平均光纜長(zhǎng)度”降低到200KM以內(nèi);試想,如果沒(méi)有CDN,全國(guó)的用戶都到同一個(gè)機(jī)房來(lái)訪問(wèn),數(shù)據(jù)平均要經(jīng)過(guò)1000KM+才能夠抵達(dá)用戶手中,除了用戶的訪問(wèn)速度會(huì)變慢以外,對(duì)于運(yùn)營(yíng)商的網(wǎng)絡(luò)負(fù)載會(huì)增加數(shù)倍,以現(xiàn)在的網(wǎng)絡(luò)基礎(chǔ)設(shè)施是一定承擔(dān)不了的。
為了承擔(dān)海量的數(shù)據(jù)分發(fā)需求,我們建設(shè)了超過(guò)600個(gè)超過(guò)百Gb的邊緣節(jié)點(diǎn),分布在全國(guó)各個(gè)地區(qū)和運(yùn)營(yíng)商,保證用戶可以同省訪問(wèn)到CDN的資源。相比集中式的IDC服務(wù),CDN的資源能夠?yàn)橛脩籼峁┓浅4蟮木W(wǎng)絡(luò)質(zhì)量?jī)?yōu)勢(shì)。那么站點(diǎn)和應(yīng)用服務(wù)來(lái)說(shuō),如何更有效的利用這些資源?除了傳統(tǒng)的靜態(tài)類內(nèi)容分發(fā)以外,CDN還能做點(diǎn)些什么?這篇文章從騰訊視頻服務(wù)的實(shí)踐經(jīng)驗(yàn)來(lái)說(shuō)明一下CDN如何更好的支持到業(yè)務(wù)。
騰訊視頻是一個(gè)綜合型的服務(wù),用戶可以通過(guò)多種方式來(lái)訪問(wèn),除了視頻播放以外還有檢索等多個(gè)功能。首先來(lái)看看傳統(tǒng)的服務(wù)架構(gòu):
這個(gè)是一個(gè)典型的動(dòng)靜分離的服務(wù)架構(gòu),其中影片檢索,用戶登錄等動(dòng)態(tài)功能不能夠緩存,需要集中的來(lái)處理;而網(wǎng)站的影片頁(yè)面,播放頁(yè)面和封面圖片等可以通過(guò)CDN來(lái)提供就近的服務(wù)。實(shí)際上早先的大部分騰訊的服務(wù)都是通過(guò)類似的方案來(lái)提供的。如果需要增加新的獨(dú)立功能,我們通常會(huì)申請(qǐng)一個(gè)新的域名,獨(dú)立部署來(lái)進(jìn)行服務(wù),各個(gè)功能點(diǎn)的開(kāi)發(fā),部署,運(yùn)營(yíng)等工作都可以獨(dú)立來(lái)進(jìn)行,互不干擾。但是也有一個(gè)額外的問(wèn)題,功能點(diǎn)多起來(lái)以后,網(wǎng)站的域名數(shù)增多,每個(gè)功能點(diǎn)都需要做運(yùn)營(yíng)商分布,網(wǎng)絡(luò)優(yōu)化,負(fù)載均衡和災(zāi)備等;用戶訪問(wèn)每個(gè)功能都需要連接一個(gè)單獨(dú)的域名,分別解析和建立連接。到了SSL/HTTP2的時(shí)代,這個(gè)問(wèn)題變得更加嚴(yán)重,每個(gè)域名都需要分別部署ssl服務(wù),需要投入重復(fù)的運(yùn)營(yíng)工作,用戶的訪問(wèn)代價(jià)也更大。
首先的問(wèn)題是,動(dòng)態(tài)的這一部分工作可否移到CDN來(lái)做呢?答案是肯定的。通過(guò)CDN來(lái)接入動(dòng)態(tài)的內(nèi)容,可以提供更快,更安全的服務(wù)質(zhì)量,同時(shí)提供更方便,更快捷的運(yùn)營(yíng)能力。
鏈路優(yōu)化
用戶通過(guò)CDN邊緣節(jié)點(diǎn)就近接入,獲得了第一跳的最佳訪問(wèn)質(zhì)量;而后CDN服務(wù)器通過(guò)全國(guó)的節(jié)點(diǎn)和跨運(yùn)營(yíng)商專線資源組成一個(gè)數(shù)據(jù)傳輸網(wǎng)絡(luò),在這個(gè)網(wǎng)內(nèi),我們可以通過(guò)智能路由算法基于實(shí)時(shí)的網(wǎng)絡(luò)情況找到一個(gè)接入點(diǎn)和源站之間的最佳中轉(zhuǎn)方案;CDN的網(wǎng)絡(luò)可以保證用戶,尤其是接入狀況不太好的用戶獲取到最佳的接入方法,例如小運(yùn)營(yíng)商用戶和移動(dòng)客戶端的用戶。而這部分用戶才是對(duì)質(zhì)量抱怨最多的用戶。
由于CDN解決了用戶接入和路由的問(wèn)題,源站服務(wù)器可以部署在單個(gè)運(yùn)營(yíng)商,甚至可以僅部署在騰訊云的網(wǎng)內(nèi),僅需要關(guān)心容量,不需要刻意考慮接入點(diǎn)分布的問(wèn)題;節(jié)省運(yùn)營(yíng)精力的同時(shí)獲取到更好的接入質(zhì)量。
負(fù)載均衡和故障屏蔽
源站采用集群服務(wù)的情況下,由于請(qǐng)求全部通過(guò)CDN來(lái)進(jìn)行接入,因此可以很方便的對(duì)源站進(jìn)行負(fù)載均衡控制。我們?cè)贑DN上可以通過(guò)簡(jiǎn)單配置來(lái)實(shí)現(xiàn)豐富的負(fù)載均衡策略,例如輪詢,服務(wù)器權(quán)重,基于用戶ID或者地址的會(huì)話保持,等等;并且還可以進(jìn)行方便的進(jìn)行定制。同時(shí)單個(gè)服務(wù)器發(fā)生故障時(shí),CDN還可以支持自動(dòng)向可用服務(wù)器進(jìn)行重試,從而實(shí)現(xiàn)故障屏蔽的同時(shí)保持用戶無(wú)感知。
監(jiān)控和問(wèn)題定位
用戶接入到CDN以后,請(qǐng)求都是在受控的服務(wù)器上中轉(zhuǎn),通過(guò)CDN實(shí)時(shí)監(jiān)控和日志分析,我們可以立即掌握到服務(wù)的負(fù)載,請(qǐng)求書(shū),以及源站的訪問(wèn)延遲等信息。同時(shí)當(dāng)用戶訪問(wèn)失敗的情況下,可以通過(guò)訪問(wèn)鏈定位到問(wèn)題節(jié)點(diǎn)。我們也可以通過(guò)自定義HTTP規(guī)則把部分用戶定位到單獨(dú)的服務(wù)器進(jìn)行訪問(wèn),對(duì)于新版本的灰度發(fā)布和現(xiàn)網(wǎng)問(wèn)題排查都很方便。
網(wǎng)絡(luò)安全
當(dāng)前互聯(lián)網(wǎng)上,對(duì)于業(yè)務(wù)站點(diǎn)的安全攻擊層出不窮。入侵問(wèn)題,拒絕服務(wù)攻擊等對(duì)源站的穩(wěn)定服務(wù)造成了巨大的威脅。通過(guò)使用CDN服務(wù),可以把源站隱藏起來(lái),因此針對(duì)業(yè)務(wù)的攻擊會(huì)直接導(dǎo)向CDN的網(wǎng)絡(luò)上。對(duì)于DDoS攻擊,最簡(jiǎn)單的手段最有效:比拼容量。 DDoS攻擊的定義是,攻擊者通過(guò)發(fā)送大量的請(qǐng)求超過(guò)業(yè)務(wù)的服務(wù)能力,從而使得正常用戶無(wú)法訪問(wèn);然而CDN具備海量的服務(wù)能力和非常大的節(jié)點(diǎn)分布,目前我們?cè)庥龅阶畲蟮膁dos攻擊大約是500Gbps,而我們單個(gè)業(yè)務(wù)的訪問(wèn)量最大已經(jīng)超過(guò)了6Tbps,兩者不在一個(gè)數(shù)量級(jí)。通過(guò)CDN的海量服務(wù)能力,我們可以把惡意請(qǐng)求過(guò)濾在門(mén)外,把真正的用戶請(qǐng)求放進(jìn)來(lái)。
協(xié)議棧加速和數(shù)據(jù)壓縮
CDN優(yōu)化中間非常關(guān)鍵的一個(gè)環(huán)節(jié)是協(xié)議棧單邊加速。過(guò)去一段時(shí)間我們對(duì)于協(xié)議棧單邊加速進(jìn)行了相當(dāng)多的探索,也取得了相當(dāng)不錯(cuò)的進(jìn)展;不過(guò)這里單獨(dú)說(shuō)一下針對(duì)動(dòng)態(tài)內(nèi)容的部分。首先是可以單獨(dú)為信令類型的重要數(shù)據(jù)在協(xié)議層面提高傳輸優(yōu)先級(jí),保證及時(shí)送達(dá);另外,CDN服務(wù)器之間的傳輸兩端都是受控的,因此我們可以采用雙邊加速,進(jìn)一步提高傳輸?shù)馁|(zhì)量和穩(wěn)定性。同時(shí)服務(wù)器之間采取共享字典壓縮,節(jié)約傳輸需要的帶寬。
現(xiàn)在,站點(diǎn)上的靜態(tài)內(nèi)容,動(dòng)態(tài)內(nèi)容都通過(guò)CDN來(lái)服務(wù);能不能夠結(jié)合起來(lái)一起看呢?這個(gè)就是要提到的全站加速的概念了。仍然以騰訊視頻站點(diǎn)作為例子,我們一起來(lái)看一下新的主要架構(gòu):
在這個(gè)架構(gòu)下,動(dòng)態(tài)的內(nèi)容和靜態(tài)的內(nèi)容域名都采用v.qq.com單個(gè)域名來(lái)提供服務(wù),CDN對(duì)于靜態(tài)的內(nèi)容進(jìn)行緩存,同時(shí)對(duì)動(dòng)態(tài)內(nèi)容進(jìn)行加速。用戶只需要訪問(wèn)單一域名,建立一條連接,就可以得到完整的功能,節(jié)省了多次解析和建立連接帶來(lái)的額外開(kāi)銷。尤其是引入了http2協(xié)議的情況下,多個(gè)請(qǐng)求可以并發(fā)的處理,相比單純的鏈路加速,這里還能夠進(jìn)一步提高用戶的性能。
相關(guān)推薦
近日,艾肯家電網(wǎng)簽約國(guó)內(nèi)知名的CDN網(wǎng)站加速服務(wù)提供商北京快網(wǎng),北京快網(wǎng)將為艾肯家電網(wǎng)提供提全站CDN加速服務(wù)。記者了解到,目前國(guó)內(nèi)比較大的門(mén)戶網(wǎng)站為現(xiàn)實(shí)網(wǎng)站的高速訪問(wèn),早已使用了CDN網(wǎng)絡(luò)加速。目前,包括騰訊、新浪、搜狐、網(wǎng)易、酷六、紅袖添香等眾多網(wǎng)站都采用了北京快網(wǎng)的CDN網(wǎng)絡(luò)加速服務(wù)這一服務(wù)。據(jù)《中國(guó)互聯(lián)網(wǎng)年度綜合報(bào)告2009-2011》數(shù)據(jù)顯示,預(yù)計(jì)至2011年互聯(lián)網(wǎng)市場(chǎng)規(guī)模將達(dá)到1300億,互聯(lián)網(wǎng)總用戶數(shù)將達(dá)到6億。網(wǎng)民數(shù)量的持續(xù)提升同時(shí)也讓互聯(lián)網(wǎng)服務(wù)發(fā)展如火如荼,視頻、SNS、垂直網(wǎng)站等新興網(wǎng)站層出不窮,在帶來(lái)全新商機(jī)的同時(shí),也讓互聯(lián)網(wǎng)帶寬、服務(wù)器等資源捉襟見(jiàn)肘。而CDN服務(wù)提供商