zeebe内部实现机制

在内部,Zeebe被实现为在记录流(分区、partitions)上工作的流处理器的集合。 使用流处理模型,因为它是一种统一的方法来提供:

  • 命令协议(请求 - 响应),
  • 记录导出(流),
  • 工作流评估(异步后台任务)

也会记录导出依次解决了历史问题:流提供了工作流引擎需要生成的详尽的审计日志。

State Machines

Zeebe管理有状态实体:作业,工作流等。在内部,这些实体被实现为由流处理器管理的状态机。

状态机模式的概念很简单:状态机的实例总是处于几种逻辑状态之一。 从每个状态,一组转换定义下一个可能的状态。 过渡到新状态可能会产生输出/副作用。

让我们来看看状态机的工作情况。 简化,看起来如下:

zeebe内部实现机制_第1张图片

 

每个椭圆形都是一个状态。 每个箭头都是一个状态转换。 请注意每个状态转换如何仅适用于特定状态。 例如,当状态为CREATED时,无法完成作业。

Events and Commands

状态机中的每个状态更改都称为事件。 Zeebe将每个事件作为记录发布在流上。

可以通过提交命令来请求状态更改。 Zeebe代理从两个来源接收命令:

  • 客户端远程发送命令。 示例:部署工作流,启动工作流实例,创建和完成作业等。
  • 代理本身生成命令。 示例:锁定作业以供工人独占处理等。

收到后,命令将作为记录在已寻址的流上发布。

Stateful Stream Processing

流处理器按顺序读取记录流,并根据寻址实体的生命周期解释命令。 更具体地说,流处理器重复执行以下步骤:

  1. 从流中获取下一个命令。
  2. 根据状态生命周期和实体的当前状态确定命令是否适用。
  3. 如果该命令适用:将其应用于状态机。 如果命令是由客户端发送的,则发送回复/响应。
  4. 如果该命令不适用:拒绝它。 如果它是由客户端发送的,则发送错误回复/响应。
  5. 发布报告实体新状态的事件。

例如,处理“创建作业”命令会生成“创建作业”事件。

Command Triggers

在一个实体中发生的状态更改可以自动触发另一个实体的命令。 示例:作业完成后,相应的工作流程实例将继续下一步。 因此,事件作业已完成会触发命令“完成活动”。

zeebe qq交流群群号:856546010

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(zeebe)