分布式定时任务框架Uncode-Schedule技术介绍

1. 概述

       Uncode-Schedule是一款分布式定时任务调度框架,是由个人开源的,目前还在更新中。Uncode-Schedule 是基于 zookeeper+quartz/springtask 的分布式任务调度组件,非常小巧,它的理念是uncode(无码),无需任何修改就可以使quartz/spring task具备分布式特性,确保所有任务在集群中不重复,不遗漏的执行。

它的主要功能包括:
(1)确保所有任务在集群中不重复的执行。
(2)单节点故障时,任务能够自动转移到其他节点继续执行。
(3)支持动态启动、停止和删除任务。
(4)支持添加机器ip黑名单。
(5)简单的管理页面。

2. 技术原理

        分布式定时任务框架Uncode-Schedule技术介绍

Uncode-Schedule流程图

        Uncode-Schedule延用TBSchedule中的很多代码,其原理很多地方跟TBSchedule类似。Uncode-Schedule通过心跳检测维护调度服务器信息以及任务的分配,心跳检测1秒钟启动一次。另外,Uncode-Schedule实现了Springtask和Quartz的调度接口,当定时任务启动执行时,会进入实现类,Uncode-Schedule会验证该服务器是否是该任务的执行服务器,如果是,则执行,否则,不执行。

Uncode-Schedule的调度平台较为简单,提供功能主要有列表查询、停止、启动、删除任务等

分布式定时任务框架Uncode-Schedule技术介绍

Uncode-Schedule管理页面

3. 总结

        Uncode-Schedule功能简单,代码也比较简单,易于掌握,最关键的是它可以与SpringTask和QuartzTask无缝兼容。但是目前很多优秀的调度平台都可以实现预分片、并发调度、弹性扩容和缩容等功能,而Uncode-Schedule框架还是显得有点low。对于不需要考虑并发调度,系统中已有定时任务不方便修改的项目可以考虑选择Uncode-Schedule。