谈谈cdn
前言
這次為什么想講解一下cdn呢?前段時間不是一直在面試嗎,面了幾次都問到了cdn有關的問題,但是可惜的的我只知道用cdn,知道項目中什么采用了cdn(js遠程加載庫文件)。所以這次痛定思痛,通過網上的學習,在這里總結一下。
什么是cdn?
大家都知道,前后端分離的項目,數據資源都是來自服務器,所以就必然存在客戶端向服務端發送請求獲得數據。大家有沒有想過,一個知名的APP,用戶量肯定是非常大的,這么大的客戶量去請求一個服務器,這肯定會爆,而且客戶端的效果也不佳。所以就有了cdn的存在。
這里通過一個生活中的例子來顯示cdn的工作過程。京東超市,在京東購物的一大優勢就是快,那是什么導致京東的物流這么快呢?那就是京東在全國范圍內建立了很多實體門店(或者說是倉庫吧)。通過總的倉庫提前向各個城市分發所需物品,然后用戶所購買的物品就有本地的實體店發出,不用從總倉庫發貨,所以這樣就節省了時間。
cdn也是同樣的原理,就是建立本地節點(邊緣節點),通過總/根節點(中心節點)向本地節點分發內容,用戶在發送請求獲得數據的時候,cdn系統會匹配最近的本地節點,然后返回數據,這樣就實現了cdn加載。是不是和剛剛物流的例子思想一模一樣,哈!
上面是我個人對cdn的理解,下面我引用了別人的解釋,他解析的更加精煉:
CDN的全稱是 Content Delivery Network ,即內容分發網絡。其目的是通過在現有的Internet流程中增加一層新的網絡架構,將網站的內容發布到最接近用戶的網絡“邊緣” ,使用戶可以就近取得所需的內容,解決 Internet 網絡擁塞狀況,提高用戶訪問網站的響應速度。從技術上全面解決由于網絡帶寬小、用戶訪問量大、網點分布不均等原因,解決用戶訪問網站的響應速度慢的根本原因。
cdn的原理
cdn的組成部分:中心節點,邊緣節點
中心節點
中心節點包括CDN網管中心和全局負載均衡DNS重定向解析系統,負責整個CDN網絡的分發及管理。
邊緣節點
CDN邊緣節點主要指異地分發節點,由負載均衡設備、高速緩存服務器兩部分組成。
負載均衡設備負責每個節點中各個Cache的負載均衡,保證節點的工作效率;同時還負責收集節點與周圍環境的信息,保持與全局負載均衡DNS的通信,實現整個系統的負載均衡。
高速緩存服務器(Cache)負責存儲客戶網站的大量信息,就像一個靠近用戶的網站服務器一樣響應本地用戶的訪問請求。通過全局負載均衡DNS的控制,用戶的請求被透明地指向離他最近的節點,節點中Cache服務器就像網站的原始服務器一樣,響應終端用戶的請求。因其距離用戶更近,故其響應時間才更快。
cdn的工作流程
這里我查到一個解釋的清楚的文章,(請叫我原理的搬運工,不懂就學,哈)
1,當用戶點擊網站頁面上的內容URL,先經過本地DNS系統解析,如果本地DNS服務器沒有相應域名的緩存,則本地DNS系統會將域名的解析權交給CNAME指向的CDN專用DNS服務器。
2,CDN的DNS服務器將CDN的全局負載均衡設備IP地址返回給用戶。
3,用戶向CDN的全局負載均衡設備發起URL訪問請求。
4,CDN全局負載均衡設備根據用戶IP地址,以及用戶請求的URL,選擇一臺用戶所屬區域的區域負載均衡設備,并將請求轉發到此設備上。
5,基于以下這些條件的綜合分析之后,區域負載均衡設備會選擇一個最優的緩存服務器節點,并從緩存服務器節點處得到緩存服務器的IP地址,最終將得到的IP地址返回給全局負載均衡設備:
6,根據用戶IP地址,判斷哪一個邊緣節點距用戶最近;
7,根據用戶所請求的URL中攜帶的內容名稱,判斷哪一個邊緣節點上有用戶所需內容;
8,查詢各個邊緣節點當前的負載情況,判斷哪一個邊緣節點尚有服務能力。
9,全局負載均衡設備把服務器的IP地址返回給用戶。
10,用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。
11,如果這臺緩存服務器上并沒有用戶想要的內容,而區域均衡設備依然將它分配給了用戶,那么這臺服務器就要向它的上一級緩存服務器請求內容,直至追溯到網站的源服務器將內容拉到本地。
看圖理解一下:
cdn的作用及優點
總的來說采用cdn,就是為了實現負載均衡,也可以預防攻擊,實現數據快速加載。
下面列舉一下cdn的好處:
1,提升網頁加載速度,
2,處理高流量負載
3,本完成本地化覆蓋
4,減少帶寬消耗
5,在多臺服務器間均衡負載
6,使你的網站免于DDoS(拒絕服務)的攻擊
最后申明一下,由于個人是從網上學習了解cdn,所以引用了部分他人的解釋,哈哈,請諒解!
總結
- 上一篇: IDC:2026 年国内市场近半终端将搭
- 下一篇: 春招实习前端面试题汇总