Zeebe简介 Zeebe是一个用于微服务编排的开源工作流引擎。基于基于BPMN2.0可定义图形化工作流,Zeebe可以使技术和非技术利益相关者使用通用语言进行工作流程设计和协作。可使用Docker和Kubernetes进行部署,可构建来自Apache Kafka和其他消息传递平台的事件的工作流,可水平扩展处理非常高的吞吐量,可以导出用于监视和分析的工作流数据,具有很好容错能力,可无缝伸缩以处理不断增长的事务量。 组成 zeebe整体由三部分组成 client:多种语言的客户端 cluster:核心集群 exporter:支持多种接入的数据查询
客户端与Zeebe通过grpc通信,集群内部管理流程相关信息,业务由客户端完成处理。整体工作模式与Kafka类似。 客户端发起流程后,Zeebe集群创建相应的流程任务,等待执行,客户端的worker会固定轮询集群任务接口,领取任务到本地执行,完成(成功或失败)后上报集群,然后根据后续配置进行下一个任务的分发,直到流程结束。 1.1 Client 这部分是业务与Zeebe交互的模块,可以通过向集群发送指令实现流程的发布、执行、创建、更新等一系列操作。 与Kafka类似的是,接入Zeebe Client的服务模块需要拥有处理相应节点任务(job)的能力,在Client中执行单独任务的单元叫做(worker)。 Client通过GRPC与集群的gateway通信,集群中相应节点任务(job)的执行由Client中的worker实现。 1.2 Gateway 官方给出的ZeebeBroker中,部署模式分为三种:gateway、broker与gateway+broker结合。 Gateway是Zeebe集群的入口,客户端发送到gateway的请求通过负载均衡转发到brokers。gateway是无状态和无会话的,在部署时,可以按需增加节点,以实现负载均衡和高可用。 1.3 Broker Broker是Zeebe分布式流程引擎,维护运行中的流程实例状态。Brokers可以通过分区实现横向扩容,采用副本实现容错。要注意的是使用Docker部署ZeebeBrokers时,数据要软连到外部,因为Zeebe集群的数据是通过文件存储的,单纯的集群为了实现更高的效率只有写入修改而没有相应的查询功能,所有的数据通过文件存储在服务器上。 1.4 Exporter Exporter提供了Zeebe内部状态变化的事件流,通过对这些事件流数据的收集和监控,可以查询当前流程的运行实例状态、分析历史的工作流数据、跟踪异常。Exporter提供了简洁的API,可以导入到各种储存系统中,官方提供了开箱即用的ElasticSearch Exporter,社区中有其他类型的Exporter可以使用。 内部实现 2.1分布式流程引擎 作为Zeebe架构的核心模块,Zeebe Broker在实现集群的情况下,每个节点通过组成对等网络来保证不会出现单点故障,也就是说在网络中的所有节点都有相同的职责。 另外&