Zeebe與Kafka的天作之合:將Zeebe工作流引擎引入Apache Kafka實現微服務編排 - Bernd Rücker

banq發表於2019-11-19

Zeebe工作流引擎為什麼以及如何與Kafka出色地結合在一起?簡要介紹產品並解釋聯合用例,說明產品可以解決哪些問題,提示技術實施要點。

什麼是Zeebe

Zeebe是一個源可用的雲原生工作流引擎,主要用於微服務編排。在Zeebe中可以找到很好的介紹。

如果您認為工作流自動化只是關於人工任務和任務列表(=無聊),那是一個錯誤的印象。它是全自動業務流程的核心,例如訂單履行,應用程式管理或索賠管理。例如,我們的客戶24小時健身將工作流程用於所有工作:從簽訂新合同到使用門禁卡甚至為您開啟大門。我在5個您可能沒有考慮的工作流自動化用例中寫了各種用例。

Zeebe基於雲原生範例(請參閱我們如何構建高度可擴充套件的分散式狀態機),從而使其能夠水平擴充套件和恢復。

CamundaZeebe背後的開源供應商,提供Zeebe 的企業版以及託管雲產品

什麼是Kafka

Apache Kafka是高度可伸縮,可恢復且持久的事件匯流排。它可以用於高吞吐量訊息傳遞,事件驅動的體系結構,作為事件儲存或支援事件流體系結構。您可以在Kafka文件中找到一個很好的介紹

為什麼整合Zeebe和Kafka

產品不是競爭而是互補。而且,由於這兩種工具都具有基本的可伸縮性特徵,因此它們都可以在高吞吐量或低延遲的情況下工作,這使其成為天作之合。並且只是為了避免造成任何混亂:即使Zeebe以與Kafka類似的方式利用了許多分散式系統概念,它也不是基於Kafka的,Zeebe可以(並且經常)被單獨使用。但是因為產品是免費的,所以客戶選擇將它們組合在一起。讓我們探討可能的組合方案。

1. 微服務編排

微服務架構中,Kafka用作訊息或事件匯流排,這是環境的通訊主幹。您必須在該架構之上實現端到端業務流程,通常需要多個微服務的互動。這樣,您將需要使用Zeebe進行編排。例如訂單履行服務可以利用Zeebe執行訂單工作流程,該流程通過Kafka傳送命令或等待Kafka中的事件。

2. 根據流的片斷採取行動

您可能還擁有以Kafka為中心的流式體系結構。假設您收到付款事件並檢查可疑交易。然後,每次有可疑事件需要進一步檢查時,您都可以在Zeebe中啟動工作流程例項。對於這個簡單的用例,您可以使用例如ZeebeKafka聯結器

現實生活中另一個有趣的用例是在車輛維護領域。假設您有大量的感測器通過Kafka 不斷髮送測量值(機油壓力為80 psi)。現在,您已經有了一些巧妙的邏輯,可以基於這些度量來生成判斷(機油壓力非常高)。所有這些判斷也都通過Kafka傳送。

但是現在您想根據此判斷資訊採取行動,例如提醒操作人員組織一些維護工作。為此,您必須從無狀態事件流的世界進入有狀態工作流的世界,從大量資訊的世界(度量可能每秒傳送)到數量較少的世界,特別是您希望每個洞察僅啟動一次工作流程。

在客戶專案中,這是通過一個小型聯結器完成的,該聯結器從Kafka中讀取所有記錄,並在短時間內在記憶體中收集它們,並彙總事件以發現要執行的操作,例如啟動維護工作流例項。該元件還可以發現油壓是否實際上恢復正常,然後將其報告給正在執行的工作流例項。

為了彙總這種判斷結果,該專案使用了由業務需求定義的關聯識別符號,例如,車輛ID +感測器ID +缺陷名稱。這使得分類重複項變得容易。

3.通過Kafka釋出Zeebe事件

另一個有趣的組合具有完全不同的角度:Zeebe 圍繞正在執行的工作流編寫了大量稽核校訂audit資訊。許多客戶希望將這些資料釋出到他們自己的資料湖中,以提供強大的業務報告,例如根據客戶所在的國家/地區完成訂單需要多長時間,或者是否滿足某些SLA。Zeebe的體系結構可以輕鬆地將一些(或全部)事件傳送到您想要的任何地方,而Kafka可以輕鬆地將甚至大量事件可靠地傳輸到目的地。

現在,讓我們快速檢視Apache Kafka與Zeebe的三個主要聯絡點,以更好地理解我們如何實現上述用例:

  1. 從Kafka中攝取訊息(或事件)到Zeebe中
  2. 從Zeebe將訊息(或事件)釋出到Kafka上
  3. 將Kafka用作Zeebe歷史事件的骨幹

詳情圖片點選標題見原文

 

相關文章