taroco-scheduler 分布式定时任务调度

任务管理界面

基于 Spring Boot 2.0 + Spring Task + Zookeeper 的分布式任务调度组件,非常轻量级,使用简单,只需要引入jar包,不需要单独部署服务端。确保所有任务在集群中不重复,不遗漏的执行。

组件架构

架构图

功能点概述

  1. 每个任务在集群中不同节点上不重复的执行。
  2. 单个任务节点故障时自动转移到其他任务节点继续执行。
  3. 任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运行。
  4. 支持动态添加、修改和删除任务,支持任务暂停和重新启动。
  5. 添加ip黑名单,过滤不需要执行任务的节点。
  6. 提供后台管理界面和任务执行监控。
  7. 天然支持 Spring Boot。通过 spring.factories 的方式自动加载配置类 TarocoSchedulerAutoConfiguration。只需要引入jar包依赖,无须显示的添加配置类扫描。
  8. 支持单个任务运行多个实例(使用扩展后缀名)。
  9. 本地静态任务(@Scheduled 注解的任务, 以及 xml 配置的定时任务),会自动纳入集群做统一分配执行。
  10. 新增 server 节点, 当前任务会自动平衡到新节点。

特别说明:


如何使用

基于Spring Boot的配置

一般情况下我们只需要指定 zookeeper 的地址即可:

taroco:
  scheduler:
    zk:
      url: 127.0.0.1:2181

如果需要更多的配置。请参考TarocoSchedulerProperties配置类。

启动任务管理界面

只需要在 Spring Boot 启动类中添加注解@EnableTarocoSchedulerAdmin,然后通过访问路径:/taroco/scheduler/task即可。

任务管理

注入 bean IScheduleTask即可实现对任务的增删查改。

节点管理

注入 bean ISchedulerServer即可实现对 server 节点的简单查询。

获取当前 server 节点实例

ScheduleServer.getInstance()