天天看點

跨越行業絆腳石,阿裡雲函數計算釋出7大技術突破

Serverless 的本質是通過屏蔽底層的計算資源,來實作業務層開發的專注度和自由度。但越是往上抽象,雲廠商在底層的實作就越是複雜。函數計算将服務進一步拆分到函數的顆粒度,這勢必會給開發、運維、傳遞等帶來新的挑戰,例如如何對函數進行端雲聯調、如何對函數進行可觀測和調試、如何優化 GB 級别的鏡像冷啟動?這些以往在服務的顆粒度時,都不是問題的事情,成了 Serverless 大規模落地企業核心生産業務的絆腳石。

2021雲栖大會現場,阿裡巴巴研究員、阿裡雲智能雲原生應用平台總經理丁宇(叔同)重磅釋出了函數計算的7大技術創新和突破,加速現代應用架構的革新。 

跨越行業絆腳石,阿裡雲函數計算釋出7大技術突破

Serverless Devs 2.0:業内首發 Desktop,支援端雲聯調、多環境部署

開源近一年, Serverless 開發者平台 Serverless Devs 2.0 版本正式釋出。相比 1.0 ,2.0在性能、使用體驗實作全方位提升,業内首發桌面用戶端 Serverless Desktop,對桌面用戶端進行了精細設計兼具美感和實用主義,具備更強的企業級服務能力。

作為業内首個支援主流 Serverless 服務/架構的雲原生全生命周期管理的平台,Serverless Devs 緻力于為開發者打造 Serverless 應用開發一站式服務,Serverless Devs 2.0 提出多模式調試方案,包括打通線上線下環境;本地對接線上環境并進行調試的端雲聯調方案、本地直接進行開發态調試的本地調試方案、以及雲端運維态調試的線上調試/遠端調試方案等。新版本增加多環境部署部署能力,Serverless Devs 2.0 已支援一鍵部署架構 30 餘種,包括 Django,Express,Koa,Egg,Flask,Zblog,Wordpress 等。

業内首發執行個體級别可觀測和調試

執行個體是函數資源最小的可被排程的原子機關,類比容器的 Pod。Serverless 将異構基礎資源高度抽象,是以“黑盒問題”是 Serverless 大規模普及的核心落地之痛。業内同類産品均沒有透出“執行個體”概念,也從未在可觀測功能中将CPU、記憶體等名額透出,但可觀測就是開發者的眼睛,沒有可觀測,何談高可用呢?

函數計算重磅釋出執行個體級别可觀測能力,對函數執行個體進行實時監控和性能資料采集,并進行可視化展示,為開發者提供函數執行個體端到端的監控排查路徑。通過執行個體級别名額,您可以檢視 CPU 和記憶體使用情況、執行個體網絡情況和執行個體内請求數等核心名額資訊,讓“黑盒”不黑。同時,函數計算将通過開放部分執行個體登入權限,做到既能觀測,還能調試。

業内首發固定數量、定時、水位自動伸縮的執行個體預留政策

函數計算冷啟動受到多個因素影響:代碼和鏡像大小、啟動容器、語言運作時初始化、程序初始化、執行邏輯等,這依賴使用者和雲廠商的雙向優化。雲廠商會自動為每個函數配置設定最合适的執行個體數量,并進行平台側的冷啟動優化。但對于某些線上業務時延非常敏感,雲廠商無法代替使用者進行更深層的業務優化,如對代碼或依賴進行精簡、程式設計語言的選擇、程序的初始化、算法優化等。

業内同類産品普遍是采用預留固定執行個體數量的政策,即讓使用者配置 N 個并發值,除非手動調整,否則在配置設定了 N 個執行個體後不會再伸或者縮。這種方案隻解決了部分業務高峰期的冷啟動延時,但大大增加了運維成本和資源成本,對紅包大促等帶有不定期峰谷的業務,其實并不友好。

 是以,函數計算率先将部分執行個體資源的排程權限授予使用者,允許使用者通過固定數量、定時伸縮、按水位伸縮、混合伸縮等多元度的執行個體預留政策,來預留适量函數執行個體,分别滿足業務曲線相對平穩(如AI/ML場景)、峰谷時間段明确(如遊戲互娛、線上教育、新零售等場景)、突發流量無法預估(如電商大促、廣告等場景)、業務混雜(如Web背景、資料處理等場景)等不同場景的訴求,進而降低冷啟動對時延敏感型業務的影響,真正實作彈性和性能兼顧的終極目标。

業内率先推出 GPU 執行個體

函數計算提供彈性執行個體和性能執行個體兩種執行個體類型,彈性執行個體規格從 128 MB 到 3 GB,隔離粒度做到了整個雲生态最細,能真正實作普适場景下資源使用率 100%;性能執行個體規格區間範圍包含4 GB、8 GB、16 GB和32 GB。資源上限更高,主要适用于計算密集型場景,如音視訊處理、AI模組化和企業級Java應用等場景。 随着專用領域硬體加速的蓬勃發展,各 GPU 廠商均推出了視訊編解碼專用 ASIC,比如:英偉達從 Kepler 架構內建視訊編碼專用電路、從 Fermi 架構內建視訊解碼專用電路。

函數計算正式推出了基于 Turning 架構的 GPU 執行個體,使得 Serverless 開發者可以将視訊編解碼的 workload,下沉到 GPU 硬體加速,進而大大加快了視訊生産、視訊轉碼的效率。

最高可傳遞 2w 執行個體/分鐘

所謂“無伺服器”,并不是說軟體應用不需要伺服器就可以運作了,而是指使用者無須關心軟體應用運作時,涉及的底層伺服器的狀态、資源(比如 CPU、記憶體、磁盤及網絡)和數量。軟體應用正常運作所需要的計算資源由雲計算廠商動态提供,但實際上,使用者還是會關心雲廠商的資源傳遞能力,以及應對突發流量場景下資源不足導緻的通路波動。

函數計算依托于阿裡雲強大的雲基礎設施服務能力,通過神龍裸金屬資源池和 ECS 資源池雙池互備,在業務高峰期,實作最大傳遞達 2w 執行個體/分鐘,這近一步提升了函數計算在客戶核心業務上的傳遞能力。

VPC 網絡建連優化:從10s 優化至 200ms

當使用者需要在函數中通路使用者 VPC 中的資源,例如 RDS/NAS 時,需要打通 VPC 網絡。業内 FaaS 産品普遍采用動态挂載 ENI 的方式來實作 VPC 打通,即在 VPC 建立一個 ENI,挂載到 VPC 中執行函數的機器上。該方案讓使用者能非常簡單地關聯後端雲服務,但 ENI 挂載的速度一般需要10秒以上,在延時敏感業務場景下帶來極大的性能開銷。

函數計算通過将 VPC 網關服務化,實作計算和網絡解耦,計算節點的伸縮不再受限于 ENI 挂載的能力。該方案由網關服務負責 ENI 的挂載、網關節點的高可用和自動伸縮,而函數計算專注于計算節點的排程,最終實作 VPC 網絡建連時,函數冷啟動時間降至 200 ms。

GB 級别鏡像啟動:從分鐘級優化至秒級

函數計算在2020年8月率先釋出了容器鏡像的函數部署方式,AWS Lambda 在2020年12月Re-Invent,國内友商在2021年6月也相繼宣布了 FaaS 支援容器的重磅功能。冷啟動一直都是 FaaS 的痛點,引入比代碼壓縮包大幾十倍的容器鏡像後,加重了冷啟動過程帶來的時延。

函數計算創新性的發明了 Serverless Caching,根據不同的存儲服務特點,建構資料驅動、智能高效的緩存體系,實作軟硬體協同優化,将 Custom Container 體驗進一步提升。到目前為止,函數計算已經将鏡像加速優化到了較高的水準。我們在函數計算的公開用例(

https://github.com/awesome-fc

)裡面,挑選了4個典型的鏡像,并将它們适配至國内外幾個大型雲廠商進行橫向對比,每間隔3小時調用上述鏡像,重複數次。

實驗證明,在 GB 級别鏡像冷啟動的場景下,函數計算已經實作了分鐘級到秒級的跨越。

先行一步,志在千裡

2009年,伯克利就當時興起的雲計算提出6點預測,包括服務的按需付費成為可能、實體硬體的使用率将大大提高等,在過去的12年間,這些都已成為事實。

2019年,伯克利再次預測 Serverless 計算将會成為雲時代預設的計算範式,并取代 Serverful (傳統雲)計算模式。

參照雲計算這12年的發展曆程,Serverless 正處于驗證伯克利預測的第3年,剛過四分之一。這3年間,從雲的未來的美好暢想,到雲廠商倡導的 Serverless First 和大規模投入,再到企業使用者充分利用 Serverless 的優勢來優化現有架構,并客觀的面對影響 Serverless 大規模落地企業核心業務的絆腳石,再到今天,通過技術創新和突破來化解行業共同的痛點。這不僅需要先行一步的勇氣和魄力,更需要志在千裡的使命和責任。 

繼續閱讀