大檔案下載及影片點播的CDN加速實踐
為了幫助使用者更好地瞭解和使用CDN產品,CDN應用實踐進階系統課程開課啦!前幾天,阿里雲CDN產品專家陳智城線上分享了《大檔案下載及影片點播的CDN加速實踐》議題,解讀大檔案下載和影片點播的業務場景、內容分發挑戰及對應解決方案。本篇文章,將為你詳述分享原文。
關注阿里雲邊緣計算和CDN官方賬號:阿里雲Edge Plus ,免費獲得講師課件PPT
一、大檔案下載和影片點播的內容分發挑戰
對於下載類的場景來說,常見細分場景包括:手機應用商店、遊戲應用商店以及遊戲更新和手機作業系統更新等,而對於影片類的應用場景來說,主要細分場景包括短影片、長影片、線上教育、OTT機頂盒、廣電傳媒和音樂網站等等。
為什麼會把下載類的應用場景和影片點播類應用場景放在一起去做比對呢?因為影片點播這個應用場景實際上也是一種大檔案下載場景,這兩個應用場景有著很高的業務相似性,也有很多共性問題,而它們之間的區別在於影片點播對於訪問的效能會有更高的要求。
兩個場景在內容分發方面所面臨的挑戰主要有三大類:
- 使用者體驗問題,主要體現在:國內運營商環境複雜,跨運營商訪問效果差;使用者分佈廣,跨地區訪問時延高、速度慢;弱網環境下傳輸效能差,速度慢、卡頓嚴重等方面;
- 源站效能與成本問題,主要體現在:中心式部署的源站彈性擴充套件能力差,無法承受大規模突發流量以及中心式部署的源站頻寬成本高昂;
- 業務安全問題,主要體現在:時刻面臨著DNS劫持(例如被劫持了頁面內容,被嵌入了頁面廣告等)、資源盜鏈(源站面臨頻寬成本上的損失)等安全威脅。
二、CDN內容分發網路架構
當下,CDN已經是成為了緩解網路擁塞、提高業務響應速度、提升使用者體驗的一種非常重要的技術手段,也是網際網路基礎設施當中不可或缺的重要組成部分。下面我們透過阿里雲CDN的內容分發網路架構來說明典型的CDN內容分發網路都包含哪些組成部分:
(1)排程系統
使用者的終端會發起各種應用訪問,比如:點播和下載這兩個應用場景。使用者的訪問請求會首先去做域名DNS解析,然後使用者的域名DNS解析請求將會透過阿里雲CDN的排程系統去處理;
(2)鏈路質量系統
鏈路質量探測系統的作用是去實時地監測快取系統中的每一個節點和鏈路的實時負載和健康狀況,然後反饋給排程系統,排程系統會根據使用者請求中攜帶的IP地址資訊去解析使用者的運營商和區域歸屬,然後綜合鏈路質量資訊為使用者分配一個最佳的接入節點;
(3)快取系統
使用者收到最佳接入節點的IP以後,就會去訪問這個快取節點,節點如果已經快取了使用者請求的資源,那麼就將會直接將資源返回給使用者;如果L1節點沒有命中,會上溯到L2節點,如果L2節點也沒有快取資源,才會返回源站去拉取這個資源;某個資源首次拉取後將會在快取系統中快取下來,這樣如果後續使用者訪問到同一個資源,就可直接從快取系統去拉取資源,避免重複回源;透過分級快取的這種部署架構可以達到提高內容分發效率、降低迴源頻寬以及提升使用者體驗的效果;
(4)支撐服務系統
阿里雲CDN在內容分發之外也提供了支撐服務系統。第一是具備資源監測能力,可以對快取系統上客戶業務執行的狀態進行監測,比如對CDN加速域名的QPS、頻寬、http狀態碼等常見指標實現監控。第二是資料分析,使用者可以分析CDN加速域名的TOP URL、PV、UV等資料。第三是配置管理系統,使用者透過該系統可以下發如快取檔案型別、快取時間、去引數快取等快取規則,以提升快取系統的運作效率。
三、 CDN如何解決網際網路內容分發所面臨的問題?
下面,從使用者體驗、源站效能與成本以及業務安全這三個方面來看看CDN是如何解決問題的。
第一,使用者體驗問題
首先,CDN可以為使用者提供諸多的就近接入的節點。
阿里雲CDN建立了一張覆蓋全球六大洲70多個國家的2800多個的節點,全網具備了130Tbps的頻寬輸出能力,基本上覆蓋了國內以及做海外的主要運營商。依託豐富的資源節點覆蓋,阿里雲CDN能夠讓使用者就近接入同運營商節點,解決跨運營商互聯互通、遠距離訪問時延大等使用者體驗問題。
其次,提升使用者體驗的第二點是需要提供精準的排程能力,阿里雲CDN在這裡是提供了4項關鍵的最佳化措施:
1、持續更新的精準IP資料庫:IP資料庫的作用是在使用者的DNS解析請求轉發到了CDN排程系統時,排程系統會判斷使用者的地區和運營商歸屬,以此來為使用者分配就近接入的同運營商CDN節點。為了確保IP資料庫的資料處於最新的狀態,資料庫一直在持續地更新。
2、提供HTTPDNS服務(需要客戶端相容):採用HTTPDNS這項技術使得使用者終端可以繞開運營商的local DNS,直接採用HTTP協議去訪問排程系統,請求所需要訪問的域名的最優接入節點,這樣可以避免DNS劫持所帶來的業務安全問題。
3、節點資料分析:CDN排程系統透過鏈路狀態系統去實時地分析整個快取系統中的所有節點和鏈路的健康狀況,為使用者選擇最優的接入節點,避免因為接入節點質量不佳而影響到使用者訪問體驗。
4、基於內容排程,提高訪問命中率:在大檔案下載和影片點播這兩個應用場景上經常使用302排程這種基於內容的排程技術,302排程是一種中心排程方案,使用者在請求某一個資源的時候,在完成域名DNS解析之後,使用者請求將會先訪問到中心排程系統上,然後中心排程系統將會解析使用者請求需要訪問的內容,再透過302重定向的方式為使用者分配最佳接入節點。
透過採用以上4項最佳化措施,能夠為使用者提供更加精準的排程能力,從而讓使用者能夠接入最佳的CDN節點。
CDN常見的三種排程方案簡單對比如下圖所示:
這裡簡單說明下這三種常見的CDN排程方式的優缺點:
(1)DNS排程是最常用和最通用的排程方案,缺點是存在DNS劫持的風險,排程的精確度也會差一些;
(2)302排程非常適合用在大檔案下載和影片點播這兩個應用場景,優點是可以提高排程的精確度,缺點是將會增加首包的時延(在大檔案下載和影片點播場景下對首包時延不太敏感,而對排程精確度要求更高)
(3)HTTPDNS排程的優點是有較高的安全性(可以規避DNS劫持風險)和排程精確度,但是有個很大的缺點,需要客戶端提供支援(例如在手機APP上嵌入SDK),通用性較差。
再次,提升使用者體驗的第三個最佳化點是對傳輸鏈路做智慧最佳化
1、協議最佳化:透過調整擁塞演算法、丟包探測演算法等最佳化措施,對TCP協議棧的效能做了大幅度提升,尤其對弱網環境下的網路效能提升明顯;
以下兩張頻寬利用率對比圖,左邊是標準TCP傳輸協議,在建立TCP連線之後,需要透過相對更長的時間去提升頻寬利用率,一旦碰到丟包情況,頻寬利用率會快速下跌,並且需要經歷慢速爬坡階段才能夠逐步提升頻寬利用率,尤其在弱網環境下,使用標準TCP協議的情況下,頻寬利用率的下降會非常的嚴重。右側是阿里雲最佳化後的TCP協議,透過快速啟動、主動擁塞探測和快速丟包恢復等技術最佳化措施,能夠提供更高的頻寬利用率,即使在網路條件相對差一些的情況下,也可以有比較好的最佳化效果。
2、連線加速:透過修改協議棧的 Handshake Timer 來實現快速重試,以彌補由於丟包導致的重試超時;
3、持久連線:在CDN節點間預先建立好 TCP 連線,並長時間保持不斷開,這樣在有新連線過來的時候就可以直接複用,減少TCP握手時延。
第二,源站效能、成本壓力問題
透過提高快取系統的效率幫助客戶降低源站的效能和成本壓力,主要包括六個方面的技術措施:
1、分散式部署:確保使用者能夠就近訪問同運營商的節點,以此來提高訪問速度,解決跨運營商訪問慢、長距離回源時延高等問題;
2、多級快取架構:多級快取架構中的每一級都能夠用來快取使用者請求的資源,多級回源收斂之後可以極大地降低迴源流量;
3、內容預取:透過內容預取技術提前把源站的內容預取到CDN節點上,減少回源量和提高快取命中率;
4、合併回源:配置若干個域名的回源請求與某一個域名(業務相同的情況下)相合並,以減少重複回源的流量;
5、去引數快取:設定hashkey(快取key)時,配置去掉資源URL後面的引數,以不帶引數的URI作為快取key,以提高快取命中率;
6、流量控制:提供精細化的流量控制能力,支援單請求流控和全網流控,支援邊緣流控和回源流控,能夠有效降低客戶成本。
下圖中標記的序號代表了以上6個技術措施在CDN快取系統上的作用位置:
這些技術措施綜合起來可以幫助客戶去有效地減少回源頻寬、提升快取命中率,從而降低源站的頻寬壓力、降低源站的頻寬成本。
第三,業務安全風險問題
阿里雲CDN透過可靠的安全防護措施,去幫助使用者規避業務上的安全風險。
1、防盜鏈:可以選擇使用Referer、UA、URL、IP等通用鑑權方式,也可以用EdgeScript來定製鑑權規則,支援邊緣鑑權和中心鑑權,透過嚴格校驗使用者的資源訪問請求來防止源站資源被盜用;
2、DNS防劫持:HTTPDNS技術使用HTTP協議訪問阿里雲的服務端,獲得域名解析結果,可以繞過運營商的Local DNS,避免域名DNS劫持;
3、HTTPS傳輸加密:支援採用TLS協議來加密HTTP協議內容,防止明文資料暴露在網際網路上,並且可以設定TLSv1.3、HSTS等高階功能。
最後,我們再整體回顧一下,阿里雲CDN在大檔案下載和影片點播這兩大應用場景下提供了哪些的核心能力:
1、豐富的資源節點:能夠為使用者提供就近接入的同運營商CDN節點,解決長距離接入和跨運營商訪問帶來的延遲高和速度慢的問題
2、精準的排程系統:能夠實時地獲取CDN節點的健康狀況,並根據使用者的所在位置和運營商來分配最合適的接入節點,以便取得最佳接入效果
3、智慧的傳輸鏈路:透過協議最佳化、連線最佳化等措施來降低總體時延、提高傳輸速度,尤其是提高弱網環境下的傳輸速度
4、高效的快取策略:高效的快取策略能夠帶來更高的使用者命中率(命中就近節點上的快取資源),從而提供更高的訪問速度
5、可靠的安全防護:可靠的安全防護措施能夠對使用者的資源訪問請求做嚴格的校驗和加密,保護使用者的資源和業務安全
如果對阿里雲CDN產品應用進階感興趣,可以關注阿里雲Edge Plus微信公眾號,獲取更多產品和技術資訊,更有講師PPT、T恤等福利等你來拿哦~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490631/viewspace-2751475/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大檔案斷點下載(NSURLConnection)斷點
- iOS開發網路篇之檔案下載、大檔案下載、斷點下載iOS斷點
- ASP.NET 大檔案下載的實現思路及程式碼ASP.NET
- 利用github給國外檔案下載加速Github
- 直播轉點播實踐
- CDN加速如何實現
- Wordpress教程:一鍵實現WP部落格靜態檔案CDN加速
- requests如何友好地請求下載大檔案?requests實現分段下載、斷點續傳斷點
- 最佳實踐:使用阿里雲CDN加速OSS訪問阿里
- 檔案下載那點事
- iis實現點選檔案下載而不是開啟檔案
- Java實現上傳檔案到Oracle及從Oracle下載檔案JavaOracle
- Weex 實現檔案的下載
- sra檔案下載及解析的問題
- 伺服器使用CDN加速的優缺點伺服器
- Vue CLI 2&3 下的專案優化實踐 —— CDN + Gzip + PrerenderVue優化
- 大檔案排序優化實踐排序優化
- 大檔案上傳實踐分享
- PHP大檔案下載(方式1不支援斷點續傳)PHP斷點
- Flutter實現檔案下載Flutter
- AJAX實現檔案下載----
- PHP實現檔案下載斷點續傳詳解PHP斷點
- js下載檔案的實現方式JS
- Netty接收HTTP檔案上傳及檔案下載NettyHTTP
- struts2檔案下載及 inputStream的理解
- 轉:檔案的斷點下載服務端斷點服務端
- iOS開發中利用AFNetworking下載大檔案以及下載檔案的刪除iOS
- 短影片開發app,利用資料壓縮加速大檔案傳輸APP
- PHP大檔案下載(方式2支援斷點續傳)PHP斷點
- 精講RestTemplate第6篇-檔案上傳下載與大檔案流式下載REST
- PHP下載遠端檔案及獲取檔案內容PHP
- Flutter 實現檔案下載功能Flutter
- Java實現檔案下載功能Java
- servlet實現檔案下載demoServlet
- Django 實現下載檔案功能Django
- 利用IhttpHandler實現檔案下載HTTP
- 使用Servlet實現檔案下載Servlet
- jsp下載檔案的實現方法JS