由于业务系统中使用了Saturn作为分布式调度平台并且计划对其作二次开发,因此看了官方文档及源码,简单做了梳理与总结。Saturn是唯品会开源的一款定时任务调度平台,相对于传统的Spring Batch Job/Quartz等框架有较大的增强与优化。
系统中有几个关键概念,简要说明如下:
作业(Job):即可独立执行的函数实现,可简单理解为包含处理逻辑的JAVA实现类或SHELL脚本。
分片(Sharding):即作业并发执行的数量(与执行编号)。例如分片数为2,表示作业最多可以在2个执行节点并发执行,执行编号为0和1。
域(Namespace):即属于某一特定域的一组执行节点与作业,这个特定域可以是某个服务、系统或团队,本质上是个抽象概念,用于作分类。某个域中的执行节点功能对等,域中作业可以在其任何一个节点上执行。
执行节点(Executor):即负责调用并执行作业的进程。通过QUARTZ定时驱动来触发,调用作业并执行指派的作业分片。
核心系统模块划分:
saturn-core:核心模块
saturn-console-core:控制台公共模块
saturn-console:控制台
saturn-executor:执行节点
saturn-job-sharding:分片调度器
流程设计原理:
Saturn将作业在逻辑上划分为若干分片,通过分片调度器将分片指派给执行节点。各个执行节点通过QUARTZ触发作业具体函数实现(或SHELL脚本)。执行时会将分片序号和参数传入。
再从架构角度来看几个关键组件的作用&#x