这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
什么是分布式定时任务?
概念:分布式定时任务是指将定时任务的实现过程分散到不同的计算机节点上,它是使用多台主机(或者节点)共同完成定时任务的一种机制。它主要用来对某些重要的网站模块和系统的大量数据进行定时的批量处理,以此来提高系统的性能和可用性。 分布式定时任务任务分配机制非常容易。它可以为不同的任务预置不同的运行时间和优先级,并可以基于不同的任务特性,将不同的任务分配给不同的任务执行节点。分布式定时任务在实现和管理上也非常容易,这样可以有效地利用可用计算资源来完成指定的批量任务。另外,它还可以支持定时任务的增量和缩放,可以支持定时任务的跨机节点执行,自动实现任务运行正确性的检查和诊断,以及自动扩容和缩容。
说一说具体实现的方法:
(1)系统中需要定义一个“调度器”,通过调度器来控制定时任务的执行,定义任务的时间、任务的触发条件,以及任务的执行方式等;
(2)分布式系统中,需要定义一个“客户端”,用来定期向调度器发送心跳信号,以确保客户端的可用性。客户端可以接收调度器的指令,并执行相应的任务;
(3)调度器根据设定的时间,会从客户端获取数据,并解析数据,根据解析后的数据判断是否要触发任务,如果要触发,调度器会向客户端发送指令,客户端接收指令后执行任务。
分布式定时任务机制:
(1)客户端端定期向调度器发送心跳信号,以确保客户端的可用性;
(2)调度器定期从客户端获取数据,并解析数据,根据解析后的数据判断是否要触发任务;
(3)客户端接收调度器发来的指令后执行相应的任务;
(4)客户端执行任务完毕后,向调度器发送响应信号,以表明执行任务完毕。
分布式定时任务种类
| 种类 | 解释 |
|---|---|
| 定期任务 | 每天、每周、每月定期执行的任务,如每天零点更新日志 |
| 定时任务 | 按指定时间准时执行的任务,如每周三晚上九点定时发布新闻 |
| 周期任务 | 在指定的周期内反复执行的任务,如每7天同步数据 |
| 实时任务 | 在接收到消息时立即执行的任务,如收到新的订单时实时发送短信 |
| 重复任务 | 重复执行相同任务的任务,如每隔5分钟检测服务器是否正常运行 |
| 事件驱动任务 | 在特定的事件触发时运行的任务,如在每次提交完毕后立即执行代码检查任务 |
| 流程任务 | 由多个步骤组成的任务,如发布新商品,一步添加产品信息、二步上传图片等 |
| 容错任务 | 在出现故障时执行恢复操作的任务,如数据库出现异常时执行备份恢复任务 |
| 调度任务 | 按照一定调度规则执行的任务,如每小时执行一次统计任务 |
| 后台任务 | 在后台不停运行的任务,如处理大量数据的后台程序 |
| 定点任务 | 每隔一定的时间点执行的任务,如每天8点开始发送系统报告 |
| 监控任务 | 监控系统状态的任务,如持续监控服务器性能 |
| 错峰任务 | 实现请求峰值平滑处理的任务,如以错峰方式处理大量并发请求 |
| 报表任务 | 生成报表的任务,如每天凌晨生成昨日的订单报表 |
| 定制任务 | 自定义的任务,如每天定时执行特定的任务、自定义的定时任务 |