waynblog

SnailJob 分布式任务调度与重试平台 1.1.0 发布

🔥🔥🔥 灵活,可靠和快速的分布式任务重试和分布式任务调度平台

✅️ 可重放,可管控、为提高分布式业务系统一致性的分布式任务重试平台 ✅️ 支持秒级、可中断、可编排的高性能分布式任务调度平台

注意

由于本次升级新增了动态分片、工作流上下文等功能,升级时请务必服务端、客户端同时升级

号外


基于 Python 的客户端已经完成,近日就会发布内测版本,比 java 更轻量、更适合执行脚本.

了解更多请加群 https://snailjob.opensnail.com/docs/group_chat.html
开源地址:   https://gitee.com/opensnail/snail-job-python

项目特性

  • 易用性业务接入成本小。避免依赖研发人员的技术水平,保障稳定性

  • 灵活性能够动态调整配置,启动 / 停止任务,以及终止运行中的任务

  • 操作简单分钟上手,支持 WEB 页面对任务数据 CRUD 操作。

  • 数据大盘实时管控系统任务数据

  • 分布式重试任务支持多样化退避策略、多样化重试类型、流量管控等

  • 分布式调度任务提供丰富的任务触发策略、任务分片、停止恢复、失败重试等

  • 工作流任务编排仿钉钉设计的流程编排引擎,支持复杂的功能编排、失败重试、告警等

  • 任务数据管理可以做到数据不丢失、数据一键回放

  • 容器化部署服务端支持 docker 容器部署

  • 高性能调度平台支持服务端节点动态扩容和缩容

  • 支持多样化的告警方式邮箱、企业微信、钉钉、飞书、自定义告警

  • 支持多种流行数据库mysql、mariadb、sqlserver、oracle、postgres 数据库

开源组件对比

项目QuartzElastic-JobXXL-JOBPowerJobSnail Job
定时调度CronCronCronCRON、固定频率、固定延迟、OpenAPI1. 定时任务 2. 秒级任务 (无需依赖外部中间件) 3. 固定频率 4.OpenAPI (开发中)
重试任务不支持不支持不支持不支持1. 支持本地 & 远程重试模式 2. 支持各种常用组件的重试 比如 dubbo/feign 3. 支持多种退避策略 4. 丰富的重试风暴管控手段 ......
任务编排不支持不支持不支持支持仿钉钉工作流设计,颜值高、体验好
分布式计算不支持静态分片广播支持1. 广播执行 2. 集群执行 3. 静态分片 4. 动态分片
多语言Java1. Java 2. 脚本任务1. Java 2. 脚本任务支持1. Java (已支持) 2. 脚本任务 (开发中) 3. HTTP 任务 (开发中) 4. Kettle (开发中)
用户管理不支持支持支持不支持完备的用户管理和权限管理
安全 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. 【信创】支持达梦数据库【新增】
2. 更新密码策略:字母、数字、特殊字符,任意 2 种组成,6-20 位【优化】
3. 工作流批次、重试批次、重试日志添加时间筛选 (默认查询一个月)【新增】
4. 修复通知配置分页显示问题【BUG】
5. github 工作流添加 maven cache【优化】
6. mp 自动填充 createDt,updateDt 字段【优化】
7. 提取所有 insertBatch xml 语句到 template【优化】
8. 优化空间切换组件样式【优化】
9. 用户列表添加 [序号]、[创建时间] 字段【新增】
10. 所有搜索框允许清除【优化】
11. 修复工作流搜索参数定义错误【BUG】
12. 工作流批次按照任务名称查询体验【优化】
13. 定时任务批次按照任务名称查询体验【优化】
14. 修复前端 toString () 空指针问题【优化】
15. 命名空间非活跃条目显示图标【优化】
16. 登录界面可以做一下键盘回车登录【优化】
17. updateBatch 系列脚本增加 update_dt=CURRENT_TIMESTAMP【优化】
18. 页面路径修改 notify/scene => notify/config 【优化】
19. 优化客户端发送消息是组为空的校验【优化】
20. 重构钉钉消息发送工具类 (优化)
21. 工作流支持全局上下文传递 (新增)
22. 支持动态分片 (Map/MapReuce)(新增)
23. 修复 oracle 超过 1000 批量删除失败问题 (BUG)
24. 定时任务阻塞策略新增恢复类型 (新增)
25. 工作流阻塞策略新增恢复类型 (新增)
26. sj_distributed_lock 分布式锁表去掉自增主键 (优化)
27. 优化决策节点手动校验逻辑并支持手动校验按钮 (优化)
28. 工作流决策节点判定逻辑使用上下文进行判断 (优化)
29. 工作流批次详情新增实时刷新功能 (新增)
30. 工作流和定时任务实时日志新增自动刷新功能 (新增)
31. 修复实时日志展示重复问题 (BUG)
32. 重试次数支持最低为 0 次 (优化)
33. 登录新增验证码功能 (新增)
34. 重试场景随机和固定间隔重试间隔新增最低 10s 限制 (优化)
35. 任务项列列表新增任务名称字段 (优化)
36. 升级 mybatis-plus 版本 (3.5.6->3.5.7)(升级)
37. 修复退出登录和修改密码未重定向到登录页问题 (BUG)
38. 工作流支持页面初始化上下文信息 (新增)
39. 空间、组、重试场景等删除功能
40. 优化其他已知问题

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

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

ALTER TABLE `sj_distributed_lock` DROP INDEX `uk_name`;
ALTER TABLE `sj_distributed_lock` MODIFY COLUMN `id` bigint UNSIGNED NOT NULL COMMENT '主键';
ALTER TABLE `sj_distributed_lock` DROP PRIMARY KEY;
ALTER TABLE `sj_distributed_lock` ADD PRIMARY KEY (`name`) USING BTREE;
ALTER TABLE `sj_distributed_lock` DROP COLUMN `id`;
ALTER TABLE `sj_job_task` ADD COLUMN `mr_stage` tinyint NULL DEFAULT NULL COMMENT '动态分片所处阶段 1:map 2:reduce 3:mergeReduce';
ALTER TABLE `sj_job_task` ADD COLUMN `leaf` tinyint NOT NULL DEFAULT 1 COMMENT '叶子节点' AFTER `mr_stage`;
ALTER TABLE `sj_job_task` ADD COLUMN `task_name` varchar(255) NOT NULL DEFAULT '' COMMENT '任务名称';
ALTER TABLE `sj_job_task` ADD COLUMN `wf_context` text  NULL COMMENT '工作流全局上下文' ;
ALTER TABLE `sj_workflow_task_batch` ADD COLUMN `wf_context` text  NULL COMMENT '全局上下文' ;
ALTER TABLE `sj_workflow_task_batch` ADD COLUMN `version` int NOT NULL DEFAULT 1 COMMENT;
ALTER TABLE `sj_workflow` ADD COLUMN `wf_context` text  NULL COMMENT '全局上下文' ;

参与者设计开发人员名单
1. https://gitee.com/xlsea
2. https://gitee.com/xiaowoniu168
3. https://gitee.com/dhb52
4. https://gitee.com/zhengweilins
5. https://gitee.com/srzou
6. https://gitee.com/jcwang812

1.2.0-beta1 TODO List


1. 通知场景绑定多个任务
2. 支持通过 API/http 接口动态管理任务
3. 新增 http 的调度任务

核心功能

Image

项目地址

  • 官网:http://snailjob.aizuda.com/

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

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

  • 体验地址:http://snailjob.aizuda.com/docs/preview.html

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

先睹为快

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

一款安全漂亮的开源行为式验证码【快收藏】

hallo 让静态图片开口“说话”

Java 版的微信聊天记录备份工具

如果觉得这篇文章写的不错的话,不妨点赞加关注,我会更新更多技术干货、项目教学、经验分享的文章。


既然都阅读到这里啦,不妨点个关注吧,您的关注就是我最大的更新动力😘。

Image