这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
一、概述
- 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
- 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
执行模式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
二、实现方案
基于Redis分布式锁实现
每个定时任务都在Redis中设置一个Key-Value的分布式锁,Key为自定义的每个定时任务的名字,Value为服务器Ip,同时设置合适的过期时间,只有获取到锁的服务才能执行任务,其他服务则只能等待轮询。
每个节点在执行时,都要进行以下操作:
1.是否存在Key,若不存在,则设置Key-Value,Value为当前节点的IP
2.若存在Key,则比较Value是否是当前Ip,若是则获取到了锁继续执行定时任务,若不是,则没有获取到锁就不往下执行并定时任务轮询 直到它抢到锁为止。
三、业务应用
-
业务应用
- 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务
-
知识面扩充
- 分布式定时任务
- 单机定时任务
- 延时消息
- 离线计算引擎Hive
- 实时计算引擎Flink