成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

網(wǎng)絡(luò)協(xié)議 18 - CDN:家門口的小賣鋪

GeekQiaQia / 1636人閱讀

摘要:支持流媒體協(xié)議。流媒體數(shù)據(jù)量大,如果出現(xiàn)回源,壓力會比較大,所以往往采取主動推送的模式,將熱點(diǎn)數(shù)據(jù)主動推送到邊緣節(jié)點(diǎn)。除此之外,流媒體還有個關(guān)鍵的防盜鏈問題。在服務(wù)端,取出過期時間,和當(dāng)前節(jié)點(diǎn)時間進(jìn)行比較,確認(rèn)請求是否過期。

【前五篇】系列文章傳送門:

網(wǎng)絡(luò)協(xié)議 13 - HTTPS 協(xié)議:加密路上無盡頭

網(wǎng)絡(luò)協(xié)議 14 - 流媒體協(xié)議:要說愛你不容易

網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)議:小種子大學(xué)問

網(wǎng)絡(luò)協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡(luò)世界的地址簿

網(wǎng)絡(luò)協(xié)議 17 - HTTPDNS:私人定制的 DNS 服務(wù)


????到現(xiàn)在為止,我們基本上已經(jīng)了解了網(wǎng)絡(luò)協(xié)議中的大部分常用協(xié)議,對于整個 HTTP 請求流程也較為熟悉了。從無到有后,我們就要考慮如何優(yōu)化“有”這個過程,也就是我們常見的請求優(yōu)化。而現(xiàn)在的技術(shù)棧中,CDN 是最常用的一種方式。

????在了解 CDN 前,我們可以先了解下現(xiàn)代社會的物流配送。

????例如我們?nèi)ル娚叹W(wǎng)站下單買東西,這個東西一定要從電商總部的中心倉庫送過來嗎?在電商剛興起的時候,所有的配送都是從中心倉庫發(fā)貨,所以買家可能要很久才能收到貨。但是后來電商網(wǎng)站的物流系統(tǒng)學(xué)聰明了,他們在全國各地建立了很多倉庫,而不是只有總部的中心倉庫才可以發(fā)貨。

????電商網(wǎng)站根據(jù)統(tǒng)計大概知道,北京、上海、廣州、深圳、杭州等地,每天能夠賣出去多少書籍、紙巾、包、電器等存放期較長的商品,就將這些商品分布存放在各地倉庫中,客戶一下單,就從臨近的倉庫發(fā)貨,大大減少了運(yùn)輸時間,提高了用戶體驗。

????同樣的,互聯(lián)網(wǎng)也借鑒了“就近配送”這個思路。

CDN 就近配送

????全球有那么多的數(shù)據(jù)中心,無論在哪里上網(wǎng),臨近不遠(yuǎn)的地方基本上都有數(shù)據(jù)中心??梢栽诿總€數(shù)據(jù)中心里部署幾臺機(jī)器,形成一個緩存集群來緩存部分熱數(shù)據(jù),這樣用戶訪問數(shù)據(jù)的是,就可以就近訪問了。

????這些分布在各個地方的各個數(shù)據(jù)中心的節(jié)點(diǎn),我們一般稱為邊緣節(jié)點(diǎn)

????由于邊緣節(jié)點(diǎn)數(shù)目比較多,但是每個集群規(guī)模比較小,不可能緩存下來所有東西,因而可能無法命中,這樣就會在邊緣節(jié)點(diǎn)之上,形成了區(qū)域節(jié)點(diǎn)

????區(qū)域節(jié)點(diǎn)規(guī)模較大,緩存的數(shù)據(jù)也較多,命中的概率也就更大。而在區(qū)域節(jié)點(diǎn)之上是中心節(jié)點(diǎn),規(guī)模更大,緩存數(shù)據(jù)更多。

????就這樣,在這樣一層層的節(jié)點(diǎn)中緩存數(shù)據(jù),提高響應(yīng)速度。但是所有的節(jié)點(diǎn)都沒有緩存數(shù)據(jù),就只有進(jìn)行回源網(wǎng)站訪問了。

????如上圖,就是 CDN 的分發(fā)系統(tǒng)的架構(gòu)。CDN 系統(tǒng)的緩存,是一層層的,能不訪問源數(shù)據(jù),就不訪問。這也是電商網(wǎng)站物流系統(tǒng)的思路,廣州找不到,找華南局,華南局找不到,再找南方局。

????有了這個分發(fā)系統(tǒng)之后,客戶端如何找到相應(yīng)的邊緣節(jié)點(diǎn)進(jìn)行訪問呢?

????還記得咱們之前了解的基于 DNS 的全局負(fù)載均衡嗎?這個負(fù)載均衡主要用來選擇一個就近的相同運(yùn)營商的服務(wù)器進(jìn)行訪問。

????同樣的,CDN 分發(fā)網(wǎng)絡(luò)也可以用相同的思路選擇最合適的邊緣節(jié)點(diǎn)。

????如上圖,CDN 的負(fù)載均衡流程圖。
1)沒有 CDN 的情況(圖中虛線部分)。用戶向瀏覽器輸入 www.web.com 這個域名,客戶端訪問本地 DNS 服務(wù)器的時候,如果本地 DNS 服務(wù)器有緩存,則返回網(wǎng)站的地址。如果沒有,遞歸查詢到網(wǎng)站的權(quán)威 DNS 服務(wù)器,這個權(quán)威 DNS 服務(wù)器是負(fù)責(zé) web.com 的,它會返回網(wǎng)站的 IP 地址。本地 DNS 服務(wù)器緩存下 IP 地址,將 IP 地址返回,然后客戶端直接訪問這個 IP 地址,就訪問到了網(wǎng)站。

2)有 CDN 的情況(圖中實線部分)。此時,在 web.com 這個權(quán)威 DNS 服務(wù)器上,會設(shè)置一個 CNAME 別名,指向另外一個域名 www.web.cdn.com,返回給本地 DNS 服務(wù)器。

????當(dāng)本地 DNS 服務(wù)器拿到這個新的域名時,需要繼續(xù)解析這個新的域名。這個時候,再訪問的就不是 web.com 這個權(quán)威 DNS 服務(wù)器了,而是 web.cdn.com 的權(quán)威 DNS 服務(wù)器,這是 CDN 自己的權(quán)威 DNS 服務(wù)器,在這個服務(wù)器上,還是會設(shè)置一個 CNAME,指向另外一個域名,也就是 CDN 網(wǎng)絡(luò)的全局負(fù)載均衡器。

????接下來,本地 DNS 服務(wù)器去請求 CDN 的全局負(fù)載均衡器解析域名。全局負(fù)載均衡器會為用戶選擇一臺合適的緩存服務(wù)器提供服務(wù),選擇的依據(jù)包括:

根據(jù)用戶 IP 地址,判斷哪一臺服務(wù)器距用戶最近;

用戶所處的運(yùn)營商;

根據(jù)用戶所請求的 URL 中攜帶的內(nèi)容名詞,判斷哪一臺服務(wù)器上有用戶所需的內(nèi)容;

查詢各個服務(wù)器當(dāng)前的負(fù)載情況,判斷哪一臺服務(wù)器尚有服務(wù)能力。

????基于以上這些條件,進(jìn)行綜合分析之后,全局負(fù)載均衡器會返回一臺緩存服務(wù)器的 IP 地址。

????本地 DNS 服務(wù)器緩存這個 IP 地址,然后將 IP 返回給客戶端,客戶端去訪問這個邊緣節(jié)點(diǎn),下載資源。

????緩存服務(wù)器響應(yīng)用戶請求,將用戶所需內(nèi)容傳送給用戶。如果這臺緩存服務(wù)器上沒有用戶想要的內(nèi)容,那么這臺服務(wù)器就要向它的上一級緩存服務(wù)器請求內(nèi)容,直至追溯到網(wǎng)站的源服務(wù)器,將內(nèi)容拉到本地。

CDN 緩存內(nèi)容

????保質(zhì)期長的日用品因為不容易過期,因此比較容易緩存。同樣的,互聯(lián)網(wǎng)中的靜態(tài)頁面、圖片等,幾乎不怎么改變,所以也適合緩存。而像生鮮之類的保存時間較短的,對應(yīng)互聯(lián)網(wǎng)中的動態(tài)資源,就需要用到動態(tài) CDN 。

靜態(tài)資源緩存

????還記得上圖這個接入層緩存的架構(gòu)嗎?在進(jìn)入數(shù)據(jù)中心的時候,我們希望通過最外層接入層的緩存,將大部分靜態(tài)資源的訪問攔在邊緣。而 CDN 則更進(jìn)一步,將這些靜態(tài)資源緩存到離用戶更近的數(shù)據(jù)中心外??傮w來說,就是縮短用戶的“訪問距離”。離客戶越近,客戶訪問性能越好,時延越低。

流媒體 CDN

????在靜態(tài)內(nèi)容中,流媒體也大量使用了 CDN。

????CDN 支持流媒體協(xié)議。例如前面講過的 RTMP 協(xié)議。在很多情況下,這相當(dāng)于一個代理,從上一級緩存讀取內(nèi)容,轉(zhuǎn)發(fā)給用戶。由于流媒體往往是連續(xù)的,因而可以進(jìn)行預(yù)先緩存的策略,也可以預(yù)先推送到用戶的客戶端。

????對于靜態(tài)頁面來講,內(nèi)容的分發(fā)往往采取拉取的方式。也即,當(dāng)發(fā)現(xiàn)緩存未命中的是,再去上一級進(jìn)行拉取。

????這個方式對于流媒體就不合適了。流媒體數(shù)據(jù)量大,如果出現(xiàn)回源,壓力會比較大,所以往往采取主動推送的模式,將熱點(diǎn)數(shù)據(jù)主動推送到邊緣節(jié)點(diǎn)。

????對于流媒體來講,很多 CDN 還提供預(yù)處理服務(wù)。也就是在文件分發(fā)之前,進(jìn)行一定的處理。例如將視頻轉(zhuǎn)換成不同的碼流,以適應(yīng)不同的網(wǎng)絡(luò)帶寬的用戶需求。再如對視頻進(jìn)行分片,降低存儲壓力,也使得客戶端可以選擇使用不同的碼率加載不同的分片。這就是我們常見的,超清、標(biāo)清、流暢等。

????除此之外,流媒體 CDN 還有個關(guān)鍵的防盜鏈問題。因為視頻要花大價錢買版權(quán),如果流媒體被其他網(wǎng)站盜走,在其他網(wǎng)站的播放,那損失就大了。

????對于防盜鏈問題,最常用也最簡單的方法就是利用 HTTP 頭的 refer 字段。當(dāng)瀏覽器發(fā)送請求的時候,一般會帶上 refer。告訴服務(wù)器是從哪個頁面鏈接過來的,服務(wù)器基于此可以獲得一些信息用于處理。如果 refer 信息不是來自本站,就阻止訪問或者跳到其它鏈接。

????refer 的機(jī)制相對比較容易破解,所以還需要其它的機(jī)制配合。

????一種常用的機(jī)制是時間戳防盜鏈。使用 CDN 的管理員可以在配置界面上,和 CDN 廠商約定一個加密字符串。

????客戶端訪問時,取出當(dāng)前的時間戳、要訪問的資源極其路徑,聯(lián)通加密字符串進(jìn)行前面算法得到一個字符串,然后生成一個下載鏈接,帶上這個前面字符串和截止時間戳去訪問 CDN。

????在服務(wù)端,取出過期時間,和當(dāng)前 CDN 節(jié)點(diǎn)時間進(jìn)行比較,確認(rèn)請求是否過期。然后 CDN 服務(wù)端根據(jù)請求的資源及路徑、時間戳、和約定的加密字符串進(jìn)行簽名。只有簽名和客戶端發(fā)送的一致,才會將資源返回給客戶。

動態(tài)資源緩存

????對于動態(tài)資源,用到動態(tài) CDN。動態(tài) CDN 主要有兩種模式:
1)“生鮮超市模式”,也就是邊緣計算模式

????既然數(shù)據(jù)是動態(tài)生成的,所以數(shù)據(jù)的邏輯計算和存儲,也相應(yīng)的放在邊緣的節(jié)點(diǎn)。其中定時從源數(shù)據(jù)那里同步存儲的數(shù)據(jù),然后在邊緣節(jié)點(diǎn)進(jìn)行計算得到結(jié)果。

????這種方式很像現(xiàn)在的生鮮超市。新鮮的海鮮大餐是動態(tài)的,很難事先做好緩存,因而將生鮮超市放在你家旁邊,既能夠送貨上門,也能夠現(xiàn)場烹飪。這就是邊緣計算的一種體現(xiàn)。

2)“冷鏈運(yùn)輸模式”,也就是路徑優(yōu)化模式。數(shù)據(jù)不是在邊緣計算生成的,而是在源站生成的,但是數(shù)據(jù)的下發(fā)則可以通過 CDN 的網(wǎng)絡(luò),對路徑進(jìn)行優(yōu)化。

????因為 CDN 節(jié)點(diǎn)較多,能夠找到離源站很近的邊緣節(jié)點(diǎn),也能找到離用戶很近的邊緣節(jié)點(diǎn)。中間的鏈路完全由 CDN 來規(guī)劃,選擇一個更加可靠的路徑,使用類似專線的方式進(jìn)行訪問。

????除此之外,這些資源進(jìn)行傳輸?shù)臅r候,由于 TCP 的流量控制和擁塞控制,可以在 CDN 加速網(wǎng)絡(luò)中調(diào)整 TCP 的參數(shù),使得 TC 可以更加激進(jìn)的傳輸數(shù)據(jù)。

????所有這些手段就像冷鏈傳輸,優(yōu)化整個物流運(yùn)輸,全程冷凍高速運(yùn)輸。不管是生鮮從你家旁邊超市送過去,還是從產(chǎn)地運(yùn)送,保證到你家是新鮮的。

小結(jié)

CDN 和電商系統(tǒng)的分布式倉儲系統(tǒng)一樣,分為中心節(jié)點(diǎn)、區(qū)域節(jié)點(diǎn)、邊緣節(jié)點(diǎn),從而將數(shù)據(jù)緩存在離用戶最近的位置。

CDN 最擅長的緩存是緩存靜態(tài)數(shù)據(jù)。除此之外還可以緩存流媒體數(shù)據(jù)。這時候要注意防盜鏈問題。它也支持動態(tài)數(shù)據(jù)的緩存,一種是邊緣計算,另一種是鏈路優(yōu)化。

參考:

What is a CDN?;

[維基百科 - Content delivery network

](https://en.wikipedia.org/wiki...;

劉超 - 趣談網(wǎng)絡(luò)協(xié)議系列課;

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/62057.html

相關(guān)文章

  • 網(wǎng)絡(luò)協(xié)議 18 - CDN門口賣鋪

    摘要:支持流媒體協(xié)議。流媒體數(shù)據(jù)量大,如果出現(xiàn)回源,壓力會比較大,所以往往采取主動推送的模式,將熱點(diǎn)數(shù)據(jù)主動推送到邊緣節(jié)點(diǎn)。除此之外,流媒體還有個關(guān)鍵的防盜鏈問題。在服務(wù)端,取出過期時間,和當(dāng)前節(jié)點(diǎn)時間進(jìn)行比較,確認(rèn)請求是否過期。 【前五篇】系列文章傳送門: 網(wǎng)絡(luò)協(xié)議 13 - HTTPS 協(xié)議:加密路上無盡頭 網(wǎng)絡(luò)協(xié)議 14 - 流媒體協(xié)議:要說愛你不容易 網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)...

    econi 評論0 收藏0
  • 網(wǎng)絡(luò)協(xié)議 20 - RPC 協(xié)議(上)- 基于XMLSOAP協(xié)議

    摘要:傳輸協(xié)議問題我們先解決第一個,傳輸協(xié)議的問題。信封里面的信分抬頭和正文板栗燜雞協(xié)議我們學(xué)過,這個請求使用方法,發(fā)送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經(jīng)寫明了。 【前五篇】系列文章傳送門: 網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)議:小種子大學(xué)問 網(wǎng)絡(luò)協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡(luò)世界的地址簿 網(wǎng)絡(luò)協(xié)議 17 - HTTPDN...

    Caicloud 評論0 收藏0
  • 網(wǎng)絡(luò)協(xié)議 20 - RPC 協(xié)議(上)- 基于XMLSOAP協(xié)議

    摘要:傳輸協(xié)議問題我們先解決第一個,傳輸協(xié)議的問題。信封里面的信分抬頭和正文板栗燜雞協(xié)議我們學(xué)過,這個請求使用方法,發(fā)送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經(jīng)寫明了。 【前五篇】系列文章傳送門: 網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)議:小種子大學(xué)問 網(wǎng)絡(luò)協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡(luò)世界的地址簿 網(wǎng)絡(luò)協(xié)議 17 - HTTPDN...

    asoren 評論0 收藏0

發(fā)表評論

0條評論

GeekQiaQia

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<