日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

为了搞清楚CDN的原理,我头都秃了...

發(fā)布時(shí)間:2025/3/16 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为了搞清楚CDN的原理,我头都秃了... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CDN 概述

CDN 全稱(chēng) Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其基本思路是盡可能避開(kāi)互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母臁⒏€(wěn)定

CDN 的工作原理 就是將源站的資源緩存CDN各個(gè)節(jié)點(diǎn)上,當(dāng)請(qǐng)求命中了某個(gè)節(jié)點(diǎn)的資源緩存時(shí),立即返回客戶(hù)端,避免每個(gè)請(qǐng)求的資源都通過(guò)源站獲取,避免網(wǎng)絡(luò)擁塞、緩解源站壓力,保證用戶(hù)訪問(wèn)資源的速度和體驗(yàn)。

舉一個(gè)生活中的例子,我們?cè)谀硸|上購(gòu)買(mǎi)商品,快遞能做到當(dāng)日送達(dá),其根本原理是通過(guò)在全國(guó)各地建設(shè)本地倉(cāng)庫(kù)。當(dāng)用戶(hù)購(gòu)買(mǎi)商品時(shí),通過(guò)智能倉(cāng)配模式,為消費(fèi)者選擇就近倉(cāng)庫(kù)發(fā)貨,從而縮短物流配送時(shí)間。

image.png

而商品庫(kù)存的分配,流程可以參考下圖,從 工廠(源站) ?-> 地域倉(cāng)庫(kù)(二級(jí)緩存) -> 本地倉(cāng)庫(kù) (一級(jí)緩存)

image.png

內(nèi)容分發(fā)網(wǎng)絡(luò) 就像前面提到的 智能倉(cāng)配網(wǎng)絡(luò) 一樣,解決了因分布、帶寬、服務(wù)器性能帶來(lái)的訪問(wèn)延遲問(wèn)題,適用于站點(diǎn)加速、點(diǎn)播、直播等場(chǎng)景。使用戶(hù)可就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶(hù)訪問(wèn)網(wǎng)站的響應(yīng)速度和成功率。

image.png

?

CDN的誕生

image.png

CDN 誕生于二十多年前,為解決內(nèi)容源服務(wù)器和傳輸骨干網(wǎng)絡(luò)壓力過(guò)大的問(wèn)題,在 1995 年,麻省理工學(xué)院教授,互聯(lián)網(wǎng)發(fā)明者之一 Tom Leighton 帶領(lǐng)著研究生 Danny Lewin 和其他幾位頂級(jí)研究人員一起嘗試用數(shù)學(xué)問(wèn)題解決網(wǎng)絡(luò)擁堵問(wèn)題。

他們使用數(shù)學(xué)算法,處理內(nèi)容的動(dòng)態(tài)路由安排,并最終解決了困擾 Internet 使用者的難題。后來(lái),史隆管理學(xué)院的 MBA 學(xué)生 Jonathan Seelig 加入了 Leighton 的隊(duì)伍中,從那以后他們開(kāi)始實(shí)施自己的商業(yè)計(jì)劃,最終于 1998 年 8 月 20 日正式成立公司,命名為 Akamai。Akamai 公司通過(guò)智能化的互聯(lián)網(wǎng)分發(fā),結(jié)束了 “World Wide Wait” 的尷尬局面。

同年 1998 年,中國(guó)第一家 CDN 公司 ChinaCache 成立

?

CDN工作原理

接入CDN

在接入CDN前,當(dāng)我們?cè)L問(wèn)某個(gè)域名,直接拿到第一個(gè)真實(shí)服務(wù)器的IP地址,整個(gè)流程如下(圖有點(diǎn)簡(jiǎn)陋)

image.png

當(dāng)我們需要加速網(wǎng)站時(shí),通過(guò)向運(yùn)營(yíng)商注冊(cè)自己加速域名,源站域名,然后進(jìn)入到自己域名的DNS配置信息,將 A 記錄修改成 CNAME 記錄即可。阿里云加速申請(qǐng)參考如下:

image.png

CDN訪問(wèn)過(guò)程

image.png
  • 1、用戶(hù)訪問(wèn)圖片內(nèi)容,先經(jīng)過(guò) 本地DNS 解析,如果 LDNS 命中,直接返回給用戶(hù)。

  • 2、LDNS MISS,轉(zhuǎn)發(fā) 授權(quán)DNS 查詢(xún)

  • 3、返回域名 CNAME picwebws.pstatp.com.wsglb0.com. 對(duì)應(yīng)IP地址(實(shí)際就是DNS調(diào)度系統(tǒng)的ip地址)

  • 4、域名解析請(qǐng)求發(fā)送至DNS調(diào)度系統(tǒng),DNS調(diào)度系統(tǒng)為請(qǐng)求分配最佳節(jié)點(diǎn)IP地址。

  • 5、返回的解析IP地址

  • 6、用戶(hù)向緩存服務(wù)器發(fā)起請(qǐng)求,緩存服務(wù)器響應(yīng)用戶(hù)請(qǐng)求,將用戶(hù)所需內(nèi)容傳送到用戶(hù)終端。

圖:華為云全站加速示意圖

?

CDN解決了什么問(wèn)題

骨干網(wǎng)壓力過(guò)大

Tom Leighton在 1995 年, 帶領(lǐng)團(tuán)隊(duì)嘗試用數(shù)學(xué)問(wèn)題解決網(wǎng)絡(luò)擁堵問(wèn)題,從而解決骨干網(wǎng)絡(luò)壓力過(guò)大的問(wèn)題。由于上網(wǎng)沖浪 的少年越來(lái)越多,造成骨干網(wǎng)的核心節(jié)點(diǎn)流量吞吐不足以支撐互聯(lián)網(wǎng)用戶(hù)的增長(zhǎng),通過(guò)CDN可以避免用戶(hù)流量流經(jīng)骨干網(wǎng)。

骨干網(wǎng)是一個(gè)全球性的局域網(wǎng),一級(jí)互聯(lián)網(wǎng)服務(wù)提供商(ISP)將其高速光纖網(wǎng)絡(luò)連接在一起,形成互聯(lián)網(wǎng)的骨干網(wǎng),實(shí)現(xiàn)在不同地理區(qū)域之間高效地傳輸流量。

1、局域網(wǎng)

局域網(wǎng)(Local Area Network,LAN)是指在某一區(qū)域內(nèi)由多臺(tái)計(jì)算機(jī)互聯(lián)成的計(jì)算機(jī)組,比如:在大學(xué)時(shí)期,晚上12點(diǎn)后斷網(wǎng)了,我們?nèi)匀荒軌蛲ㄟ^(guò)路由器開(kāi)黑打CS,魔獸。那就是基于局域網(wǎng)互聯(lián),實(shí)現(xiàn)資料共享與信息之間的通信。

image.png

2、骨干網(wǎng)

這里引用一下中國(guó)電信全網(wǎng)架構(gòu),骨干網(wǎng)可以理解成是一個(gè)全國(guó)性的局域網(wǎng),通過(guò)核心節(jié)點(diǎn)的流量互通,實(shí)現(xiàn)全網(wǎng)網(wǎng)絡(luò)的互通。這也是為什么我們稱(chēng)為互聯(lián)網(wǎng) 的原因。

image.png

北京、上海、廣州,是ChinaNet的超級(jí)核心。除了超級(jí)核心之外,ChinaNet還有天津、西安、南京、杭州、武漢、成都等普通核心。

image.png

三公里之 middlemile

通常網(wǎng)絡(luò)訪問(wèn)中會(huì)有"三公里"路程

  • 第一公里為:源站到ISP接入點(diǎn)

  • 第二公里為:源站ISP接入點(diǎn)到訪問(wèn)用戶(hù)的ISP接入點(diǎn)

  • 第三公里(最后一公里)為:用戶(hù)ISP接入點(diǎn)到用戶(hù)客戶(hù)端

CDN網(wǎng)絡(luò)層主要用來(lái)加速第二公里(middlemile),

在 CDN 的基礎(chǔ)架構(gòu)中,通常使用兩級(jí) server 做加速:

  • L1(下層):距離用戶(hù)(或俗稱(chēng)網(wǎng)民)越近越好,通常用于緩存那些可緩存的靜態(tài)數(shù)據(jù),稱(chēng)之為 lastmile(最后一公里)。

  • L2(上層):距離源站越近越好,稱(chēng)之為 firstmile(第一公里),當(dāng) L1 無(wú)法命中緩存,或內(nèi)容不可緩存時(shí),請(qǐng)求會(huì)通過(guò) L1 透?jìng)鹘o L2,若 L2 仍然沒(méi)有命中緩存或內(nèi)容不可緩存,則會(huì)繼續(xù)透?jìng)鹘o L2 的 upstream(有可能是源站,也有可能是 L3),同時(shí) L2 還可以做流量、請(qǐng)求數(shù)的量級(jí)收斂,減少回源量(如果可緩存),降低源站壓力。

  • L1 和 L2 之間的部分,是 CDN 的 ”內(nèi)部網(wǎng)絡(luò)“,稱(chēng)之為 middlemile(中間一公里)。

image.png

?

CDN的組成

全局負(fù)載均衡系統(tǒng) GLB(Global Load Balance)

image.png
  • 當(dāng)用戶(hù)訪問(wèn)加入CDN服務(wù)的網(wǎng)站時(shí),域名解析請(qǐng)求將最終由 “智能調(diào)度DNS”負(fù)責(zé)處理。

  • 它通過(guò)一組預(yù)先定義好的策略,將當(dāng)時(shí)最接近用戶(hù)的節(jié)點(diǎn)地址提供給用戶(hù),使用戶(hù)可以得到快速的服務(wù)。

  • 同時(shí)它需要與分布在各地的CDN節(jié)點(diǎn)保持通信,跟蹤各節(jié)點(diǎn)的健康狀態(tài)、容量等信息,確保將用戶(hù)的請(qǐng)求分配到就近可用的節(jié)點(diǎn)上.

緩存服務(wù)器

緩存服務(wù)器主要的功能就是緩存熱點(diǎn)數(shù)據(jù),數(shù)據(jù)類(lèi)型包括:靜態(tài)資源(html,js,css等),多媒體資源(img,mp3,mp4等),以及動(dòng)態(tài)數(shù)據(jù)(邊緣渲染)等。

眾所周知耳熟能詳?shù)呐c CDN 有關(guān)的開(kāi)源軟件有:

  • Squid

  • Varnish

  • Nginx

  • OpenResty

  • ATS

  • HAProxy

具體對(duì)比可參考:https://blog.csdn.net/joeyon1985/article/details/46573281

CDN的分層架構(gòu)

image.png

源站

源站指發(fā)布內(nèi)容的原始站點(diǎn)。添加、刪除和更改網(wǎng)站的文件,都是在源站上進(jìn)行的;另外緩存服務(wù)器所抓取的對(duì)象也全部來(lái)自于源站。

?

CDN 調(diào)度策略

DNS 調(diào)度

基于請(qǐng)求端 local DNS 的出口 IP 歸屬地以及運(yùn)營(yíng)商的 DNS 調(diào)度。

DNS 調(diào)度的問(wèn)題:

  • DNS 緩存時(shí)間在 TTL 過(guò)期前是不會(huì)刷新的, 這樣會(huì)導(dǎo)致節(jié)點(diǎn)異常的時(shí)候自動(dòng)調(diào)度延時(shí)很大,會(huì)直接影響線上業(yè)務(wù)訪問(wèn)。

  • 大量的 local DNS 不支持 EDNS 協(xié)議,拿不到客戶(hù)的真實(shí)IP,CDN 絕大多數(shù)時(shí)候只能通過(guò)local DNS IP來(lái)做決策,經(jīng)常會(huì)出現(xiàn)跨區(qū)域調(diào)度的情況。

HTTP DNS 調(diào)度

客戶(hù)端請(qǐng)求固定的 HTTP DNS 地址,根據(jù)返回獲取解析結(jié)果。可以提高解析的準(zhǔn)確性(不像DNS調(diào)度,只能通過(guò)local DNS IP來(lái)做決策),能很好的避免劫持等問(wèn)題。

當(dāng)然這種模式也有一些問(wèn)題,例如客戶(hù)端每次加載URL都可能產(chǎn)生一次HTTP DNS查詢(xún),這就對(duì)性能和網(wǎng)絡(luò)接入要求很高。

302調(diào)度

基于客戶(hù)端 IP 和 302 調(diào)度集群進(jìn)行實(shí)時(shí)的流量調(diào)度。

我們來(lái)看一個(gè)例子:

  • 訪問(wèn) URL 鏈接后,此時(shí)請(qǐng)求到了調(diào)度群集上,我們能拿到的客戶(hù)端信息有 客戶(hù)端的出口IP(絕大多情況下是相同的),接下來(lái)算法和基于 DNS 的調(diào)度可以是一樣的,只是判斷依據(jù)由 local DNS 出口 ip 變成了客戶(hù)端的出口IP。

  • 瀏覽器收到302回應(yīng),跟隨 Location 中的 URL,繼續(xù)發(fā)起 http 請(qǐng)求,這次請(qǐng)求的目標(biāo) IP 是CDN 邊緣節(jié)點(diǎn),CDN節(jié)點(diǎn)會(huì)響應(yīng)實(shí)際的文件內(nèi)容。

  • 302 調(diào)度的優(yōu)勢(shì):

    • 實(shí)時(shí)調(diào)度,因?yàn)闆](méi)有 local DNS 緩存的,適合 CDN 的削峰處理,對(duì)于成本控制意義重大;

    • 準(zhǔn)確性高,直接獲取客戶(hù)端出口 IP 進(jìn)行調(diào)度。

    302 調(diào)度的劣勢(shì):

    • 每次都要跳轉(zhuǎn),對(duì)于延時(shí)敏感的業(yè)務(wù)不友好。一般只適用于大文件。

    AnyCast BGP路由調(diào)度

    基于 BGP AnyCast 路由策略,只提供極少的對(duì)外 IP,路由策略可以很快的調(diào)整。

    目前 AWS CloudFront、CloudFlare 都使用了這種方式,在路由層面進(jìn)行調(diào)度。

    這種方式可以很好地抵御 DDOS 攻擊,降低網(wǎng)絡(luò)擁塞。

    當(dāng)然這種方式的成本和方案設(shè)計(jì)都比較復(fù)雜,所以國(guó)內(nèi)的 CDN 目前還都是用 UniCast 的方式。

    ?

    一些概念

    CDN運(yùn)作原理

    本地緩存的數(shù)據(jù),通過(guò)key-value 的形式,將url 和本地緩存進(jìn)行映射,存儲(chǔ)結(jié)構(gòu)與 Map相似,采用 hash+鏈表形式進(jìn)行緩存。

    image.png

    CDN命中率

    衡量我們CDN服務(wù)質(zhì)量的一個(gè)核心標(biāo)準(zhǔn),當(dāng)用戶(hù)訪問(wèn)的資源恰好在緩存系統(tǒng)里,可以直接返回給用戶(hù),說(shuō)明CDN命中;如果CDN緩存中,沒(méi)有命中資源,那么會(huì)觸發(fā)回源動(dòng)作。

    CDN回源

    當(dāng)CDN本地緩存沒(méi)有命中時(shí),觸發(fā)回源動(dòng)作,

    • 一級(jí)緩存 訪問(wèn)二級(jí)緩存是否有相關(guān)數(shù)據(jù),如果有,返回一級(jí)緩存。

    • 二級(jí)緩存 Miss,觸發(fā) 二級(jí)緩存 回源請(qǐng)求,請(qǐng)求源站對(duì)應(yīng)數(shù)據(jù)。獲取結(jié)果后,緩存到本地緩存,返回?cái)?shù)據(jù)到一級(jí)緩存。

    • 一級(jí)緩存 獲取數(shù)據(jù),緩存本地后,返回給用戶(hù)。

    CDN預(yù)熱數(shù)據(jù)

    上面說(shuō)的訪問(wèn)模式,都是基于Pull模式,由用戶(hù)決策哪部分熱點(diǎn)數(shù)據(jù)會(huì)最終存留在CDN緩存中;對(duì)于大促場(chǎng)景,我們往往需要預(yù)先將活動(dòng)相關(guān)資源預(yù)熱 到 邊緣節(jié)點(diǎn)(L1),避免大促開(kāi)啟后,大量用戶(hù)訪問(wèn),造成源站壓力過(guò)大。這時(shí)候采用的是 Push模式。

    CDN的特點(diǎn)總結(jié)

    1、資源訪問(wèn)加速: 本地Cache加速,提高了企業(yè)站點(diǎn)(尤其含有大量圖片和靜態(tài)頁(yè)面站點(diǎn))的訪問(wèn)速度,并大大提高以上性質(zhì)站點(diǎn)的穩(wěn)定性

    2、消除運(yùn)營(yíng)商間網(wǎng)絡(luò)互聯(lián)的瓶頸問(wèn)題: 鏡像服務(wù)消除了不同運(yùn)營(yíng)商之間互聯(lián)的瓶頸造成的影響,實(shí)現(xiàn)了跨運(yùn)營(yíng)商的網(wǎng)絡(luò)加速,保證不同網(wǎng)絡(luò)中的用戶(hù)都能得到良好的訪問(wèn)質(zhì)量。

    3、遠(yuǎn)程加速: 遠(yuǎn)程訪問(wèn)用戶(hù)根據(jù)DNS負(fù)載均衡技術(shù) 智能自動(dòng)選擇Cache服務(wù)器,選擇最快的Cache服務(wù)器,加快遠(yuǎn)程訪問(wèn)的速度

    4、帶寬優(yōu)化: 自動(dòng)生成服務(wù)器的遠(yuǎn)程Mirror(鏡像)cache服務(wù)器,遠(yuǎn)程用戶(hù)訪問(wèn)時(shí)從cache服務(wù)器上讀取數(shù)據(jù),減少遠(yuǎn)程訪問(wèn)的帶寬、分擔(dān)網(wǎng)絡(luò)流量、減輕原站點(diǎn)WEB服務(wù)器負(fù)載等功能。

    5、集群抗攻擊: 廣泛分布的CDN節(jié)點(diǎn)加上節(jié)點(diǎn)之間的智能冗余機(jī)制,可以有效地預(yù)防黑客入侵以及降低各種D.D.o.S攻擊對(duì)網(wǎng)站的影響,同時(shí)保證較好的服務(wù)質(zhì)量 。

    有道無(wú)術(shù),術(shù)可成;有術(shù)無(wú)道,止于術(shù)

    歡迎大家關(guān)注Java之道公眾號(hào)

    好文章,我在看??

    總結(jié)

    以上是生活随笔為你收集整理的为了搞清楚CDN的原理,我头都秃了...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。