定时任务概述

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

相关文章
|
1天前
|
jenkins 持续交付 调度
项目《神领物流》
本项目为自研物流系统,基于微服务架构实现智能调度与管控,涵盖用户、快递员、司机多端应用。采用GitFlow管理代码,通过Jenkins实现持续集成,提交后自动构建,保障开发效率与系统稳定,类似顺丰速运模式,面向C端提供高效快递服务。(239字)
|
1天前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
1天前
|
消息中间件 存储 缓存
MQ篇
本项目采用RabbitMQ、Kafka和EMQ实现异步通信与数据采集。RabbitMQ用于服务解耦、流量削峰,支持多种消息模式与高可用集群;Kafka处理高吞吐用户行为数据,保障实时推荐与数据同步;EMQ基于MQTT协议实现物联网设备与服务器间可靠通信,支持QoS分级与延迟发布,确保消息不丢不重。三者协同提升系统性能与稳定性。
|
1天前
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
事故源于大KEY在业务高峰时占满带宽,导致Redis内存使用率骤升至100%。虽有淘汰策略,但缓冲区(输入/输出)激增吞噬内存,主线程阻塞,命令无法处理,最终引发GET/SET超时崩溃。根本原因为大KEY与高流量叠加,触发缓冲区溢出,超出实例承载极限。
|
1天前
|
fastjson Java Kotlin
FastJson:大面积故障规避案例
不到两年开发中,已三次踩坑FastJson,版本差异大,使用需谨慎。项目为Kotlin/Java/Groovy混编:Java生态完善;Kotlin语法简洁、支持协程,但工具链兼容差;Groovy用得少,依赖模型辅助。曾因反序列化异常致预发大量报错,排查发现为FastJson隐患所致,影响广泛,令人后怕。
|
1天前
|
Ubuntu Java Linux
Docker
本文介绍Docker基础操作,涵盖镜像打包、容器管理及Dockerfile编写。通过示例演示如何基于Ubuntu镜像构建Java运行环境,打包Spring Boot应用(linuxDemo.jar),并实现容器化部署与端口映射,最终验证服务运行状态,适合初学者快速掌握Docker核心技能。(239字)
|
1天前
|
数据可视化 数据挖掘 BI
性能优化专题
两幅图像展示了数据可视化图表,包含柱状图与折线图的组合,呈现清晰的趋势分析与对比数据,适用于业务报表、数据分析等场景,助力直观理解关键指标变化。
|
1天前
|
人工智能 NoSQL Java
幂等方案专题
xxx智能教育辅导平台基于Spring Cloud Alibaba构建,融合大模型与知识图谱技术,实现学情诊断、自适应学习与智能批改。通过通义千问Max分析作业数据,精准定位知识盲区;结合Neo4j构建学科能力网络,动态推荐个性化学习路径;集成OCR与语义理解实现作文智能批改,准确率超98%。支持高并发访问,日均处理50万+作业请求,提升教学效率与学习体验。
|
1天前
|
存储 关系型数据库 MySQL
事务控制篇
关系型数据库基于表结构,支持事务与复杂查询,适用于强一致性场景;非关系型数据库灵活高效,适合高并发、海量数据场景。索引提升查询速度,常用B+树实现,因遍历、IO性能更优。MySQL通过redo log、undo log保障ACID,利用分库分表、读写分离应对高并发。
|
1天前
|
存储 缓存 安全
Java基础篇
本文系统讲解Java核心知识,涵盖final关键字、重载与重写、反射机制、String类比较、集合框架、线程安全、HashMap原理、ConcurrentHashMap实现、线程池应用及JVM组成等,结合项目实践解析反射与线程池的典型使用场景,深入剖析底层原理与性能优化策略。