隨着互聯網的發展,各類網絡應用也雨後春筍般的發展,應用越作越大,訪問路徑愈來愈長,用戶的訪問質量受到嚴重的影響,特別是用戶和網站之間的鏈路被突發的大流量數據擁堵、異地訪問急需加速,減小網絡費用等因素,對於這些急需解決的問題,因而就有了內容發佈網絡(Content Delivery Network,簡稱CDN)。
CDN是指一種經過互聯網互相鏈接的電腦網絡系統,利用最靠近用戶的服務器,更快、更可靠地將音樂、圖片、視頻、應用程序及其餘文件發送給用戶,來提供高性能、可擴展性及低成本的網絡內容傳遞給用戶。css
CDN總承載量能夠比單一骨幹最大的帶寬還要大。這使得內容分發網絡能夠承載的用戶數量比起傳統單一服務器多。也就是說,若把有100Gbps處理能力的服務器放在只有10Gbps帶寬的數據中心,則亦只能發揮出10Gbps的承載量。但若是放到十個有10Gbps的地點,整個系統的承載量就能夠到10*10Gbps。同時,將服務器放到不一樣地點,能夠減小互連的流量,進而下降帶寬成本。html
其中有一個比較重要的點,在過程1裏:這個過程當中,有一個CNAME的過程,咱們訪問CDN資源的地址通常是a.cloud.com或者相似的地址,是一個公司的訪問CDN的專用地址。可是通常用的CDN的服務倒是第三方的,即其實資源在他們的地址上好比tencent.cdn.com。這時候就須要在CDN查詢的時候,須要把咱們訪問a.cloud.com的地址映射到tencent.cdn.com的地址上,而後拿着映射後的地址再去走一遍DNS解析,成功以後才獲取到第三方提供的全局負載均衡系統的IP。再繼續走後面的流程。算法
咱們使用CDN的兩個重要的緣由就是加速網站訪問、減小寬帶成本,其次,CDN還有不少做用:segmentfault
一、爲了實現跨運營商、跨地域的全網覆蓋
互聯不互通、區域ISP地域侷限、出口帶寬受限制等種種因素都形成了網站的區域性沒法訪問。CDN加速能夠覆蓋全球的線路,經過和運營商合做,部署IDC資源,在全國骨幹節點商,合理部署CDN邊緣分發存儲節點,充分利用帶寬資源,平衡源站流量。阿里雲在國內有500+節點,海外300+節點,覆蓋主流國家和地區不是問題,能夠確保CDN服務的穩定和快速。緩存
二、爲了保障你的網站安全
CDN的負載均衡和分佈式存儲技術,能夠增強網站的可靠性,至關無無形中給你的網站添加了一把保護傘,應對絕大部分的互聯網攻擊事件。防攻擊系統也能避免網站遭到惡意攻擊。安全
三、爲了異地備援
當某個服務器發生意外故障時,系統將會調用其餘臨近的健康服務器節點進行服務,進而提供接近100%的可靠性,這就讓你的網站能夠作到永不宕機。服務器
四、爲了節約成本投入
使用CDN加速能夠實現網站的全國鋪設,你根據不用考慮購買服務器與後續的託管運維,服務器之間鏡像同步,也不用爲了管理維護技術人員而煩惱,節省了人力、精力和財力。網絡
五、爲了讓你更專一業務自己
CDN加速廠商通常都會提供一站式服務,業務不只限於CDN,還有配套的雲存儲、大數據服務、視頻雲服務等,並且通常會提供7x24運維監控支持,保證網絡隨時暢通,你能夠放心使用。而且將更多的精力投入到發展自身的核心業務之上。併發
CDN是將源站內容分發至最接近用戶的節點,使用戶可就近取得所需內容,提升用戶訪問的響應速度和成功率。解決因分佈、帶寬、服務器性能帶來的訪問延遲問題,適用於站點加速、點播、直播等場景。今天爲你們分享幾個CDN的典型適用場景。負載均衡
一、網站站點/應用加速
站點或者應用中大量靜態資源的加速分發,建議將站點內容進行動靜分離,動態文件能夠結合雲服務器ECS,靜態資源如各種型圖片、html、css、js文件等,建議結合 對象存儲OSS 存儲海量靜態資源,能夠有效加速內容加載速度,輕鬆搞定網站圖片、短視頻等內容分發
二、視音頻點播/大文件下載分發加速
支持各種文件的下載、分發,支持在線點播加速業務,如mp四、flv視頻文件或者平均單個文件大小在20M以上,主要的業務場景是視音頻點播、大文件下載(如安裝包下載)等,建議搭配對象存儲OSS使用,可提高回源速度,節約近2/3回源帶寬成本。
三、視頻直播加速
阿里雲一站式 視頻直播服務 服務已正式上線發佈!基於領先的內容接入與分發網絡和大規模分佈式實時轉碼技術打造的音視頻直播平臺,提供便捷接入、高清流暢、低延遲、高併發的音視頻直播服務。支持多直播場景,全景數據統計,豐富角度分析;直播功能豐富,錄製回放、實時封面、實時轉碼、連麥混流。
四、移動應用加速
移動APP更新文件(apk文件)分發,移動APP內圖片、頁面、短視頻、UGC等內容的優化加速分發。提供httpDNS服務,避免DNS劫持並得到實時精確的DNS解析結果,有效縮短用戶訪問時間,提高用戶體驗。
這對不一樣文件類型合理配置緩存策略能有效的增長CDN回源效率,大幅縮減寬帶成本
一、配製合理的CDN緩存規則
說明:讓當地或就近的 CDN 節點上的緩存內容,直接提供給用戶訪問。多個客戶訪問相同資源也無需回源站獲取內容,以此減小回源帶寬。
優勢:緩存住的內容可直接由 CDN 提供資源的訪問。
缺點:根據 CDN 緩存算法 "最近最少使用" 的原則,將最近訪問內容頻率最低的會被清理出 CDN 緩衝中,致使冷資源還會從新回源站獲取。
例如: jpg|bmp|gif 圖片類型緩存 7 天,mp4|flv|ts 視頻類型緩存 30 天
須要注意:當CDN主動更新文件時可能會形成服務器壓力上升,由於廠商的服務器會有不少,同時拉取更新資源時,請求量會很大。若是剛好處於業務高峯期須要和CDN廠家協商更改拉取時間。
二、去問號回源
說明:只緩存 URL 中的問號 ? 前路徑中的地址資源,而再也不緩存整條 URL 地址資源。
優勢:只緩存住主要的資源內容,忽略掉問號後的常常變化的參數,有利於提升緩存命中率,減小回源帶寬。
缺點:問號後若是有不一樣的內容版本號來區分資源,去問號緩存可能會影響實際訪問效果,從而致使訪問到舊資源。
例如: http://www.youku.com/test.mp4... , 配製去問號緩存 http://www.youku.com/test.mp4 作到只緩存這個URL地址資源。
三、開啓 CDN 父層
說明:CDN 父層是指相對於邊緣節點的上層再加了一個共享存儲池,用來將多個 CDN 邊緣節點的請求匯聚到父層,由父層再回源站獲取資源。
優勢:由父層統一回源站,能夠起到收斂多個 CDN 邊緣節點的請求。作到合併請求,減小回源帶寬。
缺點:父層的部署地區並非離客戶最近的機房線路,由父層回源鏈路過長可能會被線路抖動產生回源失敗。父層故障可能會致使多個 CDN 邊緣節點沒法獲取到回源信息,影響面也較大。
四、開啓 CDN 分段(分片)回源(緩存)
說明:CDN 分片回源是指將一份文件拆分紅若干個小文件回源。
優勢:經過識別不一樣類型的文件大小,來調整分片的大小。將客戶第一次請求,由分片服務自動將資源的請求拆分紅若干個分片,最終將分片緩存在邊緣或父層中。
缺點:分片服務在第一次不管客戶請求過程當中是否斷開,都會將請求進行分片回源。產生較多的請求次數,增長源站的HTTP請求鏈接數。
例如:以4M爲分片單位,僅對點播和下載文件啓用分片功能。
五、多個加速域名共享CDN緩存
說明:多個加速域名使用同一個源站,多個加速域名默認都會回源獲取資源。
優勢:配製了共享CDN緩存策略,多個加速域名只會回源一次,減小回源帶寬。
缺點:多個加速域名的HOST會被合併成一個主要回源域名的HOST,致使記錄回源域名不夠清晰。
六、HTTP 和 HTTPS 共享CDN緩存
說明:HTTP 和 HTTPS 的 URL,默認是分別回源獲取對應的資源。
優勢:配製 HTTP 和 HTTPS 共享緩存策略,能夠減小回源次數及帶寬。
缺點: HTTP 的回源獲取錯誤文件致使 HTTPS 響應錯誤
七、限制回源帶寬。
說明:針對源站帶寬有必定的限額,若是達到帶寬上限會引發沒法響應和請求到源站任何資源。
優勢:限制回源帶寬設置閥值,能夠減小回源量突增致使沒法訪問的異常產生
缺點:會致使回源帶寬突增後,致使超過回源帶寬的請求失敗
八、用第三方雲存儲(或內容注入)
說明:將源站遷移至第三方雲存儲,或CDN緩存節點做爲臨時存儲站。
優勢:一次性或者臨時性將源站資源上傳和同步到第三方存儲機構,以減小回源帶寬。
缺點:使用第三方雲存儲會產生使用成本,使用CDN緩存注入節點,將會佔用上傳帶寬。
九、CDN 預取(預熱)
說明:將資源提早一次性推送到CDN的邊緣或者父層緩存節點。
優勢:只佔用一次上傳帶寬,而推送到CDN邊緣或父層的內容可直接被用戶訪問。
缺點:須要提早得到推送資源,而且會佔用上傳帶寬,業務繁忙時預熱會致使上傳帶寬緊張。