Conductor 项目结构优化及分析

本文探讨了Netflix的Conductor项目,分析了其技术架构和功能列表,包括流程引擎、任务、记录、监控和客户端通信。项目使用Gradle管理,支持多语言Worker。文章提到了对项目结构进行优化以提升维护性和迭代效率的需求,并预告了后续的迭代开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

认识项目接口最好从官方文档开始,官方的GitHub仓库 现在官方已经停止更新维护了,看到在官方仓库中的文档,个人觉的比较简陋。

官方的仓库为:https://github.com/Netflix/conductor
个人Fork仓库:https://github.com/0x00-Li/conductor

项目是通过Gradle进行管理,并且依赖的多个中间件。对项目结构优化的目标是达到便于维护、迭代、应用的目标

技术架构

本节会对Conductor 的技术架构进行分析,从技术概念和物理概念进行分析,便于对整个项目的运行以及内部运行的理解。

功能列表

在这里插入图片描述
流程
流程引擎默认是用DSL来编写流程定义文件,这是一种JSON格式的文件,我们的工作流案例就是以这个定义文件为驱动的,但是很可惜目前Conductor只支持手写定义,无法通过界面生成,这块就需要后面通过改造Conductor来增加相应功能。
任务
这里面包括的主要是和任务相关的功能,通过这个功能可以进行简单工作流的实现,还可以进行并行计算。
记录
如果想要查看之前进行过的(完成,失败等终态)历史任务,通过这个功能就可以实现。
监控
当工作流任务流程非常冗长的时候,我们对每个节点的任务运行情况并不了解,这时候就需要有一个任务监控功能及时知道流程的状态方便我们做出相应决策。同时还有一个重要功能是任务调度,通过这个功能可以实现类似xxl-job的功能,满足分布式定时调度的需求。
客户端和通信
这二个功能本是一体的,既然Conductor是分布式的任务流程那么核心原理就是通过Server+Worker的方式,利用核心状态机发消息的方式来驱动客户端的任务执行,而Worker的实现是跨语言的,可以用JAVA、Python、go等语言实现,而Worker需要长轮询Server端的状态来判断当然是否有自己的任务来执行。
管理后台
通过管理后台可以查看任务和工作流的元数据定义,工作流的执行状态等。

技术架构

在这里插入图片描述
涉及到的能力组件,相对比较复杂繁多。

开源项目结构分析

在前面做了项目简单的解释分析,这里会进行重点分类。

模块名说明
conductor-annotations保留原来的Conductor的注解
conductor-client和开源中的通能能力地位,在整体结构中就是执行具体工作的
conductor-client-springclient基于spring的的starter的封装
conductor-common通用的工具包
conductor-core核心包
conductor-java-sdk对外提供的sdk
conductor-rest对外提供的api接口
conductor-server服务端,包含编排等
conductor-persistence存储层,会包含mysql,es
conductor-task任务层,主要包含系统任务和自定义任务

项目结构规范后,后续,将进行迭代开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五之

真实案例以及商业项目技术

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值