使用Spring Boot開發基於Kubernetes的Zeebe工作流應用 – Salaboy

banq發表於2019-10-25

這篇部落格文章介紹瞭如何在Kubernetes中使用Zeebe叢集以及如何使用Spring Boot構建連線到Zeebe叢集的應用程式。
Zeebe是Microservices Orchestration的工作流引擎,它非常易於使用,如果您在Kubernetes中執行,則很幸運,因為它提供了可以在現有叢集中安裝的Kubernetes Helm Charts
Zeebe的客戶端部分還提供了幾種使用不同框架和語言的整合,因此無論您使用哪種語言構建應用程式,都可以使用現有客戶端之一連線到Zeebe。在這篇部落格中,我將介紹Spring Boot整合。

為什麼選擇Zeebe及其運作方式?
如果您要構建微服務,則遲早會發現需要定義這些服務執行指定任務的順序。第一種也是最容易實現的方法是對服務內部的執行順序進行硬編碼呼叫,如果手頭的任務是非常技術性的,並且對您的業務並不重要,則可以將此呼叫順序硬編碼在程式碼中可能沒問題。但是,如果手頭的任務對於您的業務而言非常重要,並且需要頻繁更改以最佳化您的業務運作方式,那麼您可能想看看Zeebe。
Zeebe允許您定義和執行工作流程定義,以定義呼叫微服務的順序和條件。
從非常高的層次來看,Zeebe可以以非常有效和分散式的方式執行這些BPMN工作流,以實現每秒擴充套件至大吞吐量執行。當其他類似的解決方案依賴於關聯式資料庫來儲存工作流狀態時,Zeebe使用事件日誌,可以將事件日誌有效地儲存到磁碟,並在必要時透過答覆這些事件來完全還原。
從體系結構的角度來看,Zeebe提供了兩個主要元件Zeebe Brokers和Zeebe Gateway。Zeebe Brokers(安排在一個叢集中,通常稱為Zeebe叢集)是負責執行工作流程定義的一個個主機例項。Zeebe閘道器是您的應用程式與這些工作流例項進行互動的單個入口點。
Zeebe Broker負責在我們的工作流程中執行操作,並且它們旨在以非常可擴充套件的方式來執行此操作。所有查詢操作都在Zeebe群集之外進行委派。因此,使用Zeebe Exporters將經紀人中發生的所有操作外部化。常見的匯出器是ElasticSearch匯出器,它傳送要由ElasticSearch索引的所有代理事件。
Zeebe的典型實現如下所示:

  • 您已經在執行現有的服務/微服務
  • 您可以使用Zeebe Modeler或任何其他BPMN建模工具對工作流程進行建模
  • 您建立一個Zeebe群集
  • 您將工作流程模型部署到Zeebe叢集
  • 您建立並部署您的工作人員以將您的服務與工作流程執行聯絡起來
  • 服務或手動有人啟動工作流例項

示例入門
這個示例建立了一個非常簡單的工作流程定義,並在執行在Kubernetes叢集中的Zeebe中執行它。工作流定義定義了3個服務任務,這些任務需要實現三個Zeebe Worker。
要獲得Zeebe安裝在Kubernetes叢集,按照有關如何安裝官方的說明中使用helm群集Zeebe
步驟:

  1. 使用Zeebe Modeler建立您的工作流程定義
  2. 使用`zbctl`來部署和建立工作流例項
  3. 使用Zeebe Client依賴項建立一個Spring Boot專案以實現3個worker
  4. 資料將傳送到Elastic Search
  5. 您可以使用Zeebe Operate監視工作流例項(執行)

以下儲存庫包含有關如何在您自己的環境中從頭啟動並執行示例的說明。

https://github.com/salaboy/zeebe-k8s-getting-started/
示例Spring Boot Zeebe Workers的原始碼可以在這裡找到:

https://github.com/salaboy/zeebe-worker-spring-boot-example

相關文章