在单体应用时代,简单的 Spring `@Scheduled` 或 Linux Crontab 能够胜任定时统计工作。但在多实例微服务集群中,简单的定时器会导致多个节点并发重复扣款、重复发券。纳海川技术团队在多套企业级项目中落地了统一分布式任务调度治理规范。
一、调度选型:为什么弃用传统 Quartz?
传统 Quartz 依赖数据库行级锁争抢任务,当任务节点达到数十个时,数据库连接池常因排队死锁导致调度阻塞。XXL-Job 采用调度中心与执行器解耦的轻量级架构,支持 RPC 心跳自动注册与集群高可用。
二、大数据量作业的分片广播(Sharding Broadcast)
对于数百万会员账单清算等耗时任务,单机处理极易超时。纳海川采用分片广播路由策略:
调度中心下发任务 → 执行器集群(4台机器)各自获取 `index/total` 分片参数 → 各节点执行 SELECT * FROM users WHERE id % total = index → 4倍速度并行完成处理
三、故障转移(Failover)与阻断机制
当某台执行器在执行过程中突发宕机,调度中心通过心跳探活在 15 秒内感知异常,自动将该分片任务转移给健康节点接管,并触发钉钉/企业微信群机器人告警。
生产准则:纳海川要求所有调度任务必须在业务层保证幂等性,严禁出现任务重试导致的重复扣费或数据污染。