什麼是功能即服務(FaaS)?

danny_2018發表於2022-04-28

功能即服務(或稱為 FaaS)是一種雲端計算服務,它允許開發人員以功能的形式來構建、計算、執行和管理這些應用包,無需維護自己的基礎架構。

FaaS 是一種在無狀態容器中執行的事件驅動型執行模型,這些功能將利用 FaaS 提供商的服務來管理伺服器端邏輯和狀態。

FaaS 解決方案可透過主流公共雲提供,並可在內部置備,這樣就為企業 IT 應用開發新增了一些重要的功能。獲取雲原生策略指南,為藉助 FaaS 實施無伺服器方案做好準備。FaaS 的一些常見示例:

IBM 雲功能

Amazon 的 AWS Lambda

Google 雲功能

Microsoft Azure 功能(開源)

OpenFaaS(開源)

FaaS和無伺服器

FaaS 是一種實現無伺服器計算的方法,藉此開發人員可以編寫業務邏輯,然後在完全由平臺管理的 Linux 容器中執行這些業務邏輯。

雖然通常只是一個使用雲端計算服務的雲端計算平臺,但該模型還在擴充套件中,包含內部部署和混合部署。

無伺服器會對基礎架構問題進行抽象處理,例如管理或置備伺服器及開發人員的資源分配,並將其提供給平臺(如紅帽OpenShift),這樣開發人員就可以專注於編寫程式碼和實現業務價值。

功能是作業系統上的一個執行業務邏輯的軟體。應用可以由許多功能組成。

使用 FaaS 模型是透過無伺服器架構來構建應用的方法之一,但隨著無伺服器模式的日漸普及,開發人員正在尋找支援構建無伺服器微服務和無狀態容器的解決方案。

功能即服務是如何工作的?

FaaS 為開發人員提供了一種執行 Web 應用的抽象方式,可以在無需管理伺服器的情況下響應事件。例如,上載檔案可觸發自定義程式碼,從而將檔案轉碼為各種格式。

FaaS 基礎架構通常是由服務提供商按需計量的,主要透過事件驅動型執行模型進行,因此它會隨時待命,但不需要任何伺服器程式在後臺持續執行(這一點與平臺即服務 (PaaS)不同)。

現代 PaaS 解決方案提供了無伺服器功能(作為通用工作流的一部分),藉此開發人員可以實現應用的部署,從而模糊了 PaaS 和 FaaS 之間的界線。

實際上,整個應用將由以下解決方案混合而成:功能、微服務和長期執行的服務

FaaS動態擴充套件

提供商會透過應用程式設計介面(API)讓您的功能處於可用狀態並管理資源分配。由於功能是事件驅動而不是資源驅動的,因此它們很容易進行擴充套件,這種擴充套件允許提高效率和價值。

為了發揮部分優勢,其體系架構會受到一定製約(例如對功能執行施加時間限制),因此需要做到功能的快速啟動和執行。

功能會在毫秒內啟動並處理各個請求。如果您的功能有多個同步請求,系統將建立儘可能多的功能副本來滿足需求。

當需求下降時,應用會自動減少功能副本的數量。動態擴充套件是 FaaS 的一項優勢,而且頗具成本效益,因為提供商僅對使用的資源收費,而不對空閒時間收費。

在內部執行時,這種動態特性還可以提高平臺密度,從而允許執行更多工作負載並最佳化資源消耗和功能。

需要橫向擴充套件的事件驅動型服務可作為功能和 RESTful 應用進行工作。

FaaS 非常適合大資料量的交易、經常發生的工作負載,例如報表生成、影像處理或任何計劃任務。常見的 FaaS 用例包括資料處理、IoT 服務、移動和 Web 應用。

您可以使用 FaaS 構建完全無伺服器化的應用,也可以打造部分無伺服器、部分傳統微服務元件的應 用 ,以便利用更新的技術和容器編排系統,如 Kubernetes。

FaaS的優勢

提高開發人員的生產率並縮短開發時間

不負責伺服器管理

易於擴充套件,且橫向擴充套件由平臺管理

僅在必要和需要時消耗資源或支付費用

幾乎可以用任何程式語言來編寫功能

FaaS 和無伺服器之間有何區別?

最初,FaaS 和無伺服器多多少少具有一定的相似性,但現在,無伺服器的含意已擴充套件至更多的體系架構模式和實踐,除了以 FaaS 編碼的自定義業務邏輯外,它們還大量使用了通用服務。

微服務甚至傳統應用都可以使用無伺服器,只要它們可以容器化並且符合動態擴充套件和狀態管理的要求即可。

"無伺服器"一詞也用於表示託管服務(例如資料庫和訊息傳遞系統)- 由於系統由雲提供商或第三方公司管理,因此無需開發人員或管理員來作業系統。

FaaS 與主要透過事件驅動型體系架構連線的通用後端服務(如資料庫、訊息傳遞和身份驗證)相結合,可為無伺服器開發人員帶來最大的收益。

來自 “ 全棧雲技術架構 ”, 原文作者:全棧雲技術架構;原文連結:https://mp.weixin.qq.com/s/N2ZQzTvTFhdreujYpS5pFw,如有侵權,請聯絡管理員刪除。

相關文章