【淘淘】Quartz之集群利弊

1、前言:

      虽然单个Quartz实例能给予咱们很好的任务job调度能力,但它不能知足典型的企业需求,如可伸缩性、高可靠性知足。假如你须要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了。使用 Quartz 的集群能力能够更好的支持你的业务需求,而且即便是其中一台机器在最糟的时间挂掉了也能确保全部的 Job 获得执行。html

      

2、Quartz集群框架效果图:

                

        一个 Quartz 集群中的每一个节点是一个独立的 Quartz 应用,它又管理着其余的节点。也就是你必须对每一个节点分别启动或中止。不像许多应用服务器的集群,独立的Quartz 节点并不与另外一其的节点或是管理节点通讯。Quartz 应用是经过数据库表来感知到另外一应用的。java

 

spring中quartz.properties配置quartz集群功能:mysql

 

 

[html]  view plain copy
 print?在CODE上查看代码片派生到个人代码片
  1. org.quartz.jobStore.isClustered= true   
  2. org.quartz.jobStore.clusterCheckinInterval =20000  

 

3、Quartz集群的好处优点:

 

 

一、Quartz能完成较为复杂的定时任务spring

 

二、 Quartz的集群功能保证了任务可靠、高效的正常执行,当集群中其中的一个节点出问题时,另外的节点接手任务,继续工做。确保全部的job的到执行。sql

 

三、 Quartz功能强大但配置较为简单数据库

 

四、 无环境依赖性,Java的普通应用均能使用express

 

4、Quartz集群的缺点:

 

         Quartz一点都不明确你是在同一台机器上运行全部节点,仍是在不一样的机器上运行全部节点。当集群是放置在不一样的机器上时,咱们称之为水平集群。若是全部节点是跑在同一台机器的时候,咱们称之为垂直集群。对于垂直集群,存在着单点故障的问题。这对高可用性的应用来讲是个坏消息,由于一旦机器宕掉了,全部的节点也就被有效的终止了。而当你运行水平集群时,一个严格的要求就是咱们的时钟时间必需要同步,以避免出现离奇且不可预知的行为。假如时钟没可以同步,Scheduler 实例将对其余节点的状态产生混乱,形成难以估计得麻烦。服务器

 怎么解决这个问题呢?app

         俗话说,不能把全部的鸡蛋放在一个篮子里。在能知足业务或者性能要求的条件下,尽可能使用水平集群。咱们有不少方法能够来保证时间的同步。其中最简单额就是把时间抽出来,单独使用一个internet时间服务器(Internet Time Server ITS)来作标准时间,全部的节点都已这上面的时间为准,时间就统一了。框架

 

         Trigger配置文件更改时当数据库qrtz_cron_triggers中cron_expression未更改,则触发器的运行触发规则未改变。

 

因此quartz集群缺陷总结如下几点:

 

一、时间规则更改不方便,需同步更改数据库时间规则描述

 

二、Quartz集群当全部节点跑在同一台服务器上,当服务器崩溃时全部节点将终止,定时任务将不能正常执行

 

三、Quartz集群当节点不在同一台服务器上时,因时钟的可能不一样步致使节点对其余节点状态的产生影响。

而咱们的解决方案,参考本博客内容选用。慎用!

相关文章
相关标签/搜索