CDN详解
CDN簡介
CDN的全稱是 Content Delivery Network,也就是基于內容的轉發網絡。
網絡歸根結底還是通過光纖或者電纜傳播,距離越近,對應的時延肯定越小。
假如一個上海的主機想要訪問北京的主機的一些數據,那么數據肯定要走幾百公里的路程。能不能在上海設置一個代理主機來緩存北京的主機對應的數據,這樣的話,上海的主機直接訪問上海的代理主機而不用在訪問源服務器了,大大的減少了時延。
這就是CDN,基于內容的轉發網絡,通過設置邊緣代理服務器來大大的減少了客戶端請求的網絡時延。
CDN結構
首先說下CDN的結構:
CDN分為中心節點和邊緣節點:
1、中心節點
是CDN的心臟,負責對邊緣節點的狀態進行監控,根據傳輸距離、邊緣節點的負載情況等條件 來為客戶端分配最合適的邊緣節點,做好邊緣節點的負載均衡。
中心節點就是一個智能調度服務器,為不同位置的瀏覽器分發不同的邊緣節點。
2、邊緣節點
邊緣節點是代理服務器,是對源服務器的緩存。
DNS記錄
一個權威DNS服務器有兩種常用的記錄格式:
1、域名和IP地址的映射記錄,記錄類型為 A
2、域名和域名的映射記錄,記錄類型為 CNAME
CNAME有什么用呢?
假如一個公司有好幾百個域名,并且這好幾百個域名都指向通過一個機器。
如果某天這個機器更換了一個IP地址,那么肯定要手動的為這幾百個域名都更改對應的域名,太麻煩了。
CNAME就可以解決這一問題。
1、首先我們設置一個A類型的記錄r1,記錄中存放一個固定的域名name1,指向機器的ip地址。
2、剩余的幾百個域名,我們都使用CNAME,也就是將域名都指向name1.
這樣的話,當機器更改IP地址后,只需要更改r1對應的ip地址就可以了。
當然你可能會說,一個公司怎么可能會有幾百個域名指向一臺機器呢,太夸張了。
這就是歷史原因了,之前計算機資源比較昂貴,多個域名指向一個機器是很正常的。。
另外,CNAME現在多用于CDN配置。一個域名不指向對應的IP地址,而是指向對應的CDN的智能調度服務器域名。
為什么不直接指向CDN的智能調度服務器的IP地址呢?想必讀者都知道原因了吧。如果CDN的更換IP地址了,那么得需要為多少對應的記錄更改IP地址啊。使用CNAME的話,只需要更改CDN的智能調度服務器的域名記錄就可以了。
CDN工作流程
CDN是跟DNS聯合起來工作的。
1、當一個瀏覽器利用DNS去解析網站域名的時候,網站的權威DNS服務器不會直接返回源服務器的IP地址,而是返回一個CNAME記錄。
CNAME中對應著CDN的智能調度服務器的域名,也就是CDN中心節點的域名。
2、瀏覽器通過CDN的DNS服務器來解析智能調度器的域名,獲取中心節點的IP地址。
3、瀏覽器通過IP地址訪問CDN的智能調度服務器,CDN的智能調度服務器會根據以下的規則來返回一個最合適的邊緣節點的IP給瀏覽器。
1、根據源IP地址,判斷出地理位置,返回其最近的邊緣節點 2、看所屬的運營商網絡,返回同一個運營商的邊緣節點 3、看邊緣節點的負載情況,選擇負載比較低的邊緣節點 4、選擇帶寬比較高、響應時間比較短的邊緣節點。3、瀏覽器得到了邊緣節點的IP地址,然后發送對應的請求。
4、邊緣節點得到對應的請求后,如果有對應的資源,就返回,如果沒有,就向源服務器發送請求獲取,然后緩存到本地,并返回給瀏覽器。
CDN緩存代理
CDN中的邊緣節點是無法將互聯網上的所有內容都緩存起來的,只能選擇性的緩存那些熱點內容。
CDN中的邊緣節點緩存有兩個指標來衡量緩存的效率:
1、命中率
命中率 指的是 邊緣節點對于客戶端的資源命中概率。
2、回源率
回源率 指的是 邊緣節點對于客戶端的資源沒有命中,請求源服務器的概率。
命中率越高、回源率越低,說明一個CDN越能夠提升訪問效率。
動態資源CDN——邊緣計算
資源分為動態資源和靜態資源。
靜態資源,比如說圖片、視頻等每次獲取都不會改變的資源,可以使用CDN進行代理緩存。
動態資源是服務器會根據不同的參數來返回不同的資源結果,是一個動態的,比如實時點擊率等動態數據。CDN是無法直接進行緩存的。
CDN通過引入數據對應的相關計算代碼,來實現動態數據緩存,這就是我們熟悉的邊緣計算,在邊緣節點進行計算。
總結
- 上一篇: java -- Big Endian a
- 下一篇: Spring Cloud电子招标采购系统