任务调度系统与消息队列的本质区别:时间驱动 vs 事件驱动
任务调度系统的基本功能:
一般的任务调度系统,整体上看,有2部分:
调度中心+执行器
如何实现?
系统要处理的几个问题:
准确
- 任务不能同时给多个Executor。
- 被错过执行的作业重触发
效率
- 高效的调度,防止任务饥饿
-阻塞处理
-并行调度 - 合理利用executor资源
依据executor资源情况分发任务 - 任务分片
多个executor同时处理一个任务 - 弹性伸缩
executor的动态扩展。
可用性
- 失败转移
任务在executor挂掉的情况下,也要保证被执行成功。 - misfire
错过了执行时机的任务,也要保证被触发。
1 和 3 是必须要满足的,2是优化。
扩展功能
1 任务依赖
2 调度日志
3 执行器日志回调
参考
http://www.xuxueli.com/xxl-job/#/?id=_531-%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3