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