这是我参与「第五届青训营」伴学笔记创作活动的第 14 天。
今天,我主要学习了定时任务的相关知识,简要学习了它在软件开发中的应用。
一、定时任务简介
在计算机行业中,"定时任务"是指在预先设定的时间点上自动执行的任务。通常用于自动执行重复性或周期性的任务,如每天的数据备份或每周的报告生成。
打个比方,如果我在学校搭建了一个大型OJ服务器,需要定期对数据信息进行备份。相比于人工设置一个闹铃,到点了后就手动运行命令,我们不如在定时的系统内设计一个脚本,每当到达那个指定时间的时候就自动触发特定指令以开始备份内容。
在初始状况下,我们可以写一个批处理来处理,或者在Windows/Linux的服务下来处理,后面也可以手动写一个守护进程来动态监视,并实现多线程等高级功能。
二、分布式定时任务
"分布式定时任务"是指在分布式系统中执行定时任务的技术。它通常由多个独立的计算机节点组成,每个节点都可以负责处理一部分任务。这样的系统通常更具有可靠性和可扩展性,并且可以通过负载平衡来优化系统性能。一般来说,它具有如下三个特点:
- 平台化管理
- 分布式部署
- 支持海量数据
按照触发时机来分类,它还可以分类为:
- 定时任务:在特定时间触发(例如下午4点,经典闹铃)
- 延时任务:在一定时间后触发(例如一个小时后,就像倒计时任务)
- 周期任务:在固定轮回内触发(例如每周六12点启动,很多备份任务都这样)
三、常见分布任务框架
该类型框架往往仅用于集团内部,开源的较少,因此下面提到的大多都是国内的框架:
- Xxl-job
- SchedulerX
- TCT
- Elastic-job
- Saturn