SnailJob v1.4.0-beta1 发布
🔥🔥🔥 灵活,可靠和快速的分布式任务重试和分布式任务调度平台
✅️ 可重放,可管控、为提高分布式业务系统一致性的分布式任务重试平台 ✅️ 支持秒级、可中断、可编排的高性能分布式任务调度平台
项目特性
-
易用性 业务接入成本小。避免依赖研发人员的技术水平,保障稳定性
-
灵活性 能够动态调整配置,启动 / 停止任务,以及终止运行中的任务
-
操作简单 分钟上手,支持 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 接入成本低 |
更新日志
- sdk手动触发调用时,支持传递临时参数【优化】
- oracle sql 索引名过长 【BUG】
- 默认rpc-type: grpc【新增】
- 场景添加回调配置 【新增】
- Converter移入convert包【优化】
- 添加 @EqualsAndHashCode(callSuper=true) 去除warning 【优化】
- 消除 client-starter 依赖冲突(error_prone_annotations)【优化】
- 消除 server-starter 依赖冲突(checker-qual,error_prone_annotations)【优化】
- 优化maven结构,根pom统一管理版本【优化】
- 修复定时任务触发常驻任务时,通过任务开关无法正常关闭定时任务问题 【BUG】
- 修复了oracle数据库更新定时任务状态失败问题【BUG】
- 修复代码编辑器格式化问题【BUG】
- 修复周期性cron问题【BUG】
- 重试模块服务端重构【新增】
- sj_retry_task_0 改为 sj_retry
- sj_retry_dead_letter_0 改为 sj_retry_dead_letter
- sj_retry_task_log 改为 sj_retry_task_log
注意 本次重点重构了重试模块的流程,由之前的同步调度客户端改为异步调度客户端. 将支持更高并发的调度同时大大提高服务端的稳定性
MYSQL变更(其他DB变更请自行同步)
全量的SQL请参考项目 /doc/sql/x.sql
ALTER TABLE `sj_group_config` DROP COLUMN `bucket_index`; ALTER TABLE `sj_job` MODIFY COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复'; ALTER TABLE `sj_retry_scene_config` ADD COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行' AFTER `route_key`; ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启' AFTER `block_strategy`; ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式' AFTER `cb_status`; ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数' AFTER `cb_trigger_type`; ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数' AFTER `cb_max_count`; ALTER TABLE `sj_retry_task_log_message` DROP COLUMN `unique_id`; ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id' AFTER `group_name`; ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_task_id` bigint(20) NOT NULL COMMENT '重试任务Id' AFTER `retry_id`; CREATE INDEX idx_namespace_id_group_name_retry_task_id ON sj_retry_task_log_message (`namespace_id`, `group_name`, `retry_task_id`); ALTER TABLE sj_retry_task_log_message DROP INDEX idx_namespace_id_group_name_scene_name; CREATE TABLE `sj_retry_dead_letter` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', `args_str` text NOT NULL COMMENT '执行方法参数', `ext_attrs` text NOT NULL COMMENT '扩展字段', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), KEY `idx_idempotent_id` (`idempotent_id`), KEY `idx_biz_no` (`biz_no`), KEY `idx_create_dt` (`create_dt`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表' ; CREATE TABLE `sj_retry` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', `args_str` text NOT NULL COMMENT '执行方法参数', `ext_attrs` text NOT NULL COMMENT '扩展字段', `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间', `retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数', `retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数', `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', `bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket', `parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '父节点id', `deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '逻辑删除', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`), KEY `idx_idempotent_id` (`idempotent_id`), KEY `idx_biz_no` (`biz_no`), KEY `idx_parent_id` (`parent_id`), KEY `idx_create_dt` (`create_dt`), UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表' ; CREATE TABLE `sj_retry_task` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id', `ext_attrs` text NOT NULL COMMENT '扩展字段', `task_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '重试状态', `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', `operation_reason` tinyint(4) NOT NULL DEFAULT 0 COMMENT '操作原因', `client_info` varchar(128) DEFAULT NULL COMMENT '客户端地址 clientId#ip:port', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), KEY `task_status` (`task_status`), KEY `idx_create_dt` (`create_dt`), KEY `idx_retry_id` (`retry_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表' ; DROP TABLE sj_retry_dead_letter_0; DROP TABLE sj_retry_task_0; DROP TABLE sj_retry_task_log;
项目地址
方便的话给项目一个 star,你的支持是我们前进的动力!
先睹为快

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
DataCap 2025.1.0 重磅发布:全新通知中心与元数据管理优化
尊敬的 DataCap 用户: 我们很高兴地宣布,DataCap 2025.1.0 版本已正式发布!此次更新带来了全新的通知中心功能,优化了元数据管理能力,并修复了多项已知问题,进一步提升了软件的稳定性和用户体验。 版本亮点 🔔 全新通知中心 添加完整的通知系统架构,支持用户接收重要更新和提醒 增加数据集更新通知功能,帮助团队及时掌握数据变化 优化通知插件的 SPI 接口,方便开发者扩展 添加通知分页配置和无数据提示,提升用户体验 📊 数据集功能增强 支持删除数据集(关闭 issue #904) 修复即席查询排序问题,提升数据查询效率 修复查询页面构建内容无法填充的问题 修复数据集启动失败问题 💻 ClickHouse 适配优化 适配元数据管理功能,提升兼容性 修复构建列转换问题 移除无效的功能菜单,精简界面 🔧 系统优化 优化用户头像上传逻辑 修复修改编辑器配置保存失败问题 修复 Docker 镜像构建问题 优化分页数据获取方式 添加获取自动提示功能 📋 文档更新 全面重构开发文档、更新日志、连接器文档和系统文档 重构管理文档、工作流文档和数据集文档 完善系统整体文档 🖼...
- 下一篇
DBeaver 25.0 发布
DBeaver 是一个免费开源的通用数据库工具,适用于开发人员和数据库管理员。DBeaver 25.0 现已发布,更新内容如下: Data Editor: 添加了启用空间视图时检查空间列可见性的建议 数据单元搜索算法已修复(查找/替换) SQL Editor: 当schema selector 不适用于当前连接时,它将被隐藏 @include 命令执行已修复 修复了脚本数据库更改时刷新事务模式的问题 改进了 SQL 控制台中读取数据的性能 将结果集缩放的默认快捷键更改为 Alt+0 和 Alt+9(以避免与 European layouts 冲突) Proposal sorting in code completion 得到改进:连接始终位于顶部 Joins auto-completion 功能得到改进 AI 助手:修复了在扩展中禁用 AI 时出现过多 AI 请求的问题 Diagrams: 表格注释和fully qualified names 的可见性已修复 “ER Diagram”选项卡重命名为“Diagram” Metadata Editor:列和其他对象的重新排序已修复 Navi...
相关文章
文章评论
共有0条评论来说两句吧...