阿里云CDN产品经理陈章炜:边缘创新技术和落地实践
CDN除了加速外,不斷被賦予更多價值。在阿里云CDN推出的《極速奔跑吧 2021》首場直播中,阿里云架構師和產品經理不僅對近期阿里云發布的CDN產品最佳實踐圖進行了詳細解讀,還對CDN產品和客戶的場景如何更高效地匹配、形成最優方案進行了分享,希望基于阿里巴巴及成功客戶經驗的分享,為客戶2021年的企業數字化升級之路加碼提速。
本文整理自《邊緣創新技術和落地實踐》議題,介紹了邊緣程序ER、QUIC這2個創新技術在前端渲染、小程序、短視頻以及動態加速場景中的應用落地實踐。
分享嘉賓:阿里云產品經理陳章煒,負責阿里云CDN邊緣Serverless輕量計算產品、QUIC協議、CDN配置可編程等創新產品的孵化。
一、技術背景
1、邊緣程序ER
邊緣程序ER是在1月6日的阿里云CDN年度產品升級發布會中著重推出和介紹的創新產品,它的原理是在CDN邊緣節點上運行計算服務,用戶將javascript代碼上傳、部署至ER,即可在全球的CDN邊緣節點上運行,相當于用戶在全球擁有了大量微型服務器可以就近地處理客戶端的計算請求。
過去傳統CDN的緩存分發能力,是將靜態文件就近發送給客戶端,而現在阿里云CDN正在嘗試讓用戶的后端計算服務下沉到CDN邊緣節點,讓計算能更靠近客戶端,拿到更低延遲。同時由于CDN本身是一個巨大的彈性網絡,用戶不用像購買服務器一樣去關心算力資源和擴縮容,CDN邊緣節點網絡可以很從容地彈性伸縮幫助用戶應對每一次突發的業務。
2、QUIC協議 / HTTP3.0
阿里云CDN接入層支持3~7層、標準、私有等多種協議的接入,可以滿足大部分場景的加速,QUIC就是其中一個協議。
QUIC是2013年由Google 發起的,雖然已經發起很多年了,但是真正的大規模商用,阿里云CDN是走得比較靠前的。QUIC基于UDP協議,在UDP的基礎上實現了一套TCP+TLS+HTTP/2,所有用TCP能傳輸的數據都可以用QUIC傳輸,并且QUIC如他的名字一樣,傳輸速度更快,僅僅只是替換客戶端請求的協議,就能夠提升大約10%的訪問速度,在弱網環境下甚至能夠提升20%,這種改造帶來的收益是非??捎^的,所以現在很多客戶已經在使用阿里云CDN的QUIC協議進行加速了。
二、應用場景
1、邊緣程序ER在電商前端渲染場景下的實踐
電商前端渲染這個場景有什么特點?
第一個特點是電商的頁面數以億計,而且請求的量級非常地大。這些頁面的內容大部分都是靜態的,不會頻繁變化的。因此電商頁面是天然必須運行在CDN上的,依托CDN緩存分發的能力來降低源站服務器的壓力。
第二個特點是頁面元素非常多,包括大量的圖片文字元素,將這些元素渲染成最終在手機上顯示的頁面。
常規情況下,有2種渲染技術,如上圖右側中所示,一種是csr客戶端渲染,由客戶端去發起,把整個異步的請求去拿到動靜態的數據,最后回到客戶端生成動靜態數據,然后把這些動靜態的數據渲染成最終的1個HTML的結果,這種渲染技術的缺點是客戶端壓力大、請求多延遲不可控。另一種是ssr服務端渲染,當客戶端發起一次請求,由服務器端去做這些動靜態資源的拉取和渲染,最終給客戶端返回1個HTML的文件,由客戶端去做加載。這種渲染技術下,首先客戶需要有專門服務器集群去做SSR,成本比較高,另外服務器需要接受來自客戶端的渲染請求,壓力也比較大,而且客戶端發起請求之后需要等待時間,也就是白屏時間,將會影響客戶端的用戶體驗。而電商恰恰對頁面加載的延遲是很敏感的,用戶同樣停留的時間,加載速度快意味著用戶能看到更多的商品,更有可能成單,相反如果加載很慢,還可能造成買家用戶的流失。
當阿里云CDN支持在邊緣節點運行計算服務后,就出現了新的渲染架構ESR ,在邊緣節點做前端頁面渲染。這樣既不用吃客戶端性能,也不用到很遠的中心服務器去做集中的渲染,看下圖示意圖:
頁面渲染的代碼部署到ER,客戶端請求到達ER后,ER會生成DOM結構并開始拉取源數據進行渲染,而其中大部分的源數據都是靜態文件,例如圖片文件,這些靜態文件就緩存在CDN上,可以直接從CDN緩存讀取,不用發起網絡請求。只有少部分例如頁面上的粉絲數量、商品價格等少量數據需要實時的發起請求回源獲取。邊緣渲染完成后直接給客戶端返回一個最終的HTML文件,客戶端只要做加載即可。另外,邊緣完成渲染后的HTML文件也可以直接緩存到CDN上,讓一段時間內的請求可以準時地復用這個頁面結果,減少不必要的重復渲染,進一步降低客戶端的白屏時間。
2020年雙十一,手機淘寶首次在阿里云CDN的邊緣程序(ER)中進行主播詳情頁面的渲染計算,客戶端的圖文頁面請求直接在邊緣節點完成渲染,無需回源,頁面整體加載時間降低60%。同時ER引擎渲染后的頁面結果可以直接緩存在CDN中, 減少了每次回源的重復計算, 整體復用率達到40%~60%。在降低客戶端延遲,為用戶帶去更順暢的購物體驗的同時,在邊緣直接完成渲染計算還節約了中心源站的算力。
2、邊緣程序ER在小程序場景下的實踐
小程序是近年很熱門的一種輕應用形態,相比原生開發的方式,小程序有很多優點,比如跨平臺、免下載、隨開隨用、體積小等特點,對于一般的小型服務完全夠用了。目前在淘寶店鋪、支付寶應用里都可以看到小程序的身影。
小程序是高度模塊化/插件化,1個小程序由多個json文件模塊組成(模板信息、版本信息、灰度配置信息、客戶端信息、驗簽信息、安全策略等),大部分的模塊更新頻率低,呈靜態化的特點,少部分模塊或個性化插件的實時性高需要動態回源獲取。
基于小程序的這些特點,邊緣程序ER能幫助他做哪些優化?
如上圖所示,以店鋪小程序為例,左側是常規的小程序服務架構, 客戶端請求由中心服務器做小程序組裝,將各個模塊組裝成1個店鋪框架后返回給客戶端。
但是如剛才提到的,這些模塊其實也能細分成靜態化的更新頻率低的通用模板,以及實時性高的個性化模塊等。如果能在邊緣根據客戶端請求攜帶的用戶信息做模塊的精準區分,靜態化的文件直接從CDN緩存讀取,少部分的個性化模塊、安全策略等高實時性模塊等再異步回源拉取,可以減少大量網絡請求。CDN緩存加上少量網絡請求后組裝成店鋪模板返回給客戶端,同時對組裝完成的店鋪模板文件也可以緩存在CDN緩存節點,供一段時間內的同類請求復用,減少重復的組裝,提高客戶端加載小程序的加載速度。
小結一下:直接在CDN邊緣節點做計算的優勢有很多。比如電商頁面、小程序這種,訪問量非常大,所以業務本身其實就會用CDN。而在經過CDN的時候增加一些判斷的邏輯和內容,生成的邏輯其實對原本的業務的侵入性是很小的,業務改造成本也很小。同時,還能夠有效的去減少回源的數據請求,避免網絡請求可能帶來的網延遲的風險。
同時,由于邊緣程序ER是直接跑在CDN邊緣節點上的,所以他就天然的具備所有CDN的優點。比如就近調度,客戶端的請求會就近的調度到離它最近、最優的節點進行計算處理。而且當一個區域的請求有突發時,這些請求還會被自動調度到相對比較遠,但是有計算資源的節點進行處理。這種自動彈性調度的機制,可以讓客戶無需擔心業務的突發,也不用冗余儲備資源來應對,整個資源的分配和擴容都由智能的CDN調度系統完成。
3、QUIC在短視頻場景的應用
短視頻這幾年發展非常迅速,已經基本成為了互聯網流量增長的主要增長點。它具有兩個特點,第一短視頻是純靜態的文件,文件大、流量大,所以,短視頻業務也是天然適合用CDN做分發。第二個特點是短視頻大多是移動端的客戶端、各類App應用,移動端的網絡環境更加復雜,弱網環境很多,這些場景下的卡頓率、失敗率、首屏時間都會突增,而短視頻應用的用戶體驗是非常重要的,卡頓和長時間的等待加載會打斷用戶的沉浸體驗,所以短視頻應用追求的視頻播放性能指標比一般的加速業務要更多更細化。
在這種追求極致的場景下,如果換一個協議就能使傳輸速度有百分十幾二十的提升,短視頻類客戶是非常愿意嘗試的。目前阿里云CDN支持在客戶端到L1的這段鏈路中開啟QUIC協議傳輸,QUIC帶來了非常多的新特性,例如0-RTT的建連,直接節省了TCP的3次握手和TLS握手這幾個來回的RTT,視頻首屏可以秒開。第二,QUIC支持連接遷移,手機在切換請求不會斷連,視頻的加載和播放不會被打斷,讓用戶的觀看不會被打斷。第三,QUIC把擁塞算法從內核移到了應用層,這使得阿里云CDN可以按月甚至按周根據客戶的業務特點去升級擁塞算法,幫助客戶拿到更好的收益。第四,TCP有隊頭阻塞的問題,1個連接里的多個stream里只要有1個stream丟包,就必須等待這個stream包重傳,后續的包即使已經被接收端接收了也無法被讀取,而QUIC沒有這個問題,在弱網環境可以減少了大量的重傳,減少卡頓和失敗。
從阿里云CDN服務短視頻場景的實踐數據來看,接入QUIC后,卡頓、首屏、下載速度都有明顯提升。
4、QUIC在動態加速場景的應用
動態加速大家應該比較熟悉了,比如短視頻是純靜態文件,可以直接緩存到CDN節點上,而應用里很多數據都是實時獲取的,例如賬號密碼、版本更新、數據庫中的讀寫操作的API訪問等,這些數據都是實時變化的動態請求,無法緩存在CDN上,這時就需要請求源站獲取。
在訪問源站的網絡鏈路里,動態加速就是做智能選路,它會實時探測網絡的質量,并最終規劃出最優、延遲最低的回源路線。
一般使用動態加速的業務都是對延遲敏感度極高,追求高性能。在回源這段鏈路里有智能選路了,那接入層到客戶端這段鏈路能否再優化呢?
答案是可以。平臺可以使用一些私有協議進一步提高傳輸效率,而QUIC是一個標準化的協議,可以讓很多研發能力不是很強的平臺也能夠借助很多標準和開源的方案接入,讓客戶端到邊緣節點這段鏈路用QUIC高速傳輸。另外一般會建議客戶在端上做TCP和UDP的競速邏輯,端上探測2種協議的傳輸速度,在弱網的時候用QUIC協議保證高可用性,網絡好的時候用TCP,最終拿到一個平衡的最低延遲的收益。
從阿里云CDN動態加速場景的實踐數據看,動態加速再接入QUIC后,動態請求總耗時降低29%,靜態請求總耗時降低34%。
三、未來展望
阿里云CDN邊緣程序ER目前支持代碼包2MB以下的JavaScript代碼部署,正在努力支持更多的語言和環境,例如使用Wasm技術讓C、 C++、 Rust、Go的程序也能夠部署到ER上,降低后端各種語言下沉到邊緣的難度。在應用場景上,邊緣程序ER目前在前端場景得到了較好的落地和實踐,但我們認為邊緣輕量計算平臺的用武之地還有很多,例如站點托管、API網關、IoT數據清洗聚合、Abtest等,這塊也是期待更多的客戶接入后和我們一起探索。
關于QUIC協議,目前阿里云CDN線上的QUIC已經有了Tbps級別的大流量驗證,并且為客戶帶來了明顯的延遲收益。另外,阿里云CDN也在關注兼容IETF標準的QUIC,IETF目前已經是第34個草案了,預計將在未來的幾個月內定稿。此外,像多路徑QUIC也是重點研究方向,實際應用的場景例如移動端App,手機App有wifi、移動網絡雙通道,有了多路徑QUIC后,當單邊信號強度很弱時,就可以通過另一邊通道進行補償,最終實現平衡穩定的網絡傳輸。在應用場景上,阿里云CDN的QUIC正在逐步擴展到直播,直播對卡頓、弱網可用性的要求甚至比短視頻更高,對直播推流拉流的QUIC協議支持和調優也是未來一段時間內的投入方向。
后續阿里云CDN會在“阿里云Edge Plus”公眾號里分享更多最新的產品能力、解決方案和技術實踐,歡迎大家一起探討。
阿里云CDN產品最佳實踐圖
點擊進入極速奔跑吧2021,回顧視頻詳情,了解更多優惠
原文鏈接:https://developer.aliyun.com/article/782055?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的阿里云CDN产品经理陈章炜:边缘创新技术和落地实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RISC-V应用创新大赛 | 一文详解R
- 下一篇: 开年赢好运!程序员加油包等你免费拿