定时任务概述

简介: 定时任务是基于时间表达式调度执行的任务,适用于定时对账、订单超时取消等场景。实现方案包括单体架构的轮询、Timer、ScheduledExecutorService、Quartz、SpringTask,以及分布式架构下的TBSchedule、Elastic-Job、XXL-JOB等,解决集群重复执行、动态调度与故障转移等问题。

什么是定时任务

通过时间表达式来进行调度和执行的一类任务被称为定时任务。一般能解决的业务场景:定时对账、服务到期的定时提醒、订单超时未支付的自动取消等。

有哪些定时任务实现方案

单体架构调度技术

  • 轮询+线程休眠

while(true) + Thread.sleep

  • java.util.Timer + java.util.TimerTask

Timer是一个定时器工具,用来在一个后台线程计划执行指定任务,它可以计划执行一个任务或反复多次

TimerTask是一个抽象类,它的子类代表一个可以被Timer计划执行的任务

  • ScheduledExecutorService

JDK1.5之后作为并发工具被引入,默认只支持周期性的执行频率(如每秒/每分钟),要支持具体某一刻年月日时分秒的执行窗口需要自定义扩展,较麻烦

  • Quartz

开源任务调度框架,Java语言编写实现,支持Spring整合使用

  • SpringTask

spring框架提供的轻量级定时任务调用工具

SpringBoot框架下可使用注解:@EnableScheduling+@Scheduled,底层还是SpringTask

分布式架构调度技术

分布式场景可能遇到的问题

  • 多台机器集群部署的定时任务如何保证不被重复执行
  • 如果在不重启服务前提下,动态调整定时任务执行时间
  • 部署定时任务的机器发生故障如何故障转移
  • 如何对定时任务做任务监控

业界解决方案

  • 淘宝:TBSchedule,现在是:ScheduleX
  • 当当:Elastic-Job
  • 唯品会:Saturn,基于当当的二次开发,新增一些特性
  • 大众点评:XXL-JOB
相关文章
|
22小时前
|
存储 JSON NoSQL
3-MongoDB常用命令
本文介绍了MongoDB数据库的基本操作,包括数据库与集合的创建、删除,文档的增删改查及分页排序查询。以文章评论系统为例,演示了数据插入、批量操作、条件查询、更新修改及统计分页等功能,涵盖常用命令与语法规范。
 3-MongoDB常用命令
|
20小时前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,助力用户全面掌握SQL使用情况,提升日志分析效率与治理能力。
如何做好SQL质量监控
|
22小时前
|
Java 数据库连接 调度
xxljob执行源码分析
本文深入解析XXL-JOB源码,涵盖架构设计、核心执行流程与关键线程机制。包括任务调度、快慢线程池分离、注册与心跳检测、失败重试告警、日志清理及时间轮原理,结合图文详解各组件实现逻辑,助你全面掌握分布式任务调度底层机制。
 xxljob执行源码分析
|
22小时前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度框架的部署与使用,涵盖源码获取、服务端数据库初始化、配置启动、客户端注册及定时任务测试全过程,助您快速搭建并运行调度系统。
|
22小时前
6.Watcher机制(三)之ZooKeeper
本文深入分析ZooKeeper类的源码,重点解析其内部类结构、核心属性与构造函数,并详细探讨create、delete、multi、exists等核心方法的同步与异步实现机制,揭示其基于Watcher机制的事件注册与客户端通信原理。
 6.Watcher机制(三)之ZooKeeper
|
22小时前
4.Watcher机制(一)
本文深入分析Zookeeper的Watcher机制,涵盖核心类与源码实现。重点解析Watcher、Event、KeeperState、EventType等接口与枚举,梳理ZKWatchManager对事件的管理及通知流程,帮助理解Zookeeper的监听机制工作原理。
|
22小时前
|
存储 算法 API
2.持久化FileTxnLog
本文深入分析Zookeeper持久化核心源码,重点解析TxnLog与FileTxnLog实现机制,涵盖事务日志追加、校验、读取、提交及截断等关键流程,揭示其数据存储与一致性保障原理。
 2.持久化FileTxnLog
|
22小时前
|
存储
1.序列化
该文章内容丰富且详细
 1.序列化
|
22小时前
|
存储 关系型数据库 调度
|
22小时前
|
缓存 NoSQL 关系型数据库
微服务原理篇(Canal-Redis)
该文章内容详细且实用
 微服务原理篇(Canal-Redis)