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

19-10-25 banq
                   

這篇博客文章介紹了如何在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

                   

美女漫画大全