产品架构-调度产品

产品要素

1.server端高可用(分布式计算加分)
2.agent(work)端分布式
3.日志传输
4.任务事件触发/任务时间触发(时间轮算法)
5.任务关系算法DAG(图数据库)
6.服务注册(server和work)
7.任务信息存储选择
8.重做后续/任务共性参数传递

服务端设计

利用zk,nocos做服务端高可用,和server注册;
人为划分任务集群实现server分布式,分配到不同任务集群,跨任务群任务触发,走消息中间件或者kafka;

触发设计

时间轮数据结构,负责时间触发任务(或者用quartz)

事件触发?akka? epoll

server端设计

如何快速触发(事件,时间(cron,极短执行频率)),如何快速分析任务后续关系。

如何计算重做后续,批量补跑(等等业务诉求)

server高可用

ZK监听实现

agent(work)端设计

利用zk,nocos做服务注册和状态(运行任务负载,是否正常)同步;利用kafka或者mq做分布式。

编写start(shell通吃),kill,tail等脚本,分别启动,杀死,获取日志。

日志传输,按需执行,利用tail -f100,如果日志存在分布式获取,利用时序数据进行保存或者排序(es等)

任务信息事件关系

关系的保持,利用DAG算法,或者图数据库保存(快速检索关系)

利用mongodb保存任务基本运行信息。

任务参数

参数分全局参数,一般任务启动时,进行传递和设置(KV或者json模式)

任务间参数传递,利用redis进行中转(发送和获取需要开发不同语言的SDK,Java版本,python版本)(agent端通过server去获取)