什么是CDN?它是如何工作的?
在網(wǎng)絡(luò)如此發(fā)達(dá)的今天,如何能夠跨地區(qū)實現(xiàn)數(shù)據(jù),視頻信息的快速加載?這篇文章,我們將分析其中非常重要的一個技術(shù)環(huán)節(jié):CDN。
什么是CDN?
CDN,全稱 Content Delivery Network,翻譯為內(nèi)容分發(fā)網(wǎng)絡(luò),它是一個地理分布的服務(wù)器和數(shù)據(jù)中心網(wǎng)絡(luò),旨在提高 Web 內(nèi)容的性能和可用性。CDN 通過將副本存儲在戰(zhàn)略性地分布在世界各地的服務(wù)器上,從而減少延遲并加速靜態(tài)資產(chǎn)(如圖像、視頻和腳本)的交付。
當(dāng)用戶請求內(nèi)容時,CDN 會自動將請求路由到最近的服務(wù)器,從而最大限度地減少物理距離,從而減少加載時間。如下圖,大概描述了CDN 模型的全貌:
為什么需要CDN?
CDN主要解決以下幾種挑戰(zhàn):
- 減少延遲:通過從靠近用戶的服務(wù)器提供內(nèi)容,CDN最小化數(shù)據(jù)傳輸時間,從而加快加載速度并改善用戶體驗。
- 可擴展性:CDN可以通過將內(nèi)容分布到多個服務(wù)器來處理高流量負(fù)載和突發(fā)需求,防止網(wǎng)站崩潰和停機。
- 可靠性:CDN通過減少服務(wù)器故障和網(wǎng)絡(luò)擁堵的風(fēng)險來提高內(nèi)容傳遞的可靠性。它們還提供冗余和故障轉(zhuǎn)移機制,以確保持續(xù)可用性。
- 分布式安全:CDN 通過在多個服務(wù)器上分發(fā)內(nèi)容來提供額外的安全層。這有助于緩解分布式拒絕服務(wù) (DDoS) 攻擊,因為 CDN 可以在惡意流量到達(dá)源服務(wù)器之前吸收和緩解惡意流量。
- 負(fù)載均衡:CDN 通常采用負(fù)載均衡技術(shù),以在多個服務(wù)器之間有效地分配傳入流量。這樣可以確保沒有單個服務(wù)器過載,并有助于在流量高峰期間保持最佳性能。
CDN的組成部分
CDN由多個組件組成,如下圖所示:
- 客戶端(Client):請求CDN內(nèi)容的終端用戶設(shè)備(如筆記本電腦、智能手機)。
- 路由系統(tǒng)(Routing System):根據(jù)網(wǎng)絡(luò)接近性和服務(wù)器可用性等因素確定內(nèi)容傳遞的最佳路徑。
- 清洗服務(wù)器(Scrubber Servers):過濾惡意流量,防護(hù)DDoS攻擊等網(wǎng)絡(luò)威脅。
- 代理服務(wù)器(Proxy Servers):緩存和傳遞內(nèi)容給用戶,減少源服務(wù)器的負(fù)載并提高性能。
- 分發(fā)系統(tǒng)(Distribution System):管理內(nèi)容分發(fā)到邊緣服務(wù)器,并確保網(wǎng)絡(luò)內(nèi)的一致傳遞。
- 源服務(wù)器(Origin Servers):存儲內(nèi)容的原始副本,并將其提供給 CDN進(jìn)行緩存和分發(fā)。
- 負(fù)載均衡器(Load Balancers):這些組件將傳入流量分布到多個服務(wù)器,優(yōu)化性能并確保高可用性。
- 內(nèi)容優(yōu)化工具(Content Optimization Tools):在緩存和傳遞前預(yù)處理和優(yōu)化內(nèi)容,提高性能并減少帶寬使用。
- 日志和監(jiān)控工具(Logging and Monitoring Tools):這些工具跟蹤 CDN性能指標(biāo),監(jiān)控服務(wù)器健康狀況,并提供流量模式和使用趨勢的見解。
- 管理系統(tǒng)(Management System):控制和監(jiān)控CDN的運行,包括配置、性能監(jiān)控和分析。
CDN的工作原理
假設(shè)有這樣的一個場景:韓國的用戶希望訪問托管在美國服務(wù)器上的視頻網(wǎng)站。
- 在沒有 CDN的情況下,用戶的請求需要跨越長距離,導(dǎo)致加載緩慢和緩沖問題。
- 使用 CDN后,用戶就可以從最近的節(jié)點獲取數(shù)據(jù)流,大大縮減了數(shù)據(jù)加載的時長。
那么,整個工作流程是怎樣的呢?
- 客戶端:韓國的終端用戶設(shè)備發(fā)送請求訪問視頻流網(wǎng)站。
- 路由系統(tǒng):請求通過負(fù)載均衡器分配流量并優(yōu)化內(nèi)容傳遞,被路由到韓國最近的出入口(PoP)或邊緣服務(wù)器。
- 代理服務(wù)器:韓國 PoP的代理服務(wù)器檢查請求的視頻內(nèi)容是否在其緩存中。
- 內(nèi)容優(yōu)化工具:如果內(nèi)容可用,則直接傳遞給用戶,提升性能并減少帶寬使用。否則,請求繼續(xù)下一步。
- 源服務(wù)器:代理服務(wù)器從位于美國的源服務(wù)器獲取請求的視頻內(nèi)容。
- 負(fù)載均衡器:負(fù)載均衡器用于在多個源服務(wù)器之間分配傳入請求,優(yōu)化資源利用并確??蓴U展性。
- 分發(fā)系統(tǒng):獲取的內(nèi)容隨后分發(fā)到韓國的代理服務(wù)器以及全球其他邊緣服務(wù)器或PoP。
- 內(nèi)容緩存策略:內(nèi)容在韓國的代理服務(wù)器上緩存以供未來請求使用,采用推送或拉取緩存等緩存策略以優(yōu)化性能并減少延遲。
- 健康檢查:CDN持續(xù)監(jiān)控代理服務(wù)器和源服務(wù)器的健康狀況和可靠性,確保高效的內(nèi)容傳遞和容錯能力。
- 管理系統(tǒng):CDN管理系統(tǒng)控制和監(jiān)控CDN的運行,包括配置、性能監(jiān)控和分析,以確保最佳的CDN性能和用戶體驗。
整個流程如下圖所示:
數(shù)據(jù)緩存策略
CDN 主要采用以下 2種數(shù)據(jù)緩存策略:
- 推送緩存:源服務(wù)器在內(nèi)容被請求之前主動推送內(nèi)容到邊緣服務(wù)器,確保更快的傳遞給用戶。
- 拉取緩存:邊緣服務(wù)器在用戶請求時實時從源服務(wù)器獲取內(nèi)容,減少存儲需求并確保內(nèi)容的新鮮度。
常見的問題
1.如何找到最近的代理服務(wù)器?
CDN是如何將尋找最近的代理服務(wù)器?兩個關(guān)鍵因素如下:
(1) 網(wǎng)絡(luò)距離又包含以下兩個主要因素:
- 網(wǎng)絡(luò)路徑長度:用戶與代理服務(wù)器之間的物理距離決定了網(wǎng)絡(luò)路徑的長度。較短的路徑通常會導(dǎo)致較低的延遲。
- 容量(帶寬)限制:網(wǎng)絡(luò)路徑上的容量或帶寬也影響接近性。最佳接近性涉及選擇路徑最短且可用帶寬最高的服務(wù)器。這確保了更快的內(nèi)容傳遞給用戶。
(2) 請求負(fù)載:代理服務(wù)器在任何給定時間的負(fù)載,即請求負(fù)載,是另一個重要考慮因素。如果一組代理服務(wù)器負(fù)載較高,請求路由系統(tǒng)應(yīng)將請求重定向到負(fù)載較低的服務(wù)器。這有助于平衡代理服務(wù)器的負(fù)載并減少用戶的響應(yīng)延遲。
2.如何將請求路由到最近的代理服務(wù)器?
- DNS重定向:基于 DNS的重定向涉及將域名映射到靠近客戶端的代理服務(wù)器的IP地址。當(dāng)客戶端發(fā)送DNS查詢以解析域名時,DNS服務(wù)器響應(yīng)最近代理服務(wù)器的IP地址,指導(dǎo)客戶端到該服務(wù)器獲取內(nèi)容。
- Anycast:Anycast路由是一種網(wǎng)絡(luò)尋址和路由技術(shù),將數(shù)據(jù)包定向到共享相同IP地址的一組服務(wù)器中最近或性能最佳的節(jié)點。使用Anycast,多個代理服務(wù)器廣播相同的IP地址,路由器根據(jù)網(wǎng)絡(luò)拓?fù)渥詣訉⒘髁柯酚傻阶罱姆?wù)器,最小化延遲并提高可靠性。
- 客戶端多路復(fù)用:客戶端多路復(fù)用涉及在客戶端和不同代理服務(wù)器之間保持多個并發(fā)連接。這允許客戶端同時連接多個服務(wù)器,并選擇延遲最低的服務(wù)器進(jìn)行內(nèi)容檢索。
- HTTP重定向:基于HTTP的重定向涉及代理服務(wù)器使用HTTP狀態(tài)碼(如301(永久移動)或302(找到))將客戶端重定向到更近的服務(wù)器。當(dāng)客戶端向代理服務(wù)器發(fā)送請求時,服務(wù)器評估客戶端的位置并將請求重定向到最近的服務(wù)器進(jìn)行數(shù)據(jù)檢索。
總結(jié)
在實際工作中,大部分公司通常選擇使用 CDN云產(chǎn)品,CDN 通過利用分布式邊緣服務(wù)器網(wǎng)絡(luò),減少延遲,提高可靠性,并增強整體用戶體驗。通過本文對 CDN的分析,我們可以更好的理解 CDN的工作原理。