分布式调度

文章讨论了一个任务调度系统的核心组件:触发器负责解析任务规则并在合适时间触发调度;调度器分配任务并管理其生命周期;执行器获取任务单元并执行逻辑。文章还探讨了高可用性问题,包括集群部署、分布式锁和故障转移策略。
摘要由CSDN通过智能技术生成

三个问题:触发、调度、执行

  • 触发器:Tigger,解析任务,生成触发事件
  • 调度器:Scheduler,分配任务,管理任务的生命周期
  • 执行器:Executor,获取执行任务单元,执行任务逻辑
  • Admin,控制台,提供任务管理和干预的功能
Tigger
Schedule
Executor

在这里插入图片描述

  • 功能架构
    在这里插入图片描述

任务元数据

在这里插入图片描述

状态机:

在这里插入图片描述

任务实例

在这里插入图片描述

触发器

核心职责: 给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度

  • 定期扫描+延时消息

在这里插入图片描述

  • 时间轮

在这里插入图片描述

  • 链表储存任务
  • 最小堆储存,按执行时间排序,每个节点存储执行时间任务表
    • 数组存储最小堆,O(n)无限扩充
  • 环形数组(时间轮)
    • 给时间轮加圈数,计数
    • 多级时间轮 :时轮、分轮、秒轮

高可用

问题:

不同业务之间,任务调度互相影响?
负责扫描和触发的机器都挂了怎么办?

单机

雪崩

集群

防止单点故障
执行紊乱

数据库行锁模式

任务抢锁,成功抢锁才会执行
任务之间频繁抢锁,抢锁开销大

分布式锁

触发调度之前,尝试抢占分布式锁,可使用Redis锁或Zookeeper锁
抢锁失败,放弃调度

节点选择

  • 随机节点执行
  • 广播执行:所有执行节点分发调度任务并执行
  • 分片执行: 按照用户自定义的逻辑进行拆分任务,分发到集群中不同节点并行执行,提升资源利用率

在这里插入图片描述

  • N个执行器,M个业务区段 ,M>=N 最好是整数倍

任务编排

有向无环图 : 定义依赖关系,再执行

故障转移

单元任务失败,保证最终任务成功

在这里插入图片描述

  • 任务分发基于一致性哈希策略

在这里插入图片描述

  • 消息队列的重试机制保证任务一定会被调用

执行器

在这里插入图片描述

  • 弹性扩缩容
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值