Quartz多机部署方案

01 技术选型采用quartz框架的集群模式

1.1 Quartz介绍

Quartz 是一个开源的任务调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。使用Quartz可以非常快速实现一个定时任务调度程序,可与Spring进行整合.

1.2 Quartz集群

1.png

Quartz应用可以部署到多台机器上,每一个Quartz应用都是一个Quartz实例,配置文件完全一致,每一个Quartz实例的instance_id可以自动生成.多个实例之间通过jdbc与数据库交互,实现协同,可以实现:

  1. 负载平衡自动发生,群集的每个节点都尽可能快地触发jobs。当Triggers的触发时间发生时,获取它的第一个节点(通过在数据库表qrtz_locks上加锁)是将触发它的节点。
  2. 每次只有一个节点会触发任务执行,不会重复执行任务
  3. 当其中一个节点在执行一个或多个作业期间失败时发生故障切换
  4. Quartz可以将任务信息存储到数据库的方式,便于集群部署和单机故障后的重跑
2.png

1.3 为什么选用Quartz

  1. Quartz是比较成熟的任务调度框架
  2. 对于Quartz集群,同一个任务(例如同步一个endpoint的元数据),采用的是多线程方式,同一个时间点只有一台机器去执行同步任务,不是分布式作业,是集群模式,可以避免单机故障问题
  3. 多个节点之间通过数据库协同,多机部署对于环境依赖更加简单.

1.4 实现方式

  1. 将现在的Spring-Schedule任务调度方式修改为Quartz任务调度的方式
  2. 数据库需要建quartz集群相关的表
  3. quartz配置文件中开启集群模式和jdbc存储任务元信息.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容