(1). 概述
传统工作流的缺陷:
- 传统的工作流引擎,编排的大部分是人工审批任务,意味着任务流转效率低,系统吞吐低.而当下微服务大部分是程序化的自动任务,意味着任务高效流转,系统吞吐高.单点架构、同步响应、高度依赖DB的Activiti,显然支撑不了这样的场景.
- 传统的工作流引擎,都以jar包的形式,嵌入到业务程序中,直接通过调用本地方法的方式调度起业务TaskHandler.在单体架构下,这种集成方式简单易用.但是在微服务架构下,工作流的任务往往是分布在多个服务的,而且同一个服务往往还会根据负载情况部署不同数量的实例.如果还是采用引擎主动调用的方式,怎么寻址到具体的TaskHandler?当后端业务服务处理能力本身是瓶颈的时候,如果引擎还是不断的调用,只会进一步压垮服务.
(2). Zeebe架构图
(3). Zeebe架构
- Client(Job Workers),客户端是嵌入到应用程序(执行业务逻辑的微服务)的库,主要用于跟Zeebe集群连接通信.
- 发布工作流.
- 执行业务逻辑.
- 创建工作流实例/发布消息/激活任务/完成任务/失败任务.
- 处理运维问题.
- 更新实例流程变量.
- Gateway
- 转发请求到Brokers
- Gateway是无状态(stateless)无会话(sessionless)的,可以按需增加节点,以负载均衡及高可用.
- Broker
- 处理客户端发送的指令.
- 存储和管理运行中流程实例的状态.
- 分配任务给Job Workers(Client).
- Exporter
- 监控当前运行流程实例的状态.
- 分析历史的工作流数据以做审计或BI.
- 跟踪Zeebe抛出的异常(incident).
(4). Zeebe基础以及Client SDK源码剖析
- “Zeebe源码编译(一)”
- “Zeebe Broker安装(二)”
- “Zeebe Client简单入门(三)”
- “Zeebe ZeebeClient源码部析(四)”
- “Zeebe集群搭建(五)”
- “Zeebe源码之ZeebeClientFutureImpl(六)”
(5). Zeebe gateway目录
- “Zeebe Gateway源码之StandaloneGateway创建AtomixCluster详解(一)”
- “Zeebe Gateway源码之StandaloneGateway创建ActorScheduler详解(二)”
- “Zeebe Gateway源码之StandaloneGateway创建BrokerClient详解(三)”
- “Zeebe Gateway源码之StandaloneGateway创建Gateway详解(四)”
(6). Zeebe broker目录
- “Zeebe源码之Broker初始化(一)”
- “Zeebe源码之BrokerStartupProcess(二)”
- “Zeebe源码之StartupStep(三)”
- “Zeebe ClusterServicesStep源码之NettyMessagingService初始化之Client(四)”
- “Zeebe ClusterServicesStep源码之NettyMessagingService初始化之Server(五)”
- “Zeebe ClusterServicesStep源码之NettyUnicastService(六)”
- “Zeebe ClusterServicesStep源码之NodeDiscoveryProvider(七)”
- “Zeebe ClusterServicesStep源码之GroupMembershipProtocol(八)”
- “Zeebe ClusterServicesStep源码之ClusterCommunicationService(九)”
- “Zeebe ClusterServicesStep源码之ClusterEventService(十)”
- “Zeebe ClusterServicesStep源码之ApiMessagingServiceStep(十一)”
- “Zeebe ClusterServicesStep源码之NettyMessagingService案例(十二)”
- “Zeebe ClusterServicesStep源码之RemoteServerConnection(十三)”
- “Zeebe ClusterServicesStep源码之HandlerRegistry(十四)”
- “Zeebe ClusterServicesStep源码之CommandApiRequestHandler(十五)”