登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Apache DolphinScheduler任务失败重试机制:像快递重投 ...
Apache DolphinScheduler任务失败重试机制:像快递重投一样智能
[ 复制链接 ]
姘轻拎
2 小时前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
想象一下,你寄送的重要快递被退回了,快递员不会直接丢弃,而是根据你的要求间隔几小时后重新投递,直到成功或达到最大投递次数。Apache DolphinScheduler的任务重试机制就是这种“智能重投”的调度系统版。
DolphinScheduler提供了完善的任务失败重试机制,支持业务任务节点在执行失败后自动延迟重试,直到成功或达到最大重试次数。该机制通过状态机驱动、事件发布和延迟队列实现,确保任务执行的可靠性。
核心机制:三步重试法
1. 失败时自动触发重试
当任务(如Shell脚本)执行失败时,系统会立即检查两个关键配置:
failRetryTimes:最多重试几次(默认0次)
failRetryInterval:每次重试间隔几分钟
这些配置在任务创建时设定,前端表单会将其转换为JSON格式存储。
2. 智能延迟计算
系统不会立即重试,而是计算精确的延迟时间:
// 实际延迟 = 配置间隔 - (当前时间 - 任务结束时间)
long remainingTime = TimeUnit.MINUTES.toMillis(delayTime)
+ System.currentTimeMillis()
- taskInstance.getEndTime().getTime();
复制代码
这确保无论任务何时失败,都能保持固定的重试间隔。
3. 状态机驱动重试
重试过程由状态机精确控制:
失败状态
:收到失败事件后,检查是否还能重试
重试状态
:创建新的任务实例(保持首次提交时间不变)
重新执行
:发布启动事件,任务重新进入调度队列
关键特性:哪些任务能重试?
✅ 支持重试的业务节点
Shell脚本任务
SQL查询任务
Spark计算任务
所有实际执行代码的任务 5
❌ 不支持重试的逻辑节点
条件分支节点
子流程节点
依赖检查节点
这些节点只控制流程走向,不执行具体代码 5 。
实战验证:测试案例
集成测试展示了完整的重试过程:
任务A首次失败(retryTimes=0)
系统自动重试1次(retryTimes=1)
两次任务实例保持相同的firstSubmitTime
最终失败后工作流停止 6 。
特殊场景处理
依赖任务等待
如果任务B依赖任务A,当A失败但未达最大重试次数时,B会进入等待状态而非直接失败 7 。
手动干预能力
即使任务正在等待重试,你仍可以:
暂停任务(取消后续重试)
终止任务(强制停止)
系统会优雅地处理这些中断请求 8 。
容错 vs 重试:重要区别
任务重试
:任务代码执行失败后的自动重试
Worker容错
:当Worker服务器宕机时,Master接管并重新调度任务(包括Yarn任务) 9
运维建议
合理设置重试间隔
:避免过于频繁的重试导致系统压力
区分任务类型
:为关键任务设置更多重试次数
监控重试指标
:关注retryTimes字段,识别不稳定任务
理解逻辑节点限制
:不要期望条件分支会自动重试
总结
Apache DolphinScheduler的重试机制就像一个尽职的调度员,在任务失败时不会轻易放弃,而是按照你的要求智能地重新尝试。通过状态机精确控制、延迟计算和事件驱动架构,确保了分布式环境下任务执行的可靠性。记住:只有真正执行代码的业务节点才能享受这种“重投”服务,而逻辑节点则需要你手动处理异常情况。
Notes
重试间隔以分钟为单位,实际延迟计算会扣除任务已结束的时间
每次重试会创建新的TaskInstance记录,但保持firstSubmitTime不变
Worker宕机触发的容错重试与任务失败重试是两种不同的机制
逻辑节点(如子流程)不支持自动重试,需要手动干预
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Apache
DolphinScheduler
任务
失败
重试
相关帖子
RAG 的失败,大多在“切文档”那一刻就已经注定
深度探秘 Apache DolphinScheduler 数据库模式
vue甘特图 vxe-gantt 如何将子任务显示一行在父级中,父级行内渲染显示子任务的用法
就在明晚!时序数据库 Apache IoTDB x Doris 高性能可观测性实践联合直播
FastAPI定时任务全攻略:从入门到避开多进程的坑
Apache SeaTunnel Zeta、Flink、Spark 怎么选?底层原理 + 实战对比一次讲透
担心 DataX 迁移到 Apache SeaTunnel 成本高?一篇指南手把手带你平滑切换
开源任务管理工具!一款自托管的全能待办协作工具!
Apache SeaTunnel实战:MongoDB到Doris数据同步的5个常见问题及解决方案
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
科技
RAG 的失败,大多在“切文档”那一刻就已经注定
16
47
拓拔梨婷
2026-01-28
安全
深度探秘 Apache DolphinScheduler 数据库模式
13
53
豹筒生
2026-01-28
代码
vue甘特图 vxe-gantt 如何将子任务显示一行在父级中,父级行内渲染显示子任务的用法
17
374
杼氖
2026-01-30
安全
就在明晚!时序数据库 Apache IoTDB x Doris 高性能可观测性实践联合直播
15
795
宋子
2026-02-03
业界
FastAPI定时任务全攻略:从入门到避开多进程的坑
14
899
窟聿湎
2026-02-04
业界
Apache SeaTunnel Zeta、Flink、Spark 怎么选?底层原理 + 实战对比一次讲透
12
40
任修
2026-02-04
安全
担心 DataX 迁移到 Apache SeaTunnel 成本高?一篇指南手把手带你平滑切换
19
737
薯羞
2026-02-04
安全
开源任务管理工具!一款自托管的全能待办协作工具!
0
281
撒阗奕
2026-02-26
安全
Apache SeaTunnel实战:MongoDB到Doris数据同步的5个常见问题及解决方案
0
775
仟仞
2026-02-27
回复
(1)
嗣伐
半小时前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
姘轻拎
半小时前
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9890
6
韶又彤
9913
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9877
10
遗憩
10006
查看更多
今日好文热榜
920
ai使用分享
296
2026新年开工,邮件营销如何"暖"起来
816
Apache DolphinScheduler任务失败重试机制
623
编译器:类型系统的架构设计
99
鸿蒙应用开发UI基础第十二节:Stack叠层布
131
springboot~ImportBeanDefinitionRegistrar
158
docker安装zabbix7.4
913
Condition底层机制剖析:多线程等待与通知
492
Condition底层机制剖析:多线程等待与通知
600
[拆解LangChain执行引擎]支持自然语言查询
781
深入理解 Java Deque 的设计哲学
1
流量精灵
881
Kite:两种方式实现动态表名
315
Ubuntu Linux 上 固定P/E 核混合架构CPU频
484
【FAQ】HarmonyOS SDK 闭源开放能力 — Loc
23
见证数智力量,甄知科技再获客户感谢信
910
TikTok小店上架产品发布新流程怎么操作?超
775
Apache SeaTunnel实战:MongoDB到Doris数据
734
行情系统为什么越做越慢?
970
JAVA WEB学习13