[滕勇雋 陳戈]
互聯(lián)網(wǎng)CP(Content Provider,內(nèi)容提供者)租用CDN(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))時(shí),會(huì)向CDN 運(yùn)營商提出KQI(Key Quality Indicator,關(guān)鍵質(zhì)量指標(biāo))指標(biāo)要求。在KQI 指標(biāo)中,欠流率(因CDN 節(jié)點(diǎn)沒緩存而需向源站實(shí)時(shí)獲取的比率)是非常重要指標(biāo),這是由于欠流率未達(dá)標(biāo)時(shí),互聯(lián)網(wǎng)CP 的業(yè)務(wù)質(zhì)量及源站負(fù)載會(huì)受到影響。
現(xiàn)有CDN 節(jié)點(diǎn)緩存的內(nèi)容是根據(jù)節(jié)點(diǎn)內(nèi)容的訪問熱度來決定的,CDN 節(jié)點(diǎn)內(nèi)部對(duì)所存儲(chǔ)的內(nèi)容根據(jù)內(nèi)容訪問熱度進(jìn)行排序,節(jié)點(diǎn)會(huì)定時(shí)將熱度排序后面的內(nèi)容刪除,以騰出空間存儲(chǔ)新的高熱度內(nèi)容。大CP 由于其服務(wù)的用戶多,其內(nèi)容熱度往往比小CP 的熱度高,因此大CP 的內(nèi)容往往比小CP 的內(nèi)容熱度更高,出現(xiàn)大CP 較冷的內(nèi)容也比小CP 最熱的內(nèi)容熱度高。由于緩存的內(nèi)容多少?zèng)Q定了內(nèi)容的命中率,因此,在這種機(jī)制下小CP 欠流率容易不達(dá)標(biāo)。
為解決該問題,現(xiàn)有的CDN 通過為各CP 劃分專用資源的方式,例如vCDN(Virtual Content Delivery Network,虛擬內(nèi)容分發(fā)網(wǎng)絡(luò)),來解決欠流率問題。在劃分專用資源的方式下,每個(gè)CP 會(huì)分配固定空間的存儲(chǔ),相互獨(dú)立,不能共享。因此,這種機(jī)制下CDN 節(jié)點(diǎn)的復(fù)用率不高,容易造成資源浪費(fèi)的問題。
CDN 欠流是由于CDN 節(jié)點(diǎn)內(nèi)容緩存數(shù)量與用戶請(qǐng)求的內(nèi)容數(shù)量不匹配而形成的,提升CDN 欠流率最直接的方法是提升各CDN 節(jié)點(diǎn)的總緩存空間。但由于CDN 成本制約,提升CDN 欠流率最有效的方案應(yīng)該是根據(jù)目標(biāo)欠流率,合理為CP 內(nèi)容進(jìn)行合理緩存。
由于CDN 承載了多個(gè)CP 的業(yè)務(wù),每個(gè)CP 也有不同類型的業(yè)務(wù)類型及內(nèi)容,如視頻點(diǎn)播業(yè)務(wù)、視頻直播業(yè)務(wù)、靜態(tài)頁面等,因此,不同的CP 對(duì)欠流率有不同,通過不同業(yè)務(wù)及CP 的內(nèi)容欠流率來調(diào)節(jié)CP 緩存是可行方案。
也應(yīng)看到,當(dāng)某CDN 節(jié)點(diǎn)存在大部分欠流率不達(dá)標(biāo)CP 的情況,很可能表明該CDN 節(jié)點(diǎn)資源不足,通過調(diào)整不同CP 不同業(yè)務(wù)的欠流流很可能無法達(dá)到所有欠流率達(dá)標(biāo),這時(shí)應(yīng)通過請(qǐng)求GSLB 將部分資源轉(zhuǎn)移到其它節(jié)點(diǎn),從而緩解該CDN 節(jié)點(diǎn)的緩存空間壓力。
因此,提升CDN 欠流率的方法應(yīng)滿足以下要求:
(1)CDN 節(jié)點(diǎn)應(yīng)具備判斷CDN 緩存資源是否具備全部CP 欠流率的能力,當(dāng)無法滿足時(shí),CDN 節(jié)點(diǎn)應(yīng)通過CDN GSLB 過載,由GSLB 把流量調(diào)度到其他CDN節(jié)點(diǎn);
(2)提升CDN 欠流率的方法應(yīng)有普適性,可適用于不同類型的業(yè)務(wù);
(3)提升CDN 欠流率的方法應(yīng)易于實(shí)施,不影響現(xiàn)有CDN 的緩存算法;
(4)提升CDN 欠流率的方法應(yīng)具備個(gè)性化配置能力,通過定義不同的欠流率為不同質(zhì)量要求的業(yè)務(wù)提供不同等級(jí)的服務(wù)質(zhì)量。
本文提出的一種緩存空間調(diào)整方法,主要通過緩存空間調(diào)度服務(wù)器及安裝在CDN 節(jié)點(diǎn)的欠流率監(jiān)測(cè)上報(bào)兩個(gè)模塊的協(xié)同完成,這兩個(gè)模塊交互接口如圖1 所示。
圖1 緩存空間調(diào)度系統(tǒng)示意圖
緩存空間調(diào)度服務(wù)器根據(jù)內(nèi)容分發(fā)網(wǎng)絡(luò)CDN 節(jié)點(diǎn)以預(yù)定周期上報(bào)的各內(nèi)容提供者CP 的欠流率,判斷是否存在欠流率不達(dá)標(biāo)CP。在存在欠流率不達(dá)標(biāo)CP 的情況下,調(diào)整指定CP 的CP 熱度變量。將指定CP 的下發(fā)給CDN節(jié)點(diǎn),以便CDN 節(jié)點(diǎn)利用CP 熱度變量對(duì)指定CP 的內(nèi)容熱度進(jìn)行調(diào)整,以調(diào)度各CP 的緩存空間。
CDN 節(jié)點(diǎn)欠流率監(jiān)測(cè)上報(bào),如表1 所示。
表1 CDN 節(jié)點(diǎn)欠流率上報(bào)參數(shù)表
其中CP 熱度變量計(jì)算方法如下:
CP 熱度變量=(Target_Rate-Real_Rate)*HotdegreeX+HotdegreeX
CDN 緩存空間調(diào)整流程如圖2 所示。
圖2 緩存空間調(diào)度流程圖
(1)根據(jù)CDN 節(jié)點(diǎn)以預(yù)定周期上報(bào)的各CP 的欠流率,判斷是否存在欠流率不達(dá)標(biāo)CP。
(2)發(fā)現(xiàn)CPx 的欠流率不達(dá)標(biāo)。
(3)判斷是否存在其它欠流率不達(dá)標(biāo)的CP。若不存在其它欠流率不達(dá)標(biāo)CP,則執(zhí)行步驟4;若存在其它欠流率不達(dá)標(biāo)CP,則執(zhí)行步驟8。
(4)在欠流率達(dá)標(biāo)的CP 中選擇出欠流率最低的CPmin。
(5)分別計(jì)算CPx 和CPmin 的CP 熱度變量。例如,若CPx 的熱度為HotdegreeX,當(dāng)前欠流率為Real_Rate,目標(biāo)欠流率為Target_Rate,則CPx 的熱度變量為:(Target_Rate-Real_Rate)×HotdegreeX +HotdegreeX
(6)相應(yīng)地,也可利用上述公式計(jì)算CPmin 的熱度變量。
(7)將CPx 和CPmin 的CP 熱度變量下發(fā)給CDN節(jié)點(diǎn),以便CDN 節(jié)點(diǎn)利用CP 熱度變量對(duì)CPx 和CPmin的內(nèi)容熱度進(jìn)行調(diào)整,以調(diào)度各CP 的緩存空間。
(8)經(jīng)過預(yù)定時(shí)間間隔,判斷CPx 當(dāng)前的欠流率是否達(dá)標(biāo)。若CPx 當(dāng)前的欠流率仍未達(dá)標(biāo),則返回步驟3。若CPx 當(dāng)前的欠流率已達(dá)標(biāo),則結(jié)束調(diào)度。
(9)向GSLB(Global Server Load Balance,全局負(fù)載均衡)單元發(fā)送流量調(diào)度請(qǐng)求,以便將CDN 節(jié)點(diǎn)上的部分流量調(diào)度到其它CDN節(jié)點(diǎn)。
(10)若存在多個(gè)CP 欠流率不達(dá)標(biāo)的情況,表明CDN 節(jié)點(diǎn)當(dāng)前的資源不足,這時(shí)可通過向GSLB 發(fā)送請(qǐng)求,以便將部分流量調(diào)度到其它CDN 節(jié)點(diǎn),從而能夠減少緩存空間需求,解決當(dāng)前多個(gè)CP 欠流率不達(dá)標(biāo)的情況。
本文方案在CDN 應(yīng)用中發(fā)現(xiàn),當(dāng)不是大部分CP 發(fā)生欠流率不達(dá)標(biāo)情況下,通過本方案可快速降低CP的欠流率,適用于大部分的CDN 應(yīng)用場(chǎng)景。