唯品会开源定时器框架Saturn

官网文档

架构

架构逻辑图

唯品会开源定时器框架Saturn
zk作为注册中心,通过临时节点来监听执行器的增加减少。
xxl-job也有一个执行器的管理页面,其中有自动扫描也有手动扫描。

子系统划分

唯品会开源定时器框架Saturn

调度器逻辑

唯品会开源定时器框架Saturn
通过zk事件监听,来控制事件分发,实现任务的执行等等。

需求设计

唯品会开源定时器框架Saturn
本篇主要讲线程执行,还有超时的实现,其他调度算法不在本篇讲解,自行学习。

源码解读

1.执行器执行任务

唯品会开源定时器框架Saturn
执行器的写法。

唯品会开源定时器框架Saturn

SaturnJavaJob doExecution 209

唯品会开源定时器框架Saturn
主要是通过反射来执行方法,并拿到结果。

2.执行job

唯品会开源定时器框架Saturn

3.超时处理

com.vip.saturn.job.java.SaturnJavaJob#handleJob

唯品会开源定时器框架Saturn
唯品会开源定时器框架Saturn
唯品会开源定时器框架Saturn
如果设置超时的时间,会在启动的时候开启一个定时的线程池ScheduledThreadPoolExecutor,当到这个超时的时间,还没执行完,就会设置这个超时状态,然后强杀线程。

4.面试题:如何关闭线程池

唯品会开源定时器框架Saturn

xxl-job对比

功能 xxl-job Saturn
执行器的管理 可以看下官网 zk节点,事件
分片
超时设置
调度模式 分片,故障转移,负载均衡,动态扩容 分片,故障转移,动态扩容,HA,负载均衡
日志 异步打印不出来 不详