什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

本文將Cloud雲計算的一些框架架構,並將深入介紹OpenFaaS和Knative,以介紹其體系結構,主要組件和基本安裝步驟。如果您對此主題感興趣,並計劃使用開源平臺開發無服務器應用程序,那麼本文將使您對這些解決方案有更好的瞭解。

什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

OpenFaaS組件和流程

什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

Knative架構

在過去的幾年中,無服務器體系結構已迅速普及。該技術的主要優點是無需基礎架構管理即可創建和運行應用程序的能力。換句話說,當使用無服務器架構時,開發人員不再需要分配資源,擴展和維護服務器來運行應用程序或管理數據庫和存儲系統。他們的唯一責任是編寫高質量的代碼。

有許多用於構建無服務器框架的開源項目(Apache OpenWhisk,IronFunctions,Oracle的Fn,OpenFaaS,Kubeless,Knative,Project Riff等)。此外,由於開放源代碼平臺提供了訪問IT創新的事實,因此許多開發人員對開放源代碼解決方案很感興趣。

OpenWhisk,Firecracker和Oracle FN

在深入研究OpenFaaS和Knative之前,讓我們簡要描述這三個平臺。

Apache OpenWhisk 是一個用於無服務器計算的開放雲平臺,該平臺使用雲計算資源作為服務。與其他開源項目(Fission,Kubeless, IronFunctions)相比, Apache OpenWhisk 具有較大的代碼庫,高質量的功能和大量的參與者。但是,該平臺的太大工具(CouchDB,Kafka,Nginx,Redis和Zookeeper)給開發人員帶來了困難。另外,該平臺在安全性方面還不完善。

Firecracker是Amazon引入的虛擬化技術。該技術為虛擬機提供了最小的開銷,並允許創建和管理隔離的環境和服務。Firecracker提供了稱為微型VM的輕型虛擬機,該虛擬機使用基於硬件的虛擬化技術實現了完全隔離,同時提供了常規容器級別的性能和靈活性。給開發人員帶來的不便之一是該技術的所有開發都是用Rust語言編寫的。還使用了具有最少組件集的截短軟件環境。為了節省內存,減少啟動時間並提高環境中的安全性,啟動了經過修改的Linux內核,該內核中已排除了所有多餘的東西。此外,功能和設備支持減少。該項目是在Amazon Web Services上開發的,旨在提高AWS Lambda和AWS Fargate平臺的性能和效率。

Oracle Fn 是一個無服務器的開放服務器平臺,為雲系統提供了更高的抽象級別,以支持功能即服務(FaaS)。與在Oracle Fn中的其他開放平臺一樣,開發人員在各個功能級別上實現邏輯。與現有的商業化FaaS平臺(例如Amazon AWS Lambda,Google Cloud Functions和Microsoft Azure Functions)不同,Oracle的解決方案定位為沒有供應商鎖定。用戶可以選擇任何雲解決方案提供商來啟動Fn基礎架構,組合不同的雲系統或在自己的設備上運行平臺。

Kubeless 是一種基礎架構,支持在集群中部署無服務器功能,並使我們能夠在Python,Node.js或Ruby代碼中執行HTTP和事件切換。Kubeless是一個使用Kubernetes的 核心功能(例如部署,服務,配置卡(ConfigMaps)等)構建的平臺 。這樣可以節省較小尺寸的Kubeless基礎代碼,也意味著開發人員不必重播Kubernetes內核本身中已經存在的大部分調度邏輯代碼。

Fission 是一個開源平臺,可通過Kubernetes提供無服務器架構。Fission的優點之一是它可以處理自動擴展Kubernetes中資源的大多數任務,從而使您擺脫了手動資源管理。Fission的第二個優點是,您不必與一個提供程序綁定,只要它們支持Kubernetes群集(以及您的應用程序可能具有的任何其他特定要求),您就可以自由地從另一個提供程序遷移到另一個提供程序。

使用OpenFaaS和Knative的主要好處

OpenFaaS和Knative是公共可用的免費開源環境,用於創建和託管無服務器功能。這些平臺使您能夠:

  • 減少空閒資源。
  • 快速處理數據。
  • 與其他服務互連。
  • 通過大量處理大量請求來平衡負載。

但是,儘管一般而言平臺和無服務器計算都具有優勢,但是開發人員必須在開始實施之前評估應用程序的邏輯。這意味著您必須首先將邏輯分解為單獨的任務,然後才能編寫任何代碼。

為了清楚起見,讓我們分別考慮每個開源無服務器解決方案。

如何使用OpenFaaS構建和部署無服務器功能

OpenFaaS的主要目標是使用Docker容器簡化無服務器功能,從而使您能夠運行復雜而靈活的基礎架構。

OpenFaas 設計與架構

OpenFaaS架構基於雲原生標準,包括以下組件:API網關,功能看門狗以及容器編排Kubernetes,Docker Swarm,Prometheus和Docker 。根據下面顯示的架構,當開發人員使用OpenFaaS時,該過程從Docker的安裝開始,以Gateway API結束。

什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

OpenFaaS組件和流程

API網關

通過API網關,提供了通往所有功能位置的路由,並且通過Prometheus收集了雲原生指標。

什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

客戶端到功能路由

功能看門狗

Watchdog組件集成到每個容器中,以支持無服務器應用程序,並在用戶和功能之間提供通用接口。


什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

OpenFaaS看門狗接口

Watchdog的主要任務之一是組織在API網關上收到的HTTP請求並調用所選的應用程序。


OpenFaaS的優缺點

OpenFaaS簡化了系統的構建。修復錯誤變得更加容易,並且向系統添加新功能比單片應用程序要快得多。換句話說,OpenFaaS允許您隨時隨地以任何編程語言運行代碼。

但是,也有缺點:

  • 對於某些編程語言,漫長的冷啟動時間。
  • 容器啟動時間取決於提供者。
  • 該功能的有效期有限,這意味著並非所有系統都可以根據Serverless運行。(使用OpenFaaS時,計算容器無法將可執行的應用程序代碼長時間存儲在內存中。該平臺將自動創建和銷燬它們,因此無法實現無狀態。)

使用Knative部署和運行功能

Knative允許您開發和部署基於容器的服務器應用程序,可以輕鬆在雲提供商之間移植。Knative是一個開放源代碼平臺,剛剛開始流行,但如今對開發人員非常感興趣。

Knative的體系結構和組件

Knative體系結構由Building,Eventing和Serving組件組成。

什麼是無服務器雲計算開源框架:OpenFaaS,Knative等

本地架構和組件

本地架構和組件

建造

Knative的Building組件負責確保從源代碼啟動集群中的容器程序集。該組件在現有Kubernetes原語的基礎上工作,並且對其進行了擴展。

三項賽

對E Knative的放空構件 是負責通用訂閱,遞送和以及創建鬆散耦合體系結構組件之間的通信的事件管理。另外,此組件使您可以擴展服務器上的負載。

服務

服務組件的主要目標是支持無服務器應用程序和功能的部署, 從頭開始自動擴展,Istio組件的路由和網絡編程以及已部署的代碼和配置的快照。Knative使用Kubernetes作為協調器,而Istio執行查詢路由和高級負載平衡的功能。

帶有基數的最簡單函數的示例

您可以使用多種方法在Knative上創建服務器應用程序。您的選擇將取決於您對各種服務的既定技能和經驗,包括Istio,Gloo,Ambassador,Google,尤其是Kubernetes Engine,IBM Cloud,Microsoft Azure Kubernetes Service,Minikube和Gardener。

只需為每個Knative組件選擇安裝文件。可以在下面找到所需的三個組件的主要安裝文件的鏈接:

  • 服務組件
  • 建築構件
  • 事件組件

這些組件中的每個組件都具有一組對象。有關這些組件的語法和安裝的更多詳細信息,可以 在Knative自己的開發站點上找到。

Knative的優缺點

Knative有許多好處。像OpenFaaS一樣,Knative允許您使用容器創建無服務器環境。反過來,這又使您可以獲得基於本地事件的體系結構,在該體系結構中不受公共雲服務的限制。Knative還可以使容器組裝過程自動化,從而提供自動縮放。因此,無服務器功能的能力基於預定義的閾值和事件處理機制。

此外,藉助Knative,您可以在內部,在雲中或在第三方數據中心中創建應用程序。這意味著您不受任何一個雲提供商的束縛。 並且由於其基於Kubernetes和Istio的運營,Knative具有更高的採用率和更大的採用潛力。

Knative的主要缺點之一是需要獨立管理容器基礎架構。簡而言之,Knative並非針對最終用戶。但是,由於這個原因,越來越多的商業管理的Knative產品變得可用,例如Google Kubernetes引擎和IBM Cloud Kubernetes服務的Managed Knative。

結論

儘管開源無服務器平臺的數量不斷增長 ,但OpenFaaS和Knative將繼續在開發人員中流行。值得注意的是,這些平臺無法輕鬆比較,因為它們是為不同任務而設計的。

與OpenFaas不同,Knative並不是成熟的無服務器平臺,但它更適合作為創建,部署和管理無服務器工作負載的平臺。 但是,從配置和維護的角度來看,OpenFaas更簡單。使用OpenFaas,無需像安裝Knative一樣單獨安裝所有組件,並且如果已經安裝了必需的組件,則無需清除以前的設置和資源即可進行新開發。

儘管如此,如上所述,OpenFaaS的一個顯著缺點是容器啟動時間取決於提供商,而Knative並不與任何單個雲解決方案提供商綁定。基於兩者的利弊,組織還可以選擇同時使用Knative和OpenFaaS來有效地實現不同的目標。


-----------------------------------------------------------------------------------------

關注我、關注第一時間的Cloud雲計算資訊!

Cloud雲計算追蹤行業動態,提供有態度的解讀方式!


分享到:


相關文章: