從函數計算架構看 Serverless 的演進與思考

導讀:雲計算之因此可以成爲 DT 時代顛覆性力量,是由於其本質是打破傳統架構模式、下降成本並簡化體系結構,用全新的思惟更好的知足了用戶需求。而無服務器計算(Serverless Computing)做爲這個巨大市場的下一個階段的進化產物,將真正幫助企業實現只專一於業務和構建應用程序,而沒必要擔憂 IT 基礎設施,這也將成爲雲服務商將來競爭的關鍵。

什麼是無服務器計算

雲原生計算基金會(Cloud Native Computing Foundation, CNCF)對無服務器計算做了以下定義:html

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.

無服務器計算是指開發者在構建和運行應用時無需管理服務器等基礎設施。應用被解耦爲細粒度的函數,函數是部署和運行的基本單位;用戶只爲實際使用的資源付費。可見,serverless 計算可以幫助應用開發者擺脫服務器等底層基礎設施管理的負擔,專一於業務層的創新。後端

圖 1 - 無服務器計算的特色

無服務器計算的發展歷史

實際上,Serverless 不是一個新概念。計算、存儲等領域的不少服務都是 serverless 的模式。例如阿里雲推出的第一個雲服務,對象存儲(OSS),就是 serverless 形態的存儲服務。用戶不須要關心數據是如何存儲在底層服務器上,只爲實際使用的存儲資源付費。安全

統計數據代表,近年來,各個雲服務商推出的新服務/新功能,超過 70% 都是 serverless 形態。隨着雲端 serverless 類型的服務種類愈來愈豐富,用戶可以快速使用多種服務構建彈性高可用的雲原生應用。所以,serverless 計算正變得愈來愈流行。服務器

圖 2 – 無服務器計算已經無處不在

從函數計算架構看無服務器計算的特性

在 serverless 計算中,平臺服務接管了底層基礎設施的管理,所以平臺服務必須處理好容錯和資源伸縮等問題,才能充分發揮 serverless 計算的能力。網絡

從阿里雲函數計算架構圖不難看出:API 服務層完成身份驗證、元數據的讀寫等功能。架構

  • 同步調用函數時,API 服務模塊從資源調度模塊獲取可用的函數執行引擎併發送請求,最後取回結果;
  • 異步調用函數時,則將事件寫入到消息隊列後即返回。由事件分發模塊分發事件,整個流程和同步調用相似。

圖 3 - 阿里雲函數計算架構

實時彈性伸縮是函數計算的核心優點,當用戶負載出現波峯時,系統能實時擴張資源,平滑應對峯值訪問。以異步事件處理爲例,整個處理流程分爲三步:併發

  1. 事件寫入函數計算的事件隊列;
  2. 事件分發器從隊列中讀取事件,並調用對應的函數處理事件;
  3. 用戶函數處理事件。

圖 4 - 函數計算實時伸縮

函數計算系統會監控用戶的負載變化,各組件均可以根據用戶負載動態伸縮。如上圖所示,當用戶 A 的事件產生速率變大時,系統會自動在每一個環節給 A 分配更多的資源,以匹配事件處理的能力。app

函數計算採用多級資源調度策略,系統會根據用戶負載和資源池水位預判需求,提早準備好計算資源。依託於阿里雲飛天分佈式系統平臺多年的技術積累,在調度的實時性和準確性上取得了很好的平衡,具有毫秒級彈性伸縮的能力。less

無服務器計算的典型應用場景

藉助函數計算,用戶幾乎能夠構建任何類型的應用程序或後端服務,包括 Web 應用後端服務,大規模文件處理,數據實時流式處理等等。運維

例如藉助對象存儲和函數計算的集成,用戶只須要編寫函數處理單個視頻。當有大量視頻文件被上傳到對象存儲服務後,會自動觸發多個函數實例併發處理。

圖 5 - Serverless 視頻轉碼服務

使用函數計算的 HTTP 觸發器,用戶只須要編寫函數處理單個請求。當 TPS 升高時,函數計算會自動擴容計算資源執行多個函數實例處理請求。

圖 6 - Serverless 網站後端服務

無服務器計算對用戶的價值

自阿里雲函數計算上線以來,被開發者普遍的用於大規模多媒體數據並行處理、日誌/物聯網數據的流式處理以及網站後端服務等場景中。從實際使用狀況來看,serverless 計算在工程效率、可靠性、性能、成本和安全性等方面給用戶帶來了巨大的價值。

  • 工程效率:藉助函數計算和其餘雲端服務的集成,用戶只須要編寫少許代碼就能夠串聯多個服務完成複雜的功能。用戶不須要負擔服務器配置/升級,資源擴容/縮容等繁瑣工做,運維成本大幅下降;
  • 可靠性:用戶不須要購買或維護任何的服務器,不須要安裝任何的軟件,藉助函數計算,系統自動處理基礎設施層各類錯誤,減小宕機、網絡中斷等危機狀況發生,提高系統可靠性;
  • 彈性伸縮:應用程序所需計算資源的伸縮能在毫秒級別由 serverless 計算平臺自動完成,用戶不須要負責增減服務器的數量;
  • 低成本:不須要對計算和存儲之類的服務預留容量。若是代碼沒有運行,就不會收費。研究數據代表,70% 以上的服務器資源並未獲得充分利用,函數計算採用全新模式,資源使用率達 100%,實踐結果顯示,一般能節省 10%-90% 的成本。

也就是說,藉助函數計算意味着開發者能夠專一在產品代碼上,而無須管理和操做雲端或本地的服務器或運行時。生產實踐中,用戶用幾百行代碼就能夠實現一個規模上億、日調用次數幾十億次的圖片處理服務。

從雲計算 1.0 時代到 2.0 時代

雲計算 1.0 時代,基礎設施的雲化(IaaS)爲用戶提供了和傳統 IT 環境近乎一致的體驗,讓用戶能把應用無縫遷移到雲端。當人人都能獲取所需的計算資源後,如何更高效的管理和使用計算資源,函數即服務(FaaS)則是雲計算 2.0 時代最爲重要的問題。阿里雲函數計算這樣的無服務器計算服務,可以從工程效率、可靠性、性能、成本和安全性等方面給用戶帶來巨大的價值,爲廣大開發者打開了一扇通往美麗新世界的大門。

10 月 9 日,阿里雲宣佈正式推出函數計算 2.0 解決方案,爲用戶提供更具性價比和更高效開發運維體驗的 Serverless 計算服務。函數計算 2.0 提供了豐富的計費方式,全新的實例類型、靈活的自定義運行時、全方位升級的工具鏈。

圖 7 - 預付費和後付費

函數計算 2.0 經過一系列創新的功能,解決了當前 Serverless 計算服務在成本、性能、應用構建等方面的痛點,極具競爭力。

全球首家推出預付費(包年包月)的計費模式。相較於後付費,預付費單價下降 70% 以上。應用所需資源中穩定部分使用預付費模式,單價低;彈性部分使用後付費,資源利用率高。結合預付費和後付費,用戶可以顯著下降成本。

圖 8 - 預留實例和按量實例

更重要的是,函數計算 2.0 新增預留實例類型,容許用戶自行管理實例的申請和釋放。

經過預留實例,用戶可以提早預熱函數或者長期保持常駐實例,杜絕由於實例啓動帶來的請求延遲。當負載超過預留實例處理能力,系統會自動擴容,使用按量實例處理請求。同時函數計算提供了詳細的實例使用指標,幫助用戶輕鬆預留合理數目的實例。

圖 9 - 用戶體驗

用戶在函數計算平臺上構建彈性高可用的雲原生應用,若是沒有好用的開發、調試、運維工具,使用體驗將大打折扣。

函數計算 2.0 大幅加強了 Serverless 應用構建、運維等方面的用戶體驗。用戶能夠在本身的開發機本地環境中建立和雲端運行環境一致的沙盒,進行依賴包安裝、斷點調試等操做。

函數計算 2.0 也提供了 VSCode,Intellij Idea,PyCharm 等流行開發工具的插件,經過圖形用戶界面的交互方式,進一步下降了工具的使用門檻。


本文做者:楊皓然

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索