quartz集群时间同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了quartz集群时间同步相关的知识,希望对你有一定的参考价值。

我在一个 spring框架中使用了quartz集群,现在的问题是集群中各个节点的时间怎么同步? 是否需要通过修改源代码来获取数据库时间做标准时间 如果要修改的话 是修改哪个方法?
难道就没人能给我一个解决方案吗 目前定时器在集群中运作没有报错 只是如果系统时间不同的话 有时候会一个节点一直运行作业 时间同步真的很难吗?

参考技术A 我印象中quartz是不支持集群的,如果配置了两台服务器,就会被执行两遍。
有两种策略来保证quartz只被执行一遍。
一个是自己在数据库中标志下,已经执行过的任务就不执行了。
一个是将quartz单独配置到一个应用里,和别的应用分开。
第一个是我自己想出来的,第二个是robbin提出的。本回答被提问者采纳

quartz集群调度任务负载不均

参考技术A 多台服务集群模式执行调度周期短的任务不能均衡负载。

下面的run()方法中,不考虑halted和siglock的情况下1)只有 if (triggers != null && !triggers.isEmpty()) 条件满足的情况下,while循环才会进入暂停状态 sigLock.wait(timeUntilContinue); 2)并且获取待执行trigger时最终执行的sql以及传入的条件如下,即next fire time范围为:

与查询条件相关的参数:

所以只有run方法中的while暂停,不去获取新的trigger时其他服务才有机会拿到执行任务,以达到负载均衡。

https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-11.html

以上是关于quartz集群时间同步的主要内容,如果未能解决你的问题,请参考以下文章

Spring+quartz 实现定时任务job集群配置

quartz - 数据库锁

集群的时间同步

集群时间同步

hadoop集群时间同步

Hadoop篇05Hadoop配置集群时间同步