工具 7年前

定时任务系统调研

作者头像 刘宇帅
4897 5

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. 界面优雅、简洁
作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


相关文章

ChatGPT最热开源项目

自2月份开始,我对ChatGPT的精彩表现感到非常着迷,它展现出了真正的智能。随后,我陆续注册了ChatGPT Plus会员,申请了GPT-4 API权限等。起初,我通过简单的数学和逻辑题来测试它的智能水平;后来,我开始将其视为搜索引擎,不仅用于搜寻概念性知识,还用于解决技术问题、技术方案,甚至是公司业务应用。如今,ChatGPT已经逐渐融入了我的工作和生活。 然而,由于日常工作繁忙,我总是根据需要解决的问题,寻找针对性的方案,而没有认真研究过基于ChatGPT的应用现状。因此,我决定花时间了解一下ChatGPT相关的热门开源项目,并将所得到的信息整理和记录在此。 lencx/ChatGPT

shadowsocks配合Proxifier实现全局代理

shadowsocks 使用的 sockets5 代理,而一般只有浏览器支持,所以使用 shadowsocks 可以实现科学上网,但是其他的应用却仍无法科学上网,所以要想实现全局科学上网需要 Proxifier 支持。 Proxifier介绍 Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持 64位系统,支持Xp,Vista,Win7,MAC OS ,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定域名,指定程序等运行模式,兼容性非常好。有点类

SVN 认证失败

问题 搭建好 svn 之后可以正常拉下库,但是 commit 的时候报以下权限错误。 > $ svn commit -m "test" svn: E170001: Commit failed (details follow): svn: E170001: Authorization failed 解决 问题是因为 svn 权限配置问题。

Macos 卸载Xcode git运行报错

我电脑上原本装了Xcode,但是我电脑是128G,用了两年东西越来越多硬盘不够用了,而我本身开发中很少用Xcode所以就把它卸载了,卸载之后发现Xcode占了11G左右的空间。。 卸载Xcode之后执行git,报错如下: > $ git status xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode t

git commit message 规范

为什么要规范 git commit message 无规矩不成方圆,尤其是在多人合作项目中如果每个人按自己的习惯 commit,那么整个 commit 的log将会一团糟糕 commit message 格式 Commit message 都包括三个部分:Header,Body 和 Footer <type>(<scope>): <subject> // 空一行 <body> // 空一行 <footer> type feat:新功能(feature) fix:修补bug docs:文档(documentation) style: