極客時間 資料中心 CDN學習筆記

2021-09-25 06:47:34 字數 1645 閱讀 9315

分布在各個地方的各個資料中心的節點,就稱為邊緣節點。

在沒有 cdn 的情況下,使用者向瀏覽器輸入 www.web.com 這個網域名稱,客戶端訪問本地 dns伺服器的時候,如果本地 dns 伺服器有快取,則返回**的位址;如果沒有,遞迴查詢到**的權威 dns 伺服器,這個權威 dns 伺服器是負責 web.com 的,它會返回**的 ip 位址。本地 dns 伺服器快取下 ip 位址,將 ip 位址返回,然後客戶端直接訪問這個 ip 位址,就訪問到了這個**。

然而有了 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 位址。

還記得這個接入層快取的架構嗎?在進入資料中心的時候,我們希望通過最外層接入層的快取,將大部分靜態資源的訪問攔在邊緣。而 cdn 則更進一步,將這些靜態資源快取到離使用者更近的資料中心外。越接近客戶,訪問效能越好,時延越低。

但是靜態內容中,有一種特殊的內容,也大量使用了 cdn,這個就是前面講過的流**。

cdn 支援流**協議,例如前面講過的 rtmp 協議。在很多情況下,這相當於乙個**,從上一級快取讀取內容,**給使用者。由於流**往往是連續的,因而可以進行預先快取的策略,也可以預先推送到使用者的客戶端。

對於靜態頁面來講,內容的分發往往採取拉取的方式,也即當發現未命中的時候,再去上一級進行拉取。但是,流**資料量大,如果出現回源,壓力會比較大,所以往往採取主動推送的模式,將熱點資料主動推送到邊緣節點。

分片是什麼鬼??
最常用也最簡單的方法就是http 頭的 refer 字段, 當瀏覽器傳送請求的時候,一般會帶上referer,告訴伺服器是從哪個頁面鏈結過來的,伺服器基於此可以獲得一些資訊用於處理。如果 refer 資訊不是來自本站,就阻止訪問或者跳到其它鏈結。

refer 的機制相對比較容易破解,所以還需要配合其他的機制。

一種常用的機制是時間戳防盜煉。使用 cdn 的管理員可以在配置介面上,和 cdn 廠商約定乙個加密字串。

在 cdn 服務端,根據取出過期時間,和當前 cdn 節點時間進行比較,確認請求是否過期。然後 cdn 服務端有了資源及路徑,時間戳,以及約定的加密字串,根據相同的簽名演算法計算簽名,如果匹配則一致,訪問合法,才會將資源返回給客戶。

對於常用的 tcp 連線,在公網上傳輸的時候經常會丟資料,導致 tcp 的視窗始終很小,傳送速度上不去。根據前面的 tcp 流量控制和擁塞控制的原理,在 cdn 加速網路中可以調整 tcp 的引數,使得 tcp 可以更加激進地傳輸資料。

可以通過多個請求復用乙個連線,保證每次動態請求到達時。連線都已經建立了,不必臨時三次握手或者建立過多的連線,增加伺服器的壓力。另外,可以通過對傳輸資料進行壓縮,增加傳輸效率。

資料中心 網路 學習筆記

相當於核心交換機。葉脊之間通過 ecmp 動態選擇多條路徑。leaf交換機直接連線物理伺服器,南北流量可以不用直接從脊交換機發出,而是直接在leaf上對接邊界閘道器。spine leaf 組成pod,pod內是2層網路 bonding的源 分析 3.1 bond模式 bonging模組支援兩種模式的...

極客時間《趣談網路》學習筆記

1.網路程式是如何工作的 從上面的圖中我們可以看出,當我們在電腦上瀏覽網頁的時候,我們的瀏覽器會解析遠端伺服器發來的頁面資訊,解析流程大致是這樣的 4 應用層 瀏覽器取下http頭,然後將網頁內容進行展示。由此我們完成,從網路中獲取報文到網頁內容展示的過程。當我們需要操作頁面時,該流程正好是接受報文...

git 極客時間學習筆記

變更的過程 工作區 1 暫存區 2 commit 發生在 1 工作區相對於暫存區的變化。使用git diff,可以檢視區別 使用git checkout,可以用暫存區恢復工作區 發生在 2 暫存區相對於commit的變化。使用git diff cached,可以檢視區別 使用git reset he...