摘要:支持流媒體協議。流媒體數據量大,如果出現回源,壓力會比較大,所以往往采取主動推送的模式,將熱點數據主動推送到邊緣節點。除此之外,流媒體還有個關鍵的防盜鏈問題。在服務端,取出過期時間,和當前節點時間進行比較,確認請求是否過期。
【前五篇】系列文章傳送門:
網絡協議 13 - HTTPS 協議:加密路上無盡頭
網絡協議 14 - 流媒體協議:要說愛你不容易
網絡協議 15 - P2P 協議:小種子大學問
網絡協議 16 - DNS 協議:網絡世界的地址簿
網絡協議 17 - HTTPDNS:私人定制的 DNS 服務
????到現在為止,我們基本上已經了解了網絡協議中的大部分常用協議,對于整個 HTTP 請求流程也較為熟悉了。從無到有后,我們就要考慮如何優化“有”這個過程,也就是我們常見的請求優化。而現在的技術棧中,CDN 是最常用的一種方式。
????在了解 CDN 前,我們可以先了解下現代社會的物流配送。
????例如我們去電商網站下單買東西,這個東西一定要從電商總部的中心倉庫送過來嗎?在電商剛興起的時候,所有的配送都是從中心倉庫發貨,所以買家可能要很久才能收到貨。但是后來電商網站的物流系統學聰明了,他們在全國各地建立了很多倉庫,而不是只有總部的中心倉庫才可以發貨。
????電商網站根據統計大概知道,北京、上海、廣州、深圳、杭州等地,每天能夠賣出去多少書籍、紙巾、包、電器等存放期較長的商品,就將這些商品分布存放在各地倉庫中,客戶一下單,就從臨近的倉庫發貨,大大減少了運輸時間,提高了用戶體驗。
????同樣的,互聯網也借鑒了“就近配送”這個思路。
CDN 就近配送????全球有那么多的數據中心,無論在哪里上網,臨近不遠的地方基本上都有數據中心。可以在每個數據中心里部署幾臺機器,形成一個緩存集群來緩存部分熱數據,這樣用戶訪問數據的是,就可以就近訪問了。
????這些分布在各個地方的各個數據中心的節點,我們一般稱為邊緣節點。
????由于邊緣節點數目比較多,但是每個集群規模比較小,不可能緩存下來所有東西,因而可能無法命中,這樣就會在邊緣節點之上,形成了區域節點。
????區域節點規模較大,緩存的數據也較多,命中的概率也就更大。而在區域節點之上是中心節點,規模更大,緩存數據更多。
????就這樣,在這樣一層層的節點中緩存數據,提高響應速度。但是所有的節點都沒有緩存數據,就只有進行回源網站訪問了。
????如上圖,就是 CDN 的分發系統的架構。CDN 系統的緩存,是一層層的,能不訪問源數據,就不訪問。這也是電商網站物流系統的思路,廣州找不到,找華南局,華南局找不到,再找南方局。
????有了這個分發系統之后,客戶端如何找到相應的邊緣節點進行訪問呢?
????還記得咱們之前了解的基于 DNS 的全局負載均衡嗎?這個負載均衡主要用來選擇一個就近的相同運營商的服務器進行訪問。
????同樣的,CDN 分發網絡也可以用相同的思路選擇最合適的邊緣節點。
????如上圖,CDN 的負載均衡流程圖。
1)沒有 CDN 的情況(圖中虛線部分)。用戶向瀏覽器輸入 www.web.com 這個域名,客戶端訪問本地 DNS 服務器的時候,如果本地 DNS 服務器有緩存,則返回網站的地址。如果沒有,遞歸查詢到網站的權威 DNS 服務器,這個權威 DNS 服務器是負責 web.com 的,它會返回網站的 IP 地址。本地 DNS 服務器緩存下 IP 地址,將 IP 地址返回,然后客戶端直接訪問這個 IP 地址,就訪問到了網站。
2)有 CDN 的情況(圖中實線部分)。此時,在 web.com 這個權威 DNS 服務器上,會設置一個 CNAME 別名,指向另外一個域名 www.web.cdn.com,返回給本地 DNS 服務器。
????當本地 DNS 服務器拿到這個新的域名時,需要繼續解析這個新的域名。這個時候,再訪問的就不是 web.com 這個權威 DNS 服務器了,而是 web.cdn.com 的權威 DNS 服務器,這是 CDN 自己的權威 DNS 服務器,在這個服務器上,還是會設置一個 CNAME,指向另外一個域名,也就是 CDN 網絡的全局負載均衡器。
????接下來,本地 DNS 服務器去請求 CDN 的全局負載均衡器解析域名。全局負載均衡器會為用戶選擇一臺合適的緩存服務器提供服務,選擇的依據包括:
根據用戶 IP 地址,判斷哪一臺服務器距用戶最近;
用戶所處的運營商;
根據用戶所請求的 URL 中攜帶的內容名詞,判斷哪一臺服務器上有用戶所需的內容;
查詢各個服務器當前的負載情況,判斷哪一臺服務器尚有服務能力。
????基于以上這些條件,進行綜合分析之后,全局負載均衡器會返回一臺緩存服務器的 IP 地址。
????本地 DNS 服務器緩存這個 IP 地址,然后將 IP 返回給客戶端,客戶端去訪問這個邊緣節點,下載資源。
????緩存服務器響應用戶請求,將用戶所需內容傳送給用戶。如果這臺緩存服務器上沒有用戶想要的內容,那么這臺服務器就要向它的上一級緩存服務器請求內容,直至追溯到網站的源服務器,將內容拉到本地。
CDN 緩存內容????保質期長的日用品因為不容易過期,因此比較容易緩存。同樣的,互聯網中的靜態頁面、圖片等,幾乎不怎么改變,所以也適合緩存。而像生鮮之類的保存時間較短的,對應互聯網中的動態資源,就需要用到動態 CDN 。
靜態資源緩存????還記得上圖這個接入層緩存的架構嗎?在進入數據中心的時候,我們希望通過最外層接入層的緩存,將大部分靜態資源的訪問攔在邊緣。而 CDN 則更進一步,將這些靜態資源緩存到離用戶更近的數據中心外。總體來說,就是縮短用戶的“訪問距離”。離客戶越近,客戶訪問性能越好,時延越低。
????在靜態內容中,流媒體也大量使用了 CDN。
????CDN 支持流媒體協議。例如前面講過的 RTMP 協議。在很多情況下,這相當于一個代理,從上一級緩存讀取內容,轉發給用戶。由于流媒體往往是連續的,因而可以進行預先緩存的策略,也可以預先推送到用戶的客戶端。
????對于靜態頁面來講,內容的分發往往采取拉取的方式。也即,當發現緩存未命中的是,再去上一級進行拉取。
????這個方式對于流媒體就不合適了。流媒體數據量大,如果出現回源,壓力會比較大,所以往往采取主動推送的模式,將熱點數據主動推送到邊緣節點。
????對于流媒體來講,很多 CDN 還提供預處理服務。也就是在文件分發之前,進行一定的處理。例如將視頻轉換成不同的碼流,以適應不同的網絡帶寬的用戶需求。再如對視頻進行分片,降低存儲壓力,也使得客戶端可以選擇使用不同的碼率加載不同的分片。這就是我們常見的,超清、標清、流暢等。
????除此之外,流媒體 CDN 還有個關鍵的防盜鏈問題。因為視頻要花大價錢買版權,如果流媒體被其他網站盜走,在其他網站的播放,那損失就大了。
????對于防盜鏈問題,最常用也最簡單的方法就是利用 HTTP 頭的 refer 字段。當瀏覽器發送請求的時候,一般會帶上 refer。告訴服務器是從哪個頁面鏈接過來的,服務器基于此可以獲得一些信息用于處理。如果 refer 信息不是來自本站,就阻止訪問或者跳到其它鏈接。
????refer 的機制相對比較容易破解,所以還需要其它的機制配合。
????一種常用的機制是時間戳防盜鏈。使用 CDN 的管理員可以在配置界面上,和 CDN 廠商約定一個加密字符串。
????客戶端訪問時,取出當前的時間戳、要訪問的資源極其路徑,聯通加密字符串進行前面算法得到一個字符串,然后生成一個下載鏈接,帶上這個前面字符串和截止時間戳去訪問 CDN。
????在服務端,取出過期時間,和當前 CDN 節點時間進行比較,確認請求是否過期。然后 CDN 服務端根據請求的資源及路徑、時間戳、和約定的加密字符串進行簽名。只有簽名和客戶端發送的一致,才會將資源返回給客戶。
動態資源緩存????對于動態資源,用到動態 CDN。動態 CDN 主要有兩種模式:
1)“生鮮超市模式”,也就是邊緣計算模式。
????既然數據是動態生成的,所以數據的邏輯計算和存儲,也相應的放在邊緣的節點。其中定時從源數據那里同步存儲的數據,然后在邊緣節點進行計算得到結果。
????這種方式很像現在的生鮮超市。新鮮的海鮮大餐是動態的,很難事先做好緩存,因而將生鮮超市放在你家旁邊,既能夠送貨上門,也能夠現場烹飪。這就是邊緣計算的一種體現。
2)“冷鏈運輸模式”,也就是路徑優化模式。數據不是在邊緣計算生成的,而是在源站生成的,但是數據的下發則可以通過 CDN 的網絡,對路徑進行優化。
????因為 CDN 節點較多,能夠找到離源站很近的邊緣節點,也能找到離用戶很近的邊緣節點。中間的鏈路完全由 CDN 來規劃,選擇一個更加可靠的路徑,使用類似專線的方式進行訪問。
????除此之外,這些資源進行傳輸的時候,由于 TCP 的流量控制和擁塞控制,可以在 CDN 加速網絡中調整 TCP 的參數,使得 TC 可以更加激進的傳輸數據。
????所有這些手段就像冷鏈傳輸,優化整個物流運輸,全程冷凍高速運輸。不管是生鮮從你家旁邊超市送過去,還是從產地運送,保證到你家是新鮮的。
小結CDN 和電商系統的分布式倉儲系統一樣,分為中心節點、區域節點、邊緣節點,從而將數據緩存在離用戶最近的位置。
CDN 最擅長的緩存是緩存靜態數據。除此之外還可以緩存流媒體數據。這時候要注意防盜鏈問題。它也支持動態數據的緩存,一種是邊緣計算,另一種是鏈路優化。
參考:
What is a CDN?;
[維基百科 - Content delivery network
](https://en.wikipedia.org/wiki...;
劉超 - 趣談網絡協議系列課;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29885.html
摘要:支持流媒體協議。流媒體數據量大,如果出現回源,壓力會比較大,所以往往采取主動推送的模式,將熱點數據主動推送到邊緣節點。除此之外,流媒體還有個關鍵的防盜鏈問題。在服務端,取出過期時間,和當前節點時間進行比較,確認請求是否過期。 【前五篇】系列文章傳送門: 網絡協議 13 - HTTPS 協議:加密路上無盡頭 網絡協議 14 - 流媒體協議:要說愛你不容易 網絡協議 15 - P2P 協...
摘要:傳輸協議問題我們先解決第一個,傳輸協議的問題。信封里面的信分抬頭和正文板栗燜雞協議我們學過,這個請求使用方法,發送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經寫明了。 【前五篇】系列文章傳送門: 網絡協議 15 - P2P 協議:小種子大學問 網絡協議 16 - DNS 協議:網絡世界的地址簿 網絡協議 17 - HTTPDN...
摘要:傳輸協議問題我們先解決第一個,傳輸協議的問題。信封里面的信分抬頭和正文板栗燜雞協議我們學過,這個請求使用方法,發送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經寫明了。 【前五篇】系列文章傳送門: 網絡協議 15 - P2P 協議:小種子大學問 網絡協議 16 - DNS 協議:網絡世界的地址簿 網絡協議 17 - HTTPDN...
閱讀 1683·2023-04-25 20:16
閱讀 3836·2021-10-09 09:54
閱讀 2695·2021-09-04 16:40
閱讀 2517·2019-08-30 15:55
閱讀 829·2019-08-29 12:37
閱讀 2733·2019-08-26 13:55
閱讀 2903·2019-08-26 11:42
閱讀 3144·2019-08-23 18:26