背景
最近在选择一款任务调度产品,找了几款产品进行调研,我对产品的要求是可以进行可视化、有角色权限、任务编排、支持http、接入成本低等,发现有有两款挺符合的PowerJob和Snail Job。
同类产品对比
Elastic-Job | xxl-job | PowerJob | Snail Job | |
---|---|---|---|---|
定时调度 | Cron | Cron | CRON、固定频率、固定延迟、OpenAPI | 1. 定时任务 2. 秒级任务(无需依赖外部中间件) 3. 固定频率 |
重试任务 | 不支持 | 不支持 | 不支持 | 1.支持本地&远程重试模式 2.支持各种常用组件的重试 比如dubbo/feign 3.支持多种退避策略 4.丰富的重试风暴管控手段… |
任务编排 | 不支持 | 不支持 | 可视化任务编排 | 可视化任务编排 |
分布式计算 | 静态分片 | 广播 | MapReduce 动态分片 | 1. 广播执行 2. 集群执行 3. 静态分片 4. 动态分片(开发中) |
多语言 | 1. Java 2. 脚本任务 | 1. Java 2. 脚本任务 | 1.内置Java、2.外置Java(容器)、3.Shell、4.Python等脚本 | 1. Java(已支持) 2. 脚本任务(开发中) 3. HTTP任务(开发中) 4. Kettle(开发中) |
可视化 | 弱 | 1. 历史记录 2. 运行日志(不支持存储)3. 监控大盘 | 1. 历史记录 2. 运行日志(支持持久化) 3. 监控大盘 | 1. 历史记录 2. 运行日志(支持持久化) 3. 监控大盘 4. 操作记录 5. 查看日志堆栈 |
可运维 | 启用、禁用任务 | 1. 启用、禁用任务 2. 手动运行任务 3. 停止任务 | 1. 启用、禁用任务 2. 手动运行任务 3. 停止任务 | 1. 启用、禁用任务 2. 手动运行任务 3. 停止任务 |
报警监控 | 邮件 | 邮件 | 邮件,提供接口允许开发者扩展 | 1. 邮件 2. 钉钉 3. 企微 4. 飞书 5、Webhook |
性能 | ZooKeeper是性能瓶颈 | 采用Master节点调度,Master节点压力大 | 无锁化设计,性能强劲无上限 | 系统采用多bucket模式,借助负载均衡算法,确保每个节点能够均衡处理任务,同时支持无限水平扩展,轻松应对海量任务调度 |
接入成本 | 需引入Zookeeper增加系统复杂性和维护成本 | 只依赖DB接入成本低 | 任意 Spring Data Jpa支持的关系型数据库(MySQL、Oracle…) | 只依赖DB接入成本低 |
有意向
目前是从PowerJob 和 Snail Job中选择,前者目前相对稳定,但文档相对完善,没有角色权限,不过可以自行接入企业内部账号;后者目前一直在迭代,文档不全,但大概的文档也能懂,有角色权限,看好的是在开发http任务、Kettle、脚本任务等,不过后者最低支持JDK版本为17,全面使用SpringBoot3.0以上版本。Snail Job配置还支持组、任务导入导出,
Snail Job图:
附件
参考:
Snail Job:https://snailjob.opensnail.com/docs/introduce/preface.html
仓库地址:https://gitee.com/aizuda/snail-job
在线案例:http://preview.easyretry.com/
PowerJob:https://www.yuque.com/powerjob/guidence/intro
仓库地址:https://gitee.com/KFCFans/PowerJob