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

83 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

一、概述

  • 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
  • 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。

执行模式

  • 单机任务
  • 广播任务
  • Map任务
  • MapReduce任务

二、实现方案

基于Redis分布式锁实现

每个定时任务都在Redis中设置一个Key-Value的分布式锁,Key为自定义的每个定时任务的名字,Value为服务器Ip,同时设置合适的过期时间,只有获取到锁的服务才能执行任务,其他服务则只能等待轮询。

每个节点在执行时,都要进行以下操作:
1.是否存在Key,若不存在,则设置Key-Value,Value为当前节点的IP
2.若存在Key,则比较Value是否是当前Ip,若是则获取到了锁继续执行定时任务,若不是,则没有获取到锁就不往下执行并定时任务轮询 直到它抢到锁为止。

三、业务应用

  • 业务应用

    • 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务
  • 知识面扩充

    • 分布式定时任务
    • 单机定时任务
    • 延时消息
    • 离线计算引擎Hive
    • 实时计算引擎Flink