分布式定时任务 |青训营笔记

126 阅读2分钟

分布式定时任务

windows批处理:shutdown -s -t 600(10分钟后关机) 后缀改为.bat

定时任务: 系统为自动完成特定任务, 实时、延时、周期性完成任务调度的过程

分布式定时任务把分散的可靠性差的定时任务纳入统一平台, 并实现进群管理调度和分布式部署的一种定时任务管理方式, 按触发时机分为 定时任务 延时任务 周期任务; 按执行方式分为: 单机任务(随机触发一机器执行任务) 广播任务(广播到所有机器知行同一任务) Map任务(一个任务分出多个子任务, 每一子任务负责一部分计算) MapReduce任务(在Map任务的基础上可对所有子任务结果做汇总计算)

实现原理

核心解决触发、调度、执行: 触发器(Tigger): 解析任务, 生成触发事件; 调度器(Scheduler): 分配任务, 管理任务生命周期; 执行器(Executor): 获取执行任务的单元, 执行任务逻辑; 还需一个控制台(Admin): 提供任务管理和干预的功能

结构

控制台: 任务(1)---(n)任务实例(1)---(n)任务结果 任务(1)---(n)任务历史 任务元数据: 用户对任务属性的定义, 包括任务调度时机、执行行为等

触发器: 作用: 给定一系列任务, 解析触发的规则, 在规定时间点触发任务的调度 方案: 1.定期扫描+演示消息 2.时间轮: 存储环形队列, 底层采用数组实现, 数组中每个元素可存放在一定时任务列表。多级时间轮。 高可用: 避免单点故障和同一任务被多次触发 Trigger集群模式 数据库行锁模式抢锁成功的触发调度, 否则放弃调度; 分布式锁: Redis锁和Zookeeper锁

调度器: 资源来源: 业务系统提供机器资源; 定时任务平台提供机器资源 资源调度: 节点选择: 随机节点执行 广播执行 分片执行(按用户自定义分片逻辑进行拆分): 提高任务执行效率和资源利用率 高级特性: 任务编排: 使用有向无环图进行可视化任务编排 故障转移: 确保部分执行任务单元失败时, 任务最终执行成功

分布任务基于一致性hash策略分布任务

执行器: 基于注册中心做到执行器的弹性扩缩容。注册、调度、回调、心跳检测(状态上报)