定时任务系统调研

工具 刘宇帅 3年前 阅读量: 1458

webcron

源码地址
功能列表

  1. 基本任务创建、启动、手动执行、暂停
  2. 任务日志
  3. 任务执行结果邮件通知
  4. 任务分组
  5. 任务运行实例控制

缺点

  1. 任务只能在单机跑
  2. 不能添加用户

评价
安装部署简单,功能页面简洁,适合任务量不多个人或者小型项目组使用。

gocron

源码地址
功能列表

  1. 基本任务创建、手动执行、禁止执行、删除
  2. 任务依赖
  3. 任务分组
  4. 超时、重试
  5. 可以选择任务执行结果通知不同用户,通知类型包括邮件(并支持模板配置)、slack、webhook。
  6. 任务日志
  7. 支持分布式,添加执行任务节点,创建任务可指定任务可运行的节点(如果是单例模式,会选择一台执行)
  8. 用户管理
  9. 登录日志
  10. 执行方式支持 shell 和 http 请求

缺点

  1. 页面有点丑(强行找缺点)
  2. 支持 shell http不同类型任务,多此一举,应该用脚本来决定做什么

评价
堪称完美,不过默认新建任务是开启的不太好,最好是添加默认开启或暂停的选项,或则默认是暂停的。

cronsun

源码地址
功能列表

  1. 基本任务创建、启动、手动执行、暂停
  2. 分布式,添加节点,并支持节点分组
  3. 新建任务可指定节点组(类似于 gocron 指定做个执行节点)
  4. 任务日志、任务日志定时清理
  5. 超时、重试
  6. 指定运行节点组,并可指定多个节点同时运行、指定不能运行节点
  7. 单个任务可添加多个定时器
  8. 任务分组
  9. 邮件报警
  10. 仪表盘:节点、任务等统计
  11. 基于 etcd 实现机器发现(组内运行任务可实现高可用或负载均衡)
  12. 用户管理
  13. 多语言

缺点

  1. 页面有点丑(强行找缺点)

评价
功能强大,但是使用了etcd感觉有点大材小用,让系统变得复杂。不支持任务依赖,通知方式单一。

总结

上面三个系统都不是完美的,一个完善的定时任务系统功能如下:

  1. 任务基本创建、启动、手动执行、暂停
  2. 任务分组
  3. 超时、重试
  4. 任务依赖
  5. 单个任务可添加多个定时器
  6. 邮件、slack、webhook 通知,及通知模板配置
  7. 分布式,添加任务节点,节点添加、删除、手动下线
  8. 节点分组,提高任务高可用性,在分组内选择可用节点
  9. 支持指定任务同时运行节点数,指定多个节点同时运行,或者节点组内自动选择相应数量节点
  10. 指定某些节点不执行,应对节点环境等问题
  11. 任务日志,根据任务、执行状态、关键字搜索等筛选(也可添加对接 elk 或则 http 接口,这些可在具体业务里实现)
  12. 仪表盘,各种信息统计展示
  13. 用户管理
  14. 登录及操作日志记录
  15. 界面优雅、简洁

提示

功能待开通!