Go语言学习14 | 青训营笔记

111 阅读2分钟

这是我参加「第五届青训营」笔记创作活动的第14天

分布式定时任务

把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。

分布式定时任务特点

  • 自动化:全自动完成定时任务的调度和执行
  • 平台化:基于平台化思维管控一系列分布式任务
  • 分布式:在分布式的情况下运行任务调度
  • 伸缩性:采用集群化扩容,可以按照需要随时扩容。
  • 高可用:不存在单点故障,并且可以做到故障转移

按触发机制分类。

  • 定时任务:特定时间触发
  • 延时任务:延时触发,比如一分钟之后执行
  • 周期任务:固定周期或者固定频率周期触发,比如每隔一分钟或者每天晚上凌晨三点

执行方式

  • 单机任务:只在一台机器上执行,适合计算量小,并发度低的工作。
  • 广播任务:光波导指定机器执行
  • Map任务:一个任务可以分为多个子任务去执行,每个机器执行一个或者多个小人任务。
  • MapsReduce任务:在Map任务的基础上对所有子任务结果进行汇总继续

核心架构————解决出发、调度、执行三个关键问题

Admin控制台:提供任务管理和干预功能

  • 任务元数据:用户对任务属性定义,包括任务类型和调度时机,执行行为等。
  • 任务实例:一个确定的job的一次运行实例。

Trigger触发器:解析任务,生成触发事件

  • 实现方案
    • 定期扫描+延时消息
    • 时间轮
      • 环形存储队列,底层用数组实现,数组中的每个元素可以存放一个定时任务列表
      • 链表、最小堆、时间轮、多级时间轮
    • 高可用性————分布式锁模式

Scheduler调度器:分配任务,管理任务生命周期

  • 资源调度
    • 节点调度 -随即节点执行 广播执行 分布执行
    • 任务分片
    • 任务编排
    • 故障转移

Executor执行器:获取执行任务单元、执行任务逻辑

  • 注册
  • 调度
  • 回调
  • 心跳检测