直播技術原理:CDN技術詳解

背景

隨着互聯網應用的迅速發展與網絡流量的大幅度激增,用戶對網站的加速需求日益增長。由於 CDN 技術能夠及時解決網站的響應速度問題,並對網站的穩定性起了較大的提升作用,因此受到了業界的很大關注。

不同於網站鏡像的單純內容複製,CDN 技術更加智能,可以用這樣一個式子來解釋 CDN 與鏡像的關係: CDN=更智能的鏡像+緩存+流量調度。 從上面的關係式可以看出,CDN 能夠明顯提高網絡中數據流動的效率,從而解決網絡帶寬不足、 用戶訪問量過大以及內容分佈不均等問題,提升用戶的網站訪問體驗。 許多我國國內的網站出於業務需要,將源站服務器放在歐美地區。 這樣一來,物理距離距中國太遠,普遍 Ping 所需的時間都在 100ms 以上,使網站的用戶會感覺到訪問速率比較慢,訪問體驗度方面有所下降。所以 CDN 技術首先要解決的就是物理距離遠所導致的訪問速率降低問題。

通過 CDN 技術,在中國香港、中國臺灣等地區和日本、韓國等國家部署 CDN 節點進行數據分發,即使源站放置在遙遠的歐美地區,中國用戶的訪問速率也會得到明顯的改善。 最初 CDN 的提出,就是爲了通過就近提供服務來解決物理距離過遠導致性能不好的問題。使用 CDN 後,網絡的基本組織架構和內容傳輸情況發生了很大變化。從普通網站用戶的角度上看, CDN 節點的作用就相當於把一個網站就近部署在用戶周圍。 CDN 服務器會像源站服務器一樣,爲用戶提供需要的內容服務。但是,由於 CDN 節點更靠近用戶,因而能夠更快地響應用戶的請求。

以視頻網站爲例, 使用CDN 服務後,對服務請求進行了優化調度,更加有效地利用了帶寬資源,使得視頻加載時間減少,性能提高。
在這裏插入圖片描述

總的來說, CDN 對互聯網應用的優化作用主要體現在以下幾個方面:

  • 緩解源站服務器訪問壓力,解決服務器端的“第一千米”問題
  • 優化熱點內容的分佈,合理緩存,減輕骨幹網傳輸的流量壓力
  • 提升用戶的訪問質量和體驗,全面提高網站訪問速度
  • 增強網站服務的可靠性,解決網站突發峯值流量問題
  • 解決不同電信運營商之間互聯互通問題造成的影響
  • 提高安全性,有效防止異常流量對源站的攻擊

CDN 基本概念

1. CON 的定義

內容分發網絡(Content Delivery Network, CDN),是在現有網絡中增加一層新的網絡架 構。 CDN 將源站的內容發佈和傳送到最靠近用戶的邊緣地區,使用戶可以就近訪問想要的內 容,從而提高用戶訪問的響應速度。 CDN 的基本原理是依靠放置在各地的緩存服務器,通過全局調度以及內容分發等功能模 塊,將用戶需要的那部分內容部署到最貼近用戶的地方,將原本低效、不可靠的四網絡轉變成高效、可靠的智能網絡,滿足用戶對內容訪問質量的更高要求, 改善互聯網網絡擁塞問題, 提高用戶訪問網站的響應速度。
從字面意義上可以看出, CDN 的構成元素爲內容 (Content)、分發(Delivery) 以及網 絡(Network)。

(1) 內容

CDN 的內容通常是以下兩種: 靜態內容以及動態內容。

  • 靜態內容:內容不經常更改,並且一旦它在 CDN 緩存中,可以由許多用戶進行訪問,緩存性強。
  • 動態內容:內容用於特定的用戶或組,並且更新頻率較高,通常來自源服務器並實時發送到CDN 中,緩存性較弱。對於用戶的每一次請求, CDN 都必須從源站服務器拉取動態內容,所以動態內容加速的常用方法就是降低源站服務器和用戶終端之間的傳輸時延。

(2)分發

CDN 的分發是指利用一定傳送策略,將用戶請求的內容發佈到距離該用戶最近的節點。

(3)網絡

CDN 由成千上萬個分佈式服務器組成,通過服務器的通信,把內容分發和傳送給終端用 戶。
CDN 各節點之間是通過電信運營商的寬帶網絡進行通信的,可以說 CDN 是在電信運營 商的網絡之上的一層網絡。

2. CON 可承載的內容

用戶在向網站發起訪問請求時,如果等待一定時間網站還沒有響 應,用戶就會放棄訪問,而鏡像通常不適用於大規模商業網站加速,因此,CDN 加速需求應運而生。

靜態內容是最早出現的 CDN 承載的內容類型,以文字、圖片、動畫等更新頻率低的內容爲主。

因此,CDN 技術最初就是用來對這些靜態內容網頁進行加速的。

後來,隨着互聯網的大幅度升溫、寬帶的普及,用戶利用互聯網下載所需文件已經成爲一種習慣,因此, CDN 對下載業務的加速服務也是必不可少的。

近年來,大量視頻網站湧現,流媒體流量隨之迅速攀升,從而驅動了 CDN 技術的應用重點也逐步轉爲流媒體加速服務。 隨着互聯網技術的發展,社交網絡、在線支付以及網絡遊戲等實時性強、內容經常更新 的互聯網應用逐漸產生,因此,CDN技術也從靜態內容的加速發展到動態內容的加速。

從互聯網應用的角度看, 需要CDN承載的內容主要爲靜態內容和動態內容。

3. CDN 的工作過程

CDN 服務與傳統網絡服務最大的差別在於訪問方式。傳統情況下,用戶發起訪問請求後, 對於同一個內容的所有用戶請求,都集中在同一個目標服務器上。

而利用 CDN 加速後,用戶的內容請求解析權交給了 CDN 的調度系統,然後將用戶請求引導到性能最佳的最靠近用戶的 CDN 節點上, 最終該節點爲用戶請求提供服務。

傳統的訪問方式,造成了在網絡中傳輸的極大壓力,並且還無法保證用戶的良好訪問體驗。 而使用 CDN 服務後,用戶的訪問請求不會集中在相同的目標服務器上,而是會分散到不同節點,在這種情況下,用戶請求就不會跨地區,並且骨幹網也不需要承擔過重的流量負擔,進而使得用戶訪問質量得到保證。

下面介紹 CDN 的基本工作過程,包括內容注入、用戶請求調度、內容分發以 及內容服務這 4 個步驟。
(1)內容注入

內容注入是 CDN 能爲用戶提供服務的第一步,是內容從源站注入 CDN 的過程,使得用 戶能從 CDN 系統中獲取源站的內容。

(2)用戶請求調度

用戶請求調度是用戶向網站發起訪問請求, 最終用戶被引導到最佳的有內容的 CDN 節點的過程,具體如下:

(a)當用戶向網站發起訪問請求時,經由本地 DNS 系統解析,本地 DNS 會通過遞歸方式將域名的解析權最終交給 CDN 授權 DNS 服務器 CGSLB);

(b) CDNGSLB 可將 CDN 節點設備的回地址返回用戶,也可以將另一個負責解析用戶 終端 IP 地址的 GSLB 設備的 IP 地址返回用戶

(c)用戶向 CDN 的 GSLB 設備發起內容訪問請求(IP 調度方式)

(d) CDN 的 GSLB 設備根據用戶 E 地址以及用戶請求的內容 URL,選擇一臺用戶所屬地區的本地負載均衡 (SLB) 設備,並讓用戶向該 SLB 發起訪問請求;

(e)該 SLB 設備通過決策選擇一臺最佳的服務器爲用戶提供服務,用戶向該服務器發起訪問請求;

(f) 若該服務器內容未命中,而 SLB 仍將該服務器分配給用戶, 則該服務器需要向上級 節點請求內容,然後,由該服務器向用戶提供“邊拉邊放”的服務或者由上級節點直接爲用戶提供服務。

(3)內容分發

當用戶發起請求時,對於用戶想要的內容,一部分已經預先直接推送到靠近用戶的節點;
但是,當下級節點上並沒有用戶想要的內容時,就要通過向上級節點拉取內容的方式,把用戶想要的內容分發到下級節點。

(4)內容服務

把找到的最靠近用戶的 CDN 節點中的內容交付給終端用戶。

在這裏插入圖片描述

4. CON 內容接入

CDN 內容接入是指內容從內容源接入 CDN 的行爲
在這裏插入圖片描述
當互聯網應用希望 由集中式部署向分佈式的 CDN 部署轉變時,首先要考慮、通過對接 CDN 將現有集中式部署的 內容轉移到 CDN 中。 CDN 內容接入有 3 種接入方式:內容存儲接入方式、內容預注入方式、實時回源方式,
這 3 種內容接入方式的適用場景及業務流程均有較大不同。

(1) 內容存儲接入

內容存儲接入指源站(互聯網應用的內容源)在發佈內容前,提前把內容注入 CDN。內 容存儲接入方式下,業務系統需主動向 CDN 內容庫發送操作指令, CDN 根據指令獲得內容並存儲在 CDN 內容庫中,從而在終端訪問 CDN 時直接由 CDN 向終端提供內容,無需再從源站獲取,提升了終端用戶體驗。 採用內容存儲接入方式接入的內容將永久存儲在 CDN 中,直到通過內容接入操作指令對該內容顯式刪除。 CDN 的內容存儲接入包括對注入內容的增加、刪除和更新,能夠通過業 務系統或手工方式主動發起內容刪除操作並立即實現全網刪除。

(2)內容預注入

內容預注入是指源站在內容發佈之前將內容注入 CDN 中 。 內容預注入與內容存儲接入方式類似,都是由業務系統主動向 CDN 發送操作指令, CDN 根據指令預先從內容源回源獲取內容,是就近提供服務的接入方式。 但採用內容預注入方式接入的內容並不永久存儲在 CDN 中,而僅僅是進行內容緩存, CDN 會根據內容訪問的熱度情況對緩存內容進行智能刪除,預注入內容可以設定一段時間不被刪除的內容保護期。採用內容預注入方式接入的內容當被緩存刪除後, CDN 仍可以通過回源方式獲取內容提供服務。

(3)實時回源

實時回源 (未注入〉是指源站在內容發佈之前不向 CDN 注入內容,但當用戶內容訪問請求時, CDN 實時地從源站拉取內容。

內容回源是指對於非託管模式的內容接入,當 CDN 收到業務系統內容預注入指令或用戶內容服務請求而本地沒有內容時,向內容源請求並獲取內容接入 CDN 的行爲。

實時回源方式無需由業務系統主動向 CDN 預先注入內容,而是在終端訪問 CDN 時,通過回源方式向內容源實時獲取內容到 CDN 中,向終端提供後續就近緩存服務。

內容存儲接入方式對用戶的服務質量保障最佳,但對 CDN 的資源消耗較大,成本較高,適用於 IPTV 等對質量要求極高的業務應用。

實時回源獲取方式對 CDN 資源消耗較小,成本較低, 但對用戶的服務質量保障比不上內容存儲接入方式, 一般在網站等業務應用上使用, 是目前 CDN 的最主要接入方式。

內容預注入方式介於內容存儲接入與實時獲取方式,互聯網服務提供商可根據自有業務的需求選擇合適的內容接入方式。

5. CON 用戶請求調度

通常情況下, CDN 用戶的內容訪問請求調度如圖 2-4 所示,分爲兩個層次:全局調度和本地調度

(1) 全局調度

全局調度的主要目的是根據用戶所在地理位置不同,在各個節點之間進行分析決策,將 用戶請求轉移到整個網絡中最靠近用戶的節點。

全局調度方式目前主要有基於 DNS 調度方式和基於應用層重定向調度兩種方式。

(2)本地調度

和全局調度系統相比,本地調度通常被限制在一定地區範圍內,並且更加關注 CDN 服務器設備具體的健康狀況與負載情況,根據實時響應時間,將任務分配給最適合的服務器設備進行處理,進行更精細粒度的調度決策,實現真正的智能通信和發揮服務器集羣最佳性能。 本地調度的意義在於充分利用現有設備,有效地解決了用戶訪問請求過多引起的系統負載過重的問題。
在這裏插入圖片描述

6. CON 內容分發

互聯網應用的響應時間通常是由網絡帶寬、路由時延、網站處理能力以及物理距離等因素決定的。其中,物理距離過長對互聯網應用的響應時間有最直接的影響,會使響應速度變得十分緩慢。

因此,利用 CDN 技術把最熱的內容分發部署到各地的節點上。

內容爲不同地區的用戶提供就近服務,就能夠有效地提高互聯網應用的響應速度
在這裏插入圖片描述
內容的分發有 Push 和 Pull 以及混合分發共 3 種實現方式。

(1) Push 方式

Push 是一種主動分發的方式。通常, Push 由 CDN 內容管理系統發起,將內容從源站或 者中心內容庫主動分發到各邊緣的 CDN 節點,分發的協議可以採用 HTTP、 FTP 等。通過 Push 分發的內容一般是比較熱點的內容,這些內容通過 Push 方式預先主動分發到邊緣CDN 節點,可以實現有針對性的內容提供。對於 Push 分發需要考慮的主要問題是分發策略,即在什麼時候分發什麼內容。 一般來說, Push 分發是一種智能的主動分發策略。 可以通過用戶訪問的統計信息(例如, 熱度級別排序信息)和己經預先設定的內容分發的規則,智能地決定是否進行內容主動分發。 並且可以根據用戶歷史訪問數據等,建立迴歸模型,對於智能預測用戶可能會大量訪問的內容,將其提前推送到邊緣節點。

(2) Pull 方式

Pull 是一種被動的分發方式, Pull 分發通常由用戶請求驅動。 當用戶請求的內容在本地 的邊緣 CDN 節點上不存在(未命中)時, 該 CDN 節點啓動 Pull 方式從內容源或者其他 CDN 節點實時拉取內容, 並且在 Pull 方式下,內容是按需分發的。 在實際的 CDN 系統中, 一般兩種分發方式都支持,但是根據內容的類型和業務模式的 不同,在選擇主要的內容分發方式時會有所不同。通常, Push 方式適合內容訪問比較集中的情況,例如,熱點的流媒體視頻內容: Pull 方式比較適合內容訪問分散的情況。

(3)混合分發方式

混合分發方式就是 Push 與 Pull 分發方式結合的一種機制。混合分發方式有多種方案, 最常見的混合分發機制,是利用 Push 方式進行內容預推,後續則使用 Pull 方式拉取。 混合分發方式能夠根據當前內容分發系統中的內容服務狀況,採用推拉的方式動態地調 整內容在內容分發系統中的分佈,對於熱點內容主動將其推送(緩存)到邊緣節點。

典型的CDN架構與組網

1. CDN 功能平面

CDN 從功能上可以劃分爲包含管理平面、調度平面和數據平面在內的 3 個邏輯平面。

其中,在管理平面的管理和控制下實現內容分發和推送,在調度平面完成用戶請求的調度、控制以及各種內容調度策略,在數據平面實現內容分發與服務實體。

CDN 管理平面主要用來完成業務管理、網絡管理、分發策略管理、 內容接入管理以及回源分發管理等一系列管理功能,管理、監控並保障 CDN 承載業務的高效運營。

CDN 調度平面主要實現用戶服務請求調度(包括 DNS 調度、 HTTP 調度、 RTSP 調度)內容定位、內容路由等功能,通過控制用戶服務請求的調度,實現對用戶的就近及有保障的服務。

CDN 數據平面主要是內容分發與服務實體,主要負責爲用戶提供內容分發與應用服務, 包括內容存儲、 內容緩存、內容分發、內容轉碼、內容服務等功能。
在這裏插入圖片描述
在這裏插入圖片描述

CDN 部署架構

節點是指多臺物理設備在某地理區域範圍內作爲一個整體對外提供內容服務。每個 CDN 節點通常包含多臺服務器設備,節點是 CDN 系統最基本的組成單元。 CDN 系統設計的主要目標是儘量提高用戶請求的響應速度,爲達到這一目標, CDN節點部署的原則是儘量將內容存放在最靠近用戶的位置。

通俗地說,就是將爲用戶提供實際內容服務的服務器部署在網絡的邊緣位置。 中心節點層保存着完整的內容副本,當用戶請求的內容在邊緣層未命中時, 中心層可能會爲用戶直接提供服務,也可能由下級邊緣節點向中心節點請求拉取內容,再分發到邊緣節點爲用戶提供直接服務。但是,當用戶請求量過大時,若大量邊緣節點都直接向中心節點請求拉取內容,會造成中心層壓力過大,這時,就需要考慮在邊緣節點層和中心節點層之間部署一個區域層。區域層保存了部分內容副本,使其能夠分發內容並在邊緣節點未命中時提供服務,以減輕中心節點的壓力。這樣,就形成了 CDN 的三級系統架構。
在這裏插入圖片描述
從節點構成的角度來說,無論是 CDN 區域層節點還是 CDN 邊緣層節點,都是由緩存設 備和本地負載均衡設備( SLB)構成的。在一個 CDN 節點中,緩存設備和本地負載均衡設備 的連接方式有兩種: 一種是旁路方式,另一種是穿越方式
在這裏插入圖片描述
在穿越方式下, SLB 一般由四七層交換機實現, SLB 向外提供可訪問(公網〉的虛擬 IP (VIP)地址,每臺緩存設備分配不同的私網 IP 地址,該 SLB 連接下掛的所有緩存設備構成一個服務單元。所有用戶請求經由該 SLB 設備,再由該 SLB 向上向下進行轉發。 SLB 實際上承擔了網絡地址轉換(Network Address Translation, NAT)功能,向用戶隱藏了各臺緩存設備設備的IP地址。這種方式是 CDN 系統中應用較多的方式,優點是具有較高的安全性和可靠性,但是,當節點容量大時,四七層交換機容易形成性能瓶頸。

在旁路方式下, SLB 有兩種實現方式。 在早期, SLB 一般由軟件實現。 SLB 和緩存設備都具有公共的 IP 地址, SLB 和緩存是並聯關係。用戶需要先訪問 SLB 設備,然後再以重定 向的方式訪問特定的緩存。 這種實現方式簡單靈活,擴展性好,缺點是安全性較差,而且需要依賴於應用層重定向 。 隨着技術的發展,四七層交換機也可採用旁路部署方式,旁掛在路由交換設備上, 數據流量通過三角傳輸方式進行轉發。

CDN 間組網

當 CDN 覆蓋範圍或能力不足,或需要多廠商時, CDN 可以進行組網。不同 CDN 的共同組網目標是實現 CDN 分發與服務能力的共享,各 CDN 通過標準接口實現互聯互通。 CDN 共同組網根據服務的場景及各 CDN 的功能與性能不同,可選擇不同的組網架構, 典型的組網邏輯可分爲以下兩種。

(1)並聯組網

源站同時接入多個 CDN,邊’過用戶請求調度層面進行流量分配,不同 CDN 共同承載內容。
在這裏插入圖片描述
並聯組網方式需要把用戶流量通過 CNAME 引導到一個用戶請求流量調度系統,由該調度系統把請求分配至不同 CDN。 不同 CDN 間不進行內容的分發與服務互聯,均需與源站系統進行互聯的實現內容注入,或分別回源獲取內容,再獨立進行分發服務。在一個區域內引 入多家 CDN 服務提供商向用戶提供 CDN 服務時, 一般採用這種組網方式。

(2)級聯組網

源站接入上游 CDN,上游 CDN 再進一步和下游其他 CDN 對接,上游 CDN 和下游 CDN 除調度層面外, CDN 內容分發與服務層面也進行互聯,共同組成一張統一的 CDN
在這裏插入圖片描述

級聯組網方式需要 CDN 承載的業務系統只對接一個 CDN (上游 CDN),向該 CDN 注入 內容或由該 CDN 向源站獲取內容,並由該 CDN 決定用戶調度和內容分發策略,把用戶請求調度到其他下游CDN, 再由下游 CDN 通過 CDN 間的分發服務或回源接口實現上下游 CDN 間的互聯,向最終用戶提供服務。 爲保證服務質量,需要服務的內容也可以通過內容預注入的方式通過上游 CDN 提前注入下游 CDN 中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章