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

86 阅读2分钟

相比于单机定时任务,分布式定时任务不仅可以实现自动化的定时、延时、周期任务调度,还可以支撑体量更大的业务,并且有更高的性能、伸缩性和稳定性。

相比于大数据处理引擎,分布式定时任务还可以调用HTTP和RPC服务,目标不同

核心架构

分布式定时任务核心要解决出发、调度、执行三个关键问题

  • 出发提:Trigger,解析任务,生成出发事件

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

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

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

任务元数据

任务元数据(Job)是用户对任务属性的定义,包括任务类型、调度时机、执行行为和方式等。

任务实例

标记了Job_id,触发事件,状态&结果,过程信息

触发器

给定一系列任务,解析触发规则,在规定的时间点触发任务调度

  • 需要支持大量任务
  • 秒级调度
  • 多次执行过
  • 高性能,避免资源浪费

现有方案

  • 定期扫描+延时消息
  • 时间轮
  • 分布式锁

调度器

资源来源可能是业务系统也可能是定时任务平台。二者一个利用率高,一个扩缩容方便。

资源调度方面,由于是分布式,需要选择节点:

  • 随机节点执行:适用于定时对账
  • 广播执行:适用于批量运维
  • 分片执行:适用于海量日志统计。基于一致性hash策略分发任务,当有Executor异常时,故障转移。

执行器

注册机制,保证扩容、缩容的灵活性

业务应用

所有需要定时、延时、周期性执行业务的场景,都可以考虑分布式定时任务。比如电商,订单未支付自动关闭,定时优惠券;互动,集五福分红包;游戏,定期更新榜单,领取补偿等。

相比于其他方案: 图片.png