官术网_书友最值得收藏!

最佳實踐8:架構典型CDN系統

CDN系統是一個復雜的系統,從核心組件進行簡化抽象,可以用圖2-1進行說明。

下面分別以上海電信用戶、山東聯通用戶訪問同一個網站www.xufeng.info為例,說明數據訪問流程。以下是具體步驟。

1)上海電信用戶請求其配置的上海電信DNS服務器,要求解析www.xufeng.info。

2)如果上海電信DNS服務器上沒有該域名的緩存,則該服務器會請求xufeng.info的權威域名服務器。如果有該域名的緩存,則直接返回緩存的DNS解析結果。

圖2-1 CDN系統組成部分架構簡圖

3)xufeng.info的權威域名服務器會根據DNS視圖技術,依據上海電信DNS服務器的來源IP,把www.xufeng.info解析到上海電信CDN節點。

4)上海電信用戶訪問到上海電信CDN節點。

5)上海電信CDN節點使用緩存+代理的方式訪問到源站。

和以上的5個步驟類似,山東聯通用戶解析到山東聯通CDN節點,通過山東聯通CDN節點訪問到源站資源。

通過以上的5個簡要的步驟,可以分析出CDN系統的2個關鍵技術分別如下。

·DNS的視圖技術:通過該技術,使得來自不同區域、運營商的用戶被調度到距離用戶最近的不同的CDN節點。它的作用總結起來就是“調度”。該技術在第1章中有詳細闡述,在此不再贅述。

·CDN節點的緩存和代理技術:緩存是指,如果在該節點上有對應的未過期資源,如圖片、HTML、CSS等,則它直接返回給用戶而縮小用戶的資源等待時間;代理是指,如果在該節點上沒有對應的資源,或者資源已經過期無效,則它會請求源站獲取內容后再返回給用戶。緩存和代理技術優化了已緩存文件的傳輸效率。同時對于未被緩存的文件,在某些情況下,在一定程度上可以優化用戶到源站之間的網絡鏈路。比如用戶是接入的運營商A寬帶網絡,而源站是部署在運營商B,那么通過優化的CDN網絡,可以減少用戶直接跨運營商訪問導致的高延時甚至丟包率帶來的影響。

從宏觀上,在研究了CDN的組成部分后,再來看看聚焦到某個CDN節點后的技術細節。

某個CDN節點的典型架構圖,如圖2-2所示。

圖2-2 CDN節點的典型架構圖

在圖2-2中,各組件的功能和設計要點如下。

·負載均衡服務器組:使用LVS的DR模式實現4層的網絡負載均衡。使用DR模式的網絡負載均衡,主要優點是實現高吞吐量及屏蔽后端Nginx代理服務器組中單臺服務器故障導致的對業務的影響。關于負載均衡的詳細技術方案和對比,請參閱第3章的相關內容。

·Nginx代理服務器組:使用Nginx的反向代理技術(Upstream),配置為url_hash的方式,提高對后端Squid緩存服務器組的緩存命中率。同時,也能達到屏蔽后端Squid緩存服務器組中單臺服務器故障導致的對業務的影響。

·Squid緩存服務器組:根據HTTP協議中有關緩存設置的規定,實現對頁面和資源進行緩存的關鍵功能業務。通過該組服務器,可以實現緩存文件的快速響應和對源站的代理。

理解HTTP協議中的緩存控制指令和原理,是構建Squid緩存的必要步驟。下一個最佳實踐將對緩存控制指令和原理進行探討。

主站蜘蛛池模板: 应城市| 洛宁县| 江西省| 古蔺县| 北安市| 全椒县| 汤原县| 新巴尔虎右旗| 勐海县| 神木县| 太仆寺旗| 桐乡市| 肇庆市| 纳雍县| 江油市| 蒙阴县| 井冈山市| 信阳市| 三门县| 芜湖市| 康马县| 上高县| 聂荣县| 隆昌县| 长春市| 天峨县| 安达市| 东莞市| 集贤县| 开原市| 濮阳县| 新绛县| 博白县| 邢台市| 开平市| 荔浦县| 工布江达县| 赤水市| 涪陵区| 井陉县| 交口县|