Quartz集群原理分析

一、Quartz概念

Quartz是一个优秀的任务调度框架, 具有以下特点:
  1. 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求;
  2. 负载均衡
  3. 高可用
调度器:scheduler
任务调度的控制器,负责定时任务的调度,并且提供任务和触发器的增删改查等api方法。
任务:job
job是实际被调度的任务,每个任务必须指定具体执行任务的实现类,实现类需要继承QuartzJobBean或者实现org.quartz.Job接口,具体的业务逻辑写在execute方法里面。
是否支持并发的注解: @DisallowConcurrentExecution
触发器:trigger
trigger用来定义调度时间的概念,即按什么样时间规则去触发任务。主要几种类型:
  • SimpleTrigger:简单触发器,从某个时间开始,每隔多少时间触发,重复多少次。
  • CronTrigger:使用cron表达式定义触发的时间规则,如 "0 0 0,2,4 1/1 * ? *" 表示每天的0,2,4点触发。
  • DailyTimeIntervalTrigger:每天中的一个时间段,每N个时间单元触发,时间单元可以是毫秒,秒,分,小时
  • CalendarIntervalTrigger:每N个时间单元触发,时间单元可以是毫秒,秒,分,小时,日,月,年。
trigger状态: WAITING,ACQUIRED,EXECUTING,COMPLETE,BLOCKED,ERROR,PAUSED,PAUSED_BLOCKED,DELETED
未正常触发的任务:misfire job
没有在正常触发时间点触发的任务。主要由一下几种情况导致:
  1. 触发时间在应用不可用的时间内,比如重启
  2. 上次的执行时间过长,超过了下次触发的时间
  3. 任务被暂停一段时间后,重新被调度的时间在下次触发时间之后
处理misfire job的策略,需要在创建trigger的时候配置,每种trigger对应的枚举值都不同,具体在接口里面有定义。CronTrigger有2种处理misfire的策略:
处理策略
描述
MISFIRE_INSTRUCTION_FIRE_ONCE_NOW
立即触发一次
MISFIRE_INSTRUCTION_DO_NOTHING
忽略,不处理,等待下次触发
之间的关系:
  • scheduler由工厂类SchedulerFactory创建,主要负责job和trigger的持久化管理,包括新增、删除、修改、触发、暂停、恢复调度、停止调度等;
  • 一个job可以关联多个trigger,但是一个trigger只能关联一个job。

二、集群模式

Quartz的集群模式指的是一个集群下多个节点管理同一批任务的调度,通过共享数据库的方式实现,保证同一个任务到达触发时间的时候,只有一台机器去执行该任务。每个节点部署一个单独的quartz实例,相互之间没有直接数据通信。
spring配置
<bean id="quartzJobFactory" class="com.taobao.trip.hcs.service.gubei.job.AutowiringSpringBeanJobFactory">
    <property name="ignoredUnknownProperties" value="applicationContext"/>
</bean>

<!-- Scheduler Factory -->
<bean id="quartzScheduler"
      class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobFactory" ref="quartzJobFactory"/>
    <!-- 数据源 -->
    <property name="dataSource" ref="dataSource
  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值