(定时任务)接上篇:定时任务的分布式执行与分布式锁使用场景

在实际项目中,我们经常会遇到多台服务器部署相同定时任务的情况。为了避免任务重复执行,需要理解任务类型分布式锁使用场景

1. 普通 Spring @Scheduled 定时任务

特点:

  • 每台服务器都会独立触发执行任务

  • 多机部署时,任务可能重复执行

  • 无法自动保证互斥性

使用分布式锁的原因:

  • 任务执行可能涉及数据库写操作或其他不可重复的业务逻辑

  • 为了保证同一时间只有一台机器在执行任务

  • 常用方式:Redis 分布式锁、ZooKeeper 分布式锁等

  • 锁通常通过一个固定 Key 保证互斥

示例场景:

  • 酒店数据一致性检查任务

  • 每台服务器每分钟都触发,但只有获得锁的那台执行数据同步

  • 避免多台服务器重复对同一条数据处理


2. 分片任务(ElasticJob / XXL-Job)

特点:

  • 任务被拆分成若干"分片",每个分片只会被一个机器执行

  • 框架天然保证互斥性

  • 可以对大数据量进行分布式处理,提高效率

不需要分布式锁的原因:

  • 框架已经保证每个分片只会被唯一一台机器处理

  • 多机部署时,任务分片被均匀分配,避免重复执行

  • 适合批量同步或批量计算的场景

示例场景:

  • 航站楼同步任务

  • 每个分片对应部分机场数据

  • 每台服务器只处理自己分片的数据,天然避免冲突

  • 无需额外分布式锁


总结

任务类型 多机部署执行方式 是否需要分布式锁 典型场景
Spring @Scheduled 每台服务器独立触发 ✅ 需要 数据一致性检查、清理任务
分片任务 (ElasticJob/XXL-Job) 框架分片调度 ❌ 不需要 批量数据同步、计算任务

核心理解:

  • 普通定时任务多机部署 = 可能重复执行 → 需要分布式锁

  • 分片任务 = 框架调度+分片 → 天然互斥 → 不用分布式锁

相关推荐
极客先躯5 分钟前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
倔强的石头_12 分钟前
从5万次到日均2000万次调用:大模型推理服务的性能工程实践V2.1
后端
tachibana227 分钟前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode
brave_zhao33 分钟前
nginx的进程架构
java·学习·nginx
兰令水33 分钟前
leecodecode【面试150】【2026.7.9打卡-java版本】
java·数据结构·leetcode·面试·职场和发展
禾高网络37 分钟前
互联网医院|AI 互联网医院成品开发系统
java·大数据·人工智能·小程序
环境栈笔记39 分钟前
多账号浏览器选型检查清单:Profile、权限、Session 和任务日志怎么评估
前端·人工智能·后端·自动化
shepherd11144 分钟前
一次把 Spring MVC 文件上传参数“查没了”的排查:multipart、Filter 与 request body 的连环坑
java·spring boot·后端
lbb 小魔仙1 小时前
MuMu 模拟器 6.0 硬核测评:这次升级确实不一样
java·开发语言·模拟器·mumu·硬核测评
前端炒粉1 小时前
手写promise
java·前端·javascript