跨越行业绊脚石,阿里云函数计算发布 7 大技术突破
作者|望宸 等
Serverless 的本質是通過屏蔽底層的計算資源,來實現業務層開發的專注度和自由度。但越是往上抽象,云廠商在底層的實現就越是復雜。函數計算將服務進一步拆分到函數的顆粒度,這勢必會給開發、運維、交付等帶來新的挑戰,例如如何對函數進行端云聯調、如何對函數進行可觀測和調試、如何優化 GB 級別的鏡像冷啟動?這些以往在服務的顆粒度時,都不是問題的事情,成了 Serverless 大規模落地企業核心生產業務的絆腳石。
2021 云棲大會現場,阿里巴巴研究員、阿里云智能云原生應用平臺總經理 丁宇(叔同)重磅發布了函數計算的 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 大規模落地企業核心業務的絆腳石,再到今天,通過技術創新和突破來化解行業共同的痛點。這不僅需要先行一步的勇氣和魄力,更需要志在千里的使命和責任。
特別感謝 墨飏、黛忻、筱姜、劉宇 對本文做出的貢獻。
戳下方鏈接,查看函數計算 FC 主頁!!
https://www.aliyun.com/product/fc?spm=5176.19720258.J_8058803260.52.485f2c4aaM43ka
總結
以上是生活随笔為你收集整理的跨越行业绊脚石,阿里云函数计算发布 7 大技术突破的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenYurt 深度解读|开启边缘设备
- 下一篇: 打破 Serverless 落地边界,阿