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

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

1. 普通 Spring @Scheduled 定时任务

特点:

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

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

  • 无法自动保证互斥性

使用分布式锁的原因:

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

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

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

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

示例场景:

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

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

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


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

特点:

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

  • 框架天然保证互斥性

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

不需要分布式锁的原因:

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

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

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

示例场景:

  • 航站楼同步任务

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

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

  • 无需额外分布式锁


总结

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

核心理解:

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

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

相关推荐
一叶龙洲12 分钟前
Java中使用模板引擎(FreeMarker / Velocity) + Word XML导出复杂Word
xml·java·word
Halo_tjn19 分钟前
Java 接口的定义重构学生管理系统
java·开发语言·算法
Albert Edison25 分钟前
【RabbitMQ】快速入门
java·分布式·rabbitmq
ch.ju27 分钟前
Java程序设计(第3版)第二章——类型转换(1)
java
XiYang-DING29 分钟前
【Java】哈希
java·哈希算法·散列表
想你依然心痛30 分钟前
HarmonyOS 5.0医疗健康开发实战:构建分布式健康监测与AI预警系统
人工智能·分布式·harmonyos
ai旅人32 分钟前
Guava RateLimiter深度解析:非阻塞令牌桶限流原理与跑批实战
java·限流·guava
Seven9734 分钟前
【从0到1构建一个ClaudeAgent】规划与协调-技能
java
BingoGo35 分钟前
Laravel13 + Vue3 的免费可商用 PHP 管理后台 CatchAdmin V5.2.0 发布
后端·php·laravel
范什么特西39 分钟前
MyEclipse8.5配置
java·ide·myeclipse