CDN的關鍵技術主要有内容路由技術、内容分發技術、内容存儲技術、内容管理技術等。
随着寬帶網絡和寬帶流媒體應用的興起,CDN(通常被稱為内容分發網絡Content distribution network,有時也被稱作内容傳遞網絡Contentdeliverynetwork)作為一種提高網絡内容,特别是提高流媒體内容傳輸的服務品質、 節省骨幹網絡帶寬的技術,在國内外得到越來越廣泛的應用。
一、内容路由技術
CDN負載均衡系統實作CDN的内容路由功能。它的作用是将使用者的請求導向整個CDN網絡中的最佳節點。 最佳節點的標明可以根據多種政策,例如距離最近、節點負載最輕等。負載均衡系統是整個CDN的核心,負載均衡的準确性和效率直接決定了整個CDN的效率和性能。
通常負載均衡可以分為兩個層次:全局負載均衡(GSLB)和本地負載均衡(SLB)。
全局負載均衡(GSLB)主要的目的是在整個網絡範圍内将使用者的請求定向到最近的節點(或者區域)。 是以,就近性判斷是全局負載均衡的主要功能。
本地負載均衡一般局限于一定的區域範圍内,其目标是在特定的區域範圍内,尋找一台最适合的節點提供服務。是以,CDN節點的健康性、負載情況、支援的媒體格式等運作狀态是本地負載均衡進行決策的主要依據。
負載均衡可以通過多種方法實作,主要的方法包括DNS、應用層重定向、傳輸層重定向等等。
對于全局負載均衡而言,為了執行就近性判斷,通常可以采用兩種方式,一種是靜态的配置,例如根據靜态的IP位址配置表進行IP位址到CDN節點的映射。另一種方式是動态的檢測,例如實時地讓CDN節點探測到目标IP的距離(可以采用RRT,Hops作為度量機關),然後比較探測結果進行負載均衡。當然,靜态和動态的方式也可以綜合起來使用。
對于本地負載均衡而言,為了執行有效的決策,需要實時地擷取Cache裝置的運作狀态。擷取的方法一般有兩種,一種是主動探測,一種是協定互動。主動探測針對SLB裝置和Cache裝置沒有協定互動接口的情況,通過ping等指令主動發起探測,根據傳回結果分析狀态。另一種是協定互動,即SLB和 Cache根據事先定義好的協定實時交換運作狀态資訊,以便進行負載均衡。比較而言,協定互動比探測方式要準确可靠,但是目前尚沒有标準的協定,各廠家的 實作一般僅是私有協定,互通比較困難。
二、内容分發技術
内容分發包含從内容源到CDN邊緣的Cache的過程。從實作上看,有兩種主流的内容分發技術:PUSH和PULL。
PUSH是一種主動分發的技術。 通常,PUSH由内容管理系統發起,将内容從源或者中心媒體資源庫分發到各邊緣的Cache節點。分發的協定可以采 用HTTP/FTP等。通過PUSH分發的内容一般是比較熱點的内容,這些内容通過PUSH方式預分發(Preload)到邊緣Cache,可以實作有針對的内容提供。對于PUSH分發需要考慮的主要問題是分發政策,即在什麼時候分發什麼内容。一般來說,内容分發可以由CP(内容提供商)或者CDN内容管理者人工确定,也可以通過智能的方式決定,即所謂的智能分發。它根據使用者通路的統計資訊,以及預定義的内容分發的規則,确定内容分發的過程。
PULL是一種被動的分發技術,PULL分發通常由使用者請求驅動。當使用者請求的内容在本地的邊緣Cache上不存在(未命中)時,Cache啟動PULL方法從内容源或者其他CDN節點實時擷取内容。在PULL方式下,内容的分發是按需的。
在實際的CDN系統中,一般兩種分發方式都支援,但是根據内容的類型和業務模式的不同,在選擇主要的内容分發方式時會有所不同。通常,PUSH的方式适合内容通路比較集中的情況,如熱點的影視流媒體内容;PULL方式比較适合内容通路分散的情況。
在内容分發的過程中,對于Cache裝置而言,關鍵的是需要建立内容源URL、内容釋出的URL、使用者通路的URL,以及内容在Cache中存儲的位置之間的映射關系。
三、内容存儲技術
對于CDN系統而言,需要考慮兩個方面的内容存儲問題。一個是内容源的存儲,一個是内容在Cache節點中的存儲。
對于内容源的存儲,由于内容的規模比較大(通常可以達到幾個甚至幾十個TB),而且内容的吞吐量較大,是以,通常采用海量存儲架構。如NAS和SON.
對于在Cache節點中的存儲,是Cache設計的一個關鍵問題。需要考慮的因素包括功能和性能兩個方面:在功能上包括對各種内容格式的支援、對部分緩存的支援,在性能上包括支援的容量、多檔案吞吐率、可靠性、穩定性。
其中,多種内容格式的支援要求存儲系統根據不同檔案格式的讀寫特點進行優化,以提高檔案内容讀寫的效率,特别是對流媒體檔案的讀寫。
部分緩存能力指流媒體内容可以以不完整的方式存儲和讀取。部分緩存的需求來自使用者通路行為的随機性,因為許多使用者并不會完整地收看整個流媒體節目,事實上,許多使用者通路單個流媒體節目的時間不超過10分鐘。是以,部分緩存能力能夠大大提高存儲空間的使用率,并有效地提高使用者請求的響應時間。但是部分緩存可能導緻内容出現碎片問題,需要進行良好的設計和控制。
Cache存儲的另一個重要因素是存儲的可靠性,目前,多數存儲系統都采用了RAID技術進行可靠存儲。但是不同裝置使用的RAID方式各有不同。
四、内容管理技術
内容管理在廣義上涵蓋了從内容的釋出、注入、分發、調整、傳遞等一系列過程。在這裡,内容管理重點強調内容進入Cache點後的内容管理,我們稱為本地内容管理。
本地内容管理主要針對一個CDN節點(由多個CDN Cache裝置和一個SLB裝置構成)進行。本地内容管理的主要目标是提高内容服務的效率,提高本地節點的存儲使用率。通過本地内容管理,可以在CDN節點實作基于内容感覺的排程,通過内容感覺的排程,可以避免将使用者重定向到沒有該内容的Cache裝置上,進而提高負載均衡的效率。通過本地内容管理還可以有效地實作在CDN節點内容的存儲共享,提高存儲空間的使用率。
在實作上,本地内容管理主要包括如下幾個方面。
一是本地内容索引。本地内容管理首先依賴于對本地内容的了解。包括每個Cache裝置上内容的名稱、URL、更新時間、内容資訊等。本地内容索引是實作基于内容感覺的排程的關鍵。
二是本地内容拷貝。通常,為了提高存儲效率,同一個内容在一個CDN節點中僅存儲一份,即僅存儲在某個特定的Cache上。但是一旦對該内容的通路超過該Cache的服務提供能力,就需要在本地(而不是通過PUSH的方式)實作内容的分發。這樣可以大大提高效率。
三是本地内容通路狀态資訊收集。搜集各個Cache裝置上各個内容通路的統計資訊,Cache裝置的可用服務提供能力及内容變化的情況。
可以看出,通過本地内容管理,可以将内容的管理從原來的Cache裝置一級,提高到CDN節點一級,進而大大增加了CDN的可擴充性和綜合能力。
綜上所述,CDN作為一種支援大規模高品質的流媒體服務的關鍵技術,目前已經基本成熟,具備了廣泛應用的能力。