CDN (Content Delivery NetWork) 內容分發網絡,它是構築在現有互聯網基礎上的一種先進的流量分配網絡。區別於鏡像,相當於是 CDN = 鏡像(mirror) +
緩存(Cache)+整體負載均衡(GSLB)。目前CDN 都已緩存網站中的靜態數據為主,如CSS,JS,圖片和靜態頁面等數據,用戶從主服務器上請求到動態頁面之后,再從CDN上下載這些靜態數據,從而加速訪問。
CDN目標:
- 可擴展性(Scalebility) 應對新增大量的數據,用戶和事務的擴展性。低成本提供高質量的內容分發。
- 安全性(Security) 強調安全問題。
- 可靠性。容災和負載均衡咯。
CDN架構:
如圖用戶去訪問一個假設是css文件,先是想localserver發起請求,然后迭代解析回到這個域名的注冊服務器去解析,然后通過cname解析到CDN全局負載均衡服務器,然后用戶直接去這個CDN節點訪問這個css文件咯,如果不存在就去源站請求。
3種負載均衡
-
鏈路負載均衡:dns服務器進行負載均衡,在解析中完成。
-
集群負載均衡:分為硬件和軟件
- 硬件:非常昂貴的硬件設備,如F5 開始一旦壞掉就GG
- 軟件: 通過代理服務器,可能會增加網絡延時。LVS在IP層進行地址轉發,HAProxy根據HTTP請求頭進行轉發。
- 操作系統負載均衡:利用操作系統的軟中斷和硬中斷,來達到負載均衡。
CDN動態加速:這個是目前比較流行的一種優化技術。原理其實就是在CDN的DNS解析中通過動態鏈路探測技術來找到回源最好的一條路徑,然后通過dns的調度將后面所有的請求都選在這條特定的路徑上,從而加速用戶的訪問效率。所以一個用戶在CDN節點遍布全國的情況下從一個CDN節點接入之后,可以選擇一個最好的源站鏈路給用戶。簡單的方法就是每條鏈路去下一個特定大小的文件,然后找出這個鏈路列表里面耗時最小的。其實還要考慮帶寬和安全等等成本。
如下圖就是一個就是一個使用CDN加速網站訪問的架構示意圖
其中還包括了網站分布式文件系統、noSQL和搜索引擎技術等。