天天看點

雲原生:什麼是 FaaS ?

概述

FaaS,Function as a Service,"功能即服務"(也譯作“函數即服務”),是一種在無狀态容器中運作的事件驅動型計算執行模型,這些功能将利用服務來管理伺服器端邏輯和狀态。 

它允許開發人員以功能的形式來建構、運作和管理這些應用包,無需維護自己的基礎架構。

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

該平台通常位于雲端,但模型正在擴充至包含内部部署和混合部署。

無伺服器會對基礎架構問題進行抽象處理,例如管理或置備伺服器及開發人員的資源配置設定,并将其提供給平台,這樣開發人員就可以專注于編寫代碼和實作業務價值。

無伺服器架構

功能是一個運作業務邏輯的軟體。應用可以由許多功能組成。

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

以下是 FaaS 的一些常見示例:

AWS Lambda

Google 雲功能

Microsoft Azure 功能(開源)

OpenFaaS(開源)

FaaS是如何工作的?

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

FaaS 基礎架構通常是按需計量的,主要通過​​事件驅動型執行模型​​​進行,是以它會随時待命,但不需要任何伺服器程序在背景持續運作(這一點與​​平台即服務 (PaaS)​​不同)。

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

實際上,現代應用将由以下解決方案混合而成:功能、微服務和長期運作的服務。

雲提供商會讓您的功能處于可用狀态并管理資源配置設定。由于功能是事件驅動而不是資源驅動的,是以它們很容易進行擴充。

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

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

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

在内部運作時,這種動态特性還可以提高平台密度,進而允許運作更多工作負載并優化資源消耗。

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

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

您可以使用 FaaS 建構完全無伺服器化的應用,也可以打造部分無伺服器、部分傳統微服務元件的應用。

FaaS 的優勢

提高開發人員的生産率并縮短開發時間

不負責伺服器管理

易于擴充,且橫向擴充由平台管理

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

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

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

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

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

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

小結

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

雲原生:什麼是 FaaS ?