定时任务系统调研
工具 刘宇帅 3年前 阅读量: 1458
webcron
源码地址
功能列表
- 基本任务创建、启动、手动执行、暂停
- 任务日志
- 任务执行结果邮件通知
- 任务分组
- 任务运行实例控制
缺点
- 任务只能在单机跑
- 不能添加用户
评价
安装部署简单,功能页面简洁,适合任务量不多个人或者小型项目组使用。
gocron
源码地址
功能列表
- 基本任务创建、手动执行、禁止执行、删除
- 任务依赖
- 任务分组
- 超时、重试
- 可以选择任务执行结果通知不同用户,通知类型包括邮件(并支持模板配置)、slack、webhook。
- 任务日志
- 支持分布式,添加执行任务节点,创建任务可指定任务可运行的节点(如果是单例模式,会选择一台执行)
- 用户管理
- 登录日志
- 执行方式支持 shell 和 http 请求
缺点
- 页面有点丑(强行找缺点)
- 支持 shell http不同类型任务,多此一举,应该用脚本来决定做什么
评价
堪称完美,不过默认新建任务是开启的不太好,最好是添加默认开启或暂停的选项,或则默认是暂停的。
cronsun
源码地址
功能列表
- 基本任务创建、启动、手动执行、暂停
- 分布式,添加节点,并支持节点分组
- 新建任务可指定节点组(类似于 gocron 指定做个执行节点)
- 任务日志、任务日志定时清理
- 超时、重试
- 指定运行节点组,并可指定多个节点同时运行、指定不能运行节点
- 单个任务可添加多个定时器
- 任务分组
- 邮件报警
- 仪表盘:节点、任务等统计
- 基于 etcd 实现机器发现(组内运行任务可实现高可用或负载均衡)
- 用户管理
- 多语言
缺点
- 页面有点丑(强行找缺点)
评价
功能强大,但是使用了etcd感觉有点大材小用,让系统变得复杂。不支持任务依赖,通知方式单一。
总结
上面三个系统都不是完美的,一个完善的定时任务系统功能如下:
- 任务基本创建、启动、手动执行、暂停
- 任务分组
- 超时、重试
- 任务依赖
- 单个任务可添加多个定时器
- 邮件、slack、webhook 通知,及通知模板配置
- 分布式,添加任务节点,节点添加、删除、手动下线
- 节点分组,提高任务高可用性,在分组内选择可用节点
- 支持指定任务同时运行节点数,指定多个节点同时运行,或者节点组内自动选择相应数量节点
- 指定某些节点不执行,应对节点环境等问题
- 任务日志,根据任务、执行状态、关键字搜索等筛选(也可添加对接 elk 或则 http 接口,这些可在具体业务里实现)
- 仪表盘,各种信息统计展示
- 用户管理
- 登录及操作日志记录
- 界面优雅、简洁