定时任务概述

简介: 定时任务指通过时间表达式调度执行的任务,适用于对账、提醒、订单超时等场景。实现方案包括单体架构的轮询、Timer、ScheduledExecutorService、Quartz、SpringTask,以及分布式架构下的TBSchedule、Elastic-Job、Saturn、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

相关文章
|
2月前
|
人工智能 NoSQL Java
黑马最新项目
聚焦AIGC与大模型私有化部署,涵盖聊天机器人、RAG知识库、Stable Diffusion文生图等技术;实战云岚到家、四方保险等项目,深入Spring Cloud、Redis、分布式事务与任务调度;覆盖支付、秒杀、搜索、保险等多场景业务开发,助力掌握AI与高并发系统设计核心能力。
|
2月前
|
存储 缓存 安全
常用过滤器介绍
Spring Security通过过滤器链实现安全控制,涵盖认证、授权、CSRF防护等功能。如SecurityContextPersistenceFilter管理上下文,UsernamePasswordAuthenticationFilter处理登录,LogoutFilter处理退出等。过滤器数量与加载取决于具体配置,灵活可扩展。
|
2月前
|
前端开发 安全 Java
自定义认证前端页面
本文介绍Spring Security基础配置:通过定义接口返回欢迎信息,配置SecurityConfig实现权限控制,所有请求需认证,启用表单登录并指定登录页、处理路径及跳转逻辑,禁用CSRF。启动后访问接口自动跳转登录页,输入默认用户信息即可成功访问受保护资源。
|
2月前
|
存储 安全 Java
认证源码分析与自定义后端认证逻辑
本文深入分析Spring Security认证流程,从UsernamePasswordAuthenticationFilter到AuthenticationManager、AuthenticationProvider,最终通过自定义UserDetailsService实现数据库认证。重点解析了认证过程中关键对象的协作机制,如UsernamePasswordAuthenticationToken、SecurityContextHolder等,并详细演示了如何通过实现UserDetailsService接口完成自定义用户加载与权限封装,最后在配置类中注册服务,实现灵活的身份验证。
|
2月前
|
Java 关系型数据库 MySQL
OAuth2.0实战案例
本项目基于Spring Boot与Spring Cloud构建OAuth2安全认证系统,包含授权服务器与资源服务器。通过配置JDBC存储客户端信息与Token,实现授权码、简化、密码及客户端四种模式认证。集成MyBatis与MySQL,完成用户权限管理与资源访问控制,确保系统安全可扩展。
|
2月前
|
SQL 安全 关系型数据库
了解SQL注入
SQL注入是利用Web应用输入验证缺陷,将恶意SQL代码插入查询语句,从而操控数据库的攻击方式。常见后果包括绕过登录、数据泄露、篡改或删除数据,甚至远程执行系统命令。攻击者可通过构造特殊输入改变SQL逻辑,如使用`'--`注释密码验证部分,实现未授权访问。盲注技术则在无直接数据回显时通过响应延迟等判断执行情况。防御需结合输入验证(白名单优于黑名单)、参数化查询、错误信息屏蔽及网络层防护如IPS,综合提升安全性。
|
2月前
|
JSON 缓存 前端开发
什么是跨域
CORS(跨域资源共享)是W3C标准,允许浏览器向跨源服务器发起XMLHttpRequest请求,突破AJAX同源限制。浏览器自动处理CORS通信,开发者无需特殊编码。关键在于服务器需实现CORS接口。请求分为简单和非简单两类,后者会先发送OPTIONS预检。相比仅支持GET的JSONP,CORS更强大且安全,兼容现代浏览器。
|
2月前
|
应用服务中间件 Linux nginx
容器引擎Docker
Docker解决开发、测试、生产环境不一致及依赖冲突问题,通过镜像打包应用与依赖,实现跨环境无缝迁移。容器隔离运行,秒级启动,体积小,性能高,支持多环境统一部署,提升交付效率与系统稳定性。
|
5月前
|
并行计算 数据格式 异构计算
完整教程:从0到1在Windows下训练YOLOv8模型
本文详细介绍在Windows系统下使用YOLOv8训练目标检测模型的完整步骤,涵盖环境配置、数据集准备、模型训练与测试、常见问题解决及GPU加速技巧。提供详细命令与代码示例,并推荐现成数据集与工具,助您高效完成模型训练。
2516 18
完整教程:从0到1在Windows下训练YOLOv8模型
|
3月前
|
人工智能 文字识别 自然语言处理
一文带你读懂“医保智慧经办智能体”
医保智慧经办智能体融合AI、大数据与云计算,构建五层技术架构,实现智能咨询、审核、监管与决策支持,推动医保服务从“人找服务”向“服务找人”转变,提升效率、精准防控风险,助力医保治理现代化。