全栈开发之Quartz分布式定时任务调度集群
背景
我们一个单体项目中有个定时任务,每隔一个小时会从各业务表中查询并计算不同用户的得分、排名,是使用 Quartz 实现的;这在后来进行横向扩展为多实例集群部署时,遇到了问题:定时任务在多个应用实例中重复执行了,显然这不是我们期望的结果,同时对计算资源来说也是一种浪费,更为严重的是会导致一段时间内数据的不一致问题,这时便涉及到集群环境下定时任务的幂等性问题。
定时任务
关于定时任务的实现,可通过 Spring 的 @EnableScheduling , quartz , xxl-job , elastic-job 等各种方案实现。我们一开始选了 Quartz 来实现定时任务,下面主要介绍下 Quartz 定时任务分布式集群服务的搭建。
分布式集群任务调度
如何解决分布式任务调度幂等性问题?一般有以下方案可以选:
配置文件,开关标识,flag;单点分布式锁,ZooKeeper,Redis;复杂定时任务
版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/19311.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论