Zeebe架构中有四个主要组件:客户端、网关、代理和导出器。
在Camunda Platform 8中,您只与客户合作。网关、代理和导出器预先配置为提供服务,但不可访问。
在本地或私有云部署中,所有组件都是相关的。
Clients(客户端)
客户端向Zeebe发送命令:
- 发布工作流
- 执行业务逻辑
- 创建工作流程实例
- 发布消息
- 激活任务
- 完成任务
- 失败任务
- 处理运维问题
- 更新流程实例变量
- 解决异常
客户端应用程序可以完全独立于Zeebe进行上下扩展。Zeebe代理不执行任何业务逻辑。
客户端是嵌入到应用程序(例如,执行业务逻辑的微服务)中以连接到Zeebe集群的库。
客户端通过使用基于HTTP/2的传输的gRPC连接到Zeebe网关。要了解有关Zeebe中gRPC的更多信息,请查看Zeebe API(gRPC)。
Zeebe项目包括官方支持的Java和Go客户端。社区客户端是用其他语言创建的,包括C#、Ruby和JavaScript。gRPC协议使生成一系列不同编程语言的客户端成为可能。
Job workers
Client中,执行单独任务的单元叫Job Worker。
Job worker是一个Zeebe客户端,它使用客户端API首先激活任务,并在完成后完成或失败任务。
Gateways(网关)
网关充当Zeebe集群的单个入口点,并将请求转发给代理。
网关是无状态和无会话的,可以根据需要添加网关以实现负载均衡和高可用性。
Brokers(代理)
Zeebe Broker是分布式的流程引擎,维护运行中流程实例的状态。
Brokers可以分区以实现横向扩容、副本以实现容错。通常情况下,Zeebe集群都不止一个节点。
需要注意的是,broker不包含任何业务逻辑。它只负责:
- 处理客户端发送的命令
- 存储和管理活动流程实例的状态
- 分配任务给job workers
Brokes形成一个对等网络(peer-to-peer),这样集群不会有单点故障。集群中所有节点都承担相同的职责,所以一个节点不可用后,节点的任务会被透明的重新分配到网络中其他节点。
Exporters(导出器)
exporter系统提供Zeebe内状态变化的事件流。这些事件流数据有很多潜在用处,包括但不限于:
- 监视正在运行的流程实例的当前状态
- 分析历史的工作流数据以做审计或BI
- 跟踪Zeebe抛出的异常(incident)
exporter提供了简洁的API,可以流式导出数据到任何存储系统。Zeebe官方提供开箱即用的Elasticsearch exporter,社区也提供了其他exporters。