定时任务概述

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

相关文章
|
4月前
|
数据采集 数据库 Python
Python异步编程入门:告别“等待”,让代码飞起来
Python异步编程入门:告别“等待”,让代码飞起来
329 100
|
4月前
|
存储 JSON API
Python轻松玩转JSON文件:读写实战指南
Python轻松玩转JSON文件:读写实战指南
304 22
|
4月前
|
API 数据安全/隐私保护 计算机视觉
用Python批量处理图片,5分钟搞定一天的工作
用Python批量处理图片,5分钟搞定一天的工作
418 128
|
4月前
|
安全 Unix API
告别混乱时间处理:Python中time与datetime模块的实用选择
告别混乱时间处理:Python中time与datetime模块的实用选择
384 126
|
4月前
|
监控 大数据 数据处理
用Python生成器表达式处理大数据,效率提升不止一倍
用Python生成器表达式处理大数据,效率提升不止一倍
|
4月前
|
存储 编解码 缓存
2026年上亿用户级短视频 APP 的服务器成本与架构解析
上亿用户规模的短视频 APP 需依托复杂的分布式架构支撑高并发、大流量场景,其服务器相关成本不仅包含硬件资源费用,还涉及存储、分发、安全等全链路支出。从行业实践来看,这类应用的年度服务器及配套服务成本通常达数千万元级别,其中 CDN 分发、云服务器集群、数据存储是核心开销项,以下结合技术架构与实际案例展开解析。
|
4月前
|
人工智能 自然语言处理 运维
业内首发泛娱乐底座大模型!元象开源XVERSE-Ent中英双模型,单卡部署超低门槛
元象开源首款聚焦泛娱乐场景的大模型XVERSE-Ent,含中英双版本,专精角色一致性、长剧情理解与多元语境适配,支持轻量化部署,助力开发者低成本打造AI社交、游戏与创意内容应用。
381 3
|
4月前
|
安全 机器人 API
WhatsApp 账号共存模式解析:如何实现手机 App 与 API 同时在线?
随着业务扩展,很多企业希望在保留 WhatsApp 手机端人工服务的同时,接入 API 实现自动化营销。本文将详解 Meta 最新的“账号共存”模式,并介绍如何通过 阿里云 Chat App 的原生集成能力,轻松实现手机 App 与 API 后台的同步协作,兼顾服务温度与运营效率。
429 1
|
4月前
|
消息中间件 负载均衡 API
微服务的世界:从零开始理解微服务架构
本文深入浅出地介绍了微服务架构,从单体架构的优缺点切入,阐述了微服务的诞生背景、核心优势与挑战,并结合电商平台和视频平台等实际案例,解析其应用场景及关键技术,如服务通信、注册发现、负载均衡等,最后通过Todo应用演示简单设计,帮助读者全面理解微服务。
192 0