产品要素
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去获取)