定时任务概述

简介: 定时任务是基于时间表达式调度执行的任务,适用于对账、提醒、订单超时等场景。实现方案包括单体架构的轮询、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

相关文章
|
7月前
|
数据采集 数据库 Python
Python异步编程入门:告别“等待”,让代码飞起来
Python异步编程入门:告别“等待”,让代码飞起来
396 100
|
机器学习/深度学习 人工智能 自然语言处理
AI产品经理的技术必修课:从工具应用到系统设计
AI产品经理的技术必修课:从工具应用到系统设计
1000 84
|
7月前
|
存储 JSON API
Python轻松玩转JSON文件:读写实战指南
Python轻松玩转JSON文件:读写实战指南
405 22
|
7月前
|
安全 网络安全 调度
**面向全球化业务的高级网络防护方案:集成分布式防护与加密通信的技术架构解析**
摘要:随着游戏出海、直播平台及金融科技业务的全球化发展,传统网络安全方案在应对复杂网络攻击与通信安全需求时面临严峻挑战。本文深入探讨一种基于SDK集成与分布式节点调度的新型防护架构,该架构通过将防护能力前置至客户端层面,实现业务加速、攻击防护与通信安全的一体化解决方案。
225 0
|
7月前
|
安全 Unix API
告别混乱时间处理:Python中time与datetime模块的实用选择
告别混乱时间处理:Python中time与datetime模块的实用选择
427 126
|
7月前
|
缓存 监控 开发者
Python装饰器:让代码优雅加倍
Python装饰器:让代码优雅加倍
357 135
|
7月前
|
人工智能 自然语言处理 运维
业内首发泛娱乐底座大模型!元象开源XVERSE-Ent中英双模型,单卡部署超低门槛
元象开源首款聚焦泛娱乐场景的大模型XVERSE-Ent,含中英双版本,专精角色一致性、长剧情理解与多元语境适配,支持轻量化部署,助力开发者低成本打造AI社交、游戏与创意内容应用。
640 3
|
7月前
|
安全 机器人 API
WhatsApp 账号共存模式解析:如何实现手机 App 与 API 同时在线?
随着业务扩展,很多企业希望在保留 WhatsApp 手机端人工服务的同时,接入 API 实现自动化营销。本文将详解 Meta 最新的“账号共存”模式,并介绍如何通过 阿里云 Chat App 的原生集成能力,轻松实现手机 App 与 API 后台的同步协作,兼顾服务温度与运营效率。
746 1
|
12月前
|
前端开发 Java 关系型数据库
基于springboot的二手车交易系统
本系统基于B/S架构,采用VUE前端与SSM框架后端结合MySQL数据库,实现二手车交易管理。系统利用Java语言开发,具备良好的扩展性与稳定性,旨在提升二手交易管理效率,满足用户对信息查询与管理的需求。

热门文章

最新文章