项目特性

  • 易用性 业务接入成本小。避免依赖研发人员的技术水平,保障稳定性
  • 灵活性 能够动态调整配置,启动 / 停止任务,以及终止运行中的任务
  • 操作简单 分钟上手,支持 WEB 页面对任务数据 CRUD 操作。
  • 数据大盘 实时管控系统任务数据
  • 分布式重试任务 支持多样化退避策略、多样化重试类型、流量管控等
  • 分布式调度任务 提供丰富的任务触发策略、任务分片、停止恢复、失败重试等
  • 工作流任务编排 仿钉钉设计的流程编排引擎,支持复杂的功能编排、失败重试、告警等
  • 任务数据管理 可以做到数据不丢失、数据一键回放
  • 容器化部署 服务端支持 docker 容器部署
  • 高性能调度平台 支持服务端节点动态扩容和缩容
  • 支持多样化的告警方式 邮箱、企业微信、钉钉、飞书、自定义告警
  • 支持多种流行数据库 mysql、mariadb、sqlserver、oracle、postgres、达梦等数据库

开源组件对比

项目 Quartz Elastic-Job XXL-JOB PowerJob Snail Job
跨语言能力
不支持
不支持
不支持
不支持
支持java(1.8/17)、Python、Go客户端(开发中)
定时调度
Cron
Cron
Cron
CRON、固定频率、固定延迟、OpenAPI
1. 定时任务 2. 秒级任务(无需依赖外部中间件) 3. 固定频率 4.OpenAPI
重试任务
不支持
不支持
不支持
不支持
1.支持本地&远程重试模式
2.支持各种常用组件的重试 比如dubbo/feign
3.支持多种退避策略
4.丰富的重试风暴管控手段
……
任务编排
不支持
不支持
不支持
支持
仿钉钉工作流设计,颜值高、体验好
分布式计算
不支持
静态分片
广播
支持
1. 广播执行 2. 集群执行 3. 静态分片 4. 动态分片
多语言
Java
1. Java 2. 脚本任务
1. Java 2. 脚本任务
支持
1. Java 2. CMD(本地脚本、远程脚本、参数传人) 3. PowerShell(本地脚本、远程脚本、参数传人) 3. Shell(本地脚本、远程脚本、参数传人) 4. HTTP任务
用户管理
不支持
支持
支持
不支持
完备的用户管理和权限管理
安全 Token
不支持
不支持
支持
不支持
支持
可视化
1. 历史记录 2. 运行日志(不支持存储)3. 监控大盘
支持
1. 历史记录 2. 实时日志(支持持久化、可视化) 3. 监控大盘(实时调度数据展示) 4. 失败调度排名 5. 在线集群查看等
可运维
启用、禁用任务
1. 启用、禁用任务 2. 手动运行任务 3. 停止任务
支持
1. 启用、禁用任务 2. 手动运行任务 3. 停止任务 4、手动重试
报警监控
邮件
邮件
邮件
支持配置多种告警场景, 通知方式支持: 1. 邮件 2. 钉钉 3. 企微 4. 飞书 5、Webhook
性能
每次调度通过DB抢锁,对DB压力大
ZooKeeper是性能瓶颈
采用Master节点调度,Master节点压力大
无锁化设计
系统采用多bucket模式,借助负载均衡算法,确保每个节点能够均衡处理任务,同时支持无限水平扩展,轻松应对海量任务调度
接入成本
只依赖DB接入成本低
需引入Zookeeper增加系统复杂性和维护成本
只依赖DB接入成本低
依赖DB接入成本低
只依赖DB接入成本低

更新日志

  1. 新增Grpc通讯模块【新增】
  2. 修改服务端默认端口号为17888【优化】
  3. 设置客户端client为-1时,支持随机端口号【新增】
  4. 邮箱通知添加额外的自定义属性【新增】
  5. 增加删除功能OpenApi【新增】
  6. isRetry改为retryStatus 【优化】
  7. 将内置执行器移入builtin包【优化】
  8. 调整客户端注册逻辑;使用主节点模式对客户端进行续签【优化】
  9. 优化重试场景、定时任务、工作流告警通知配置【优化】
  10. 手动执行任务/工作流支持传入临时参数【新增】
  11. 定时任务新增负责人选项【新增】
  12. 定时任务增加执行器信息搜索条件【新增】
  13. 支持无客户端时告警功能【新增】
  14. 客户执行失败支持显示失败原因【新增】
  15. 新增GRPC重连事件【新增】
  16. 负责人支持清除【新增】
  17. 优化cron表达式解析错误异常信息

注意本次新增了Grpc协议,后续计划逐渐废弃Netty请大家尽快切换

snail-job.rpc-type=grpc

MYSQL变更(其他DB变更请自行同步)

全量的SQL请参考项目 /doc/sql/x.sql

ALTER TABLE `sj_notify_config`
   ADD COLUMN `notify_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '通知名称',
   DROP COLUMN `business_id`;

ALTER TABLE `sj_job`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
   ADD COLUMN `owner_id`   bigint(20)   NULL COMMENT '负责人id';

ALTER TABLE `sj_retry_scene_config`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

ALTER TABLE `sj_workflow`
   ADD COLUMN `notify_ids` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表';

系统原理

图片
图片

项目地址

  • 官网: https://snailjob.opensnail.com/

  • gitee: https://gitee.com/aizuda/snail-job

  • github:https://github.com/aizuda/snail-job

  • python客户端: https://gitee.com/opensnail/snail-job-python

  • 体验地址:https://snailjob.opensnail.com/docs/preview.html

  • XXLJOB迁移工具:https://snailjob.opensnail.com/docs/guide/migration_tool.html

方便的话给项目一个 star,你的支持是我们前进的动力!

先睹为快

图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论