[英]Quartz Scheduler Cluster Time Sync
我浏览了Quartz文档,但似乎找不到以下问题的明确答案:如果我在集群环境中使用Quartz Scheduler,但计算机不同步(我们将使用JobStoreTX),会发生什么? 石英会解雇多个工作吗? 它只会通过锁定数据库行条目来触发一个吗?
不幸的是,我认为它没有记录在案,但是我相信结果并没有那么破坏性和错误。
集群中的每个Quartz调度程序实例每隔几秒钟轮询一次数据库,以尝试查找要触发的新作业(我认为默认情况下,它将搜索下一个计划的时间, now - 30
秒和now + 60
秒之间的所有作业-但这无关紧要,并且取决于在配置上)。 显然,此操作在整个群集中都是安全的,因为很可能多个实例同时轮询新作业。
如果服务器时间在整个群集中不同步,则假设其中一台服务器将来有时钟。 该服务器认为它晚于实际时间,因此它太早获取或启动作业-至少比所有其他作业早。 这意味着一台服务器将运行更多(甚至不是全部)作业,从而从集群的其余部分窃取工作。 这本身并不安全,但是会导致群集负载不对称。
我正在考虑提出一个问题,建议在所有服务器中使用数据库时间来避免这些问题。 但是, ntp的普及以及使用外部时间源的复杂性使其成为一个坏主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.