本文探讨了Quartz分布式调度的主要实现方式,旨在帮助开发者更好地理解和应用该技术。
本段落介绍的是使用JDBC-Jobstore实现基于数据库的集群方式:1.目前,群集仅适用于JDBC-Jobstore(JobStoreTX或JobStoreCMT),通过使群集中的每个节点共享相同的数据库来工作。
2.负载均衡会自动发生。在触发器到达其预定时间时,获取任务的第一个节点(通过在其上放置一个锁定)将是执行该任务的节点。这样可以确保集群中每个节点都能够尽可能快地处理作业。
3.当其中一个正在运行作业的节点出现故障时,系统将进行故障切换操作。其他正常工作的节点会检测到失败状况并识别数据库中的相关作业状态信息。对于标记为需要恢复(在JobDetail上具有“请求恢复”属性)的工作项,剩余的集群节点将会重新执行它们;而没有被标记为需恢复的任务,则会在下一次触发器激活时释放以供执行。
4.群集功能最适合用于扩展长时间运行或CPU密集型作业的情况。如果需要处理大量短期任务(例如1秒内完成),则可以考虑通过使用多个不同的调度程序对作业进行分区来实现负载均衡,包括采用高可用性的集群化调度程序配置方法。然而需要注意的是,在增加更多节点数量超过三个时可能会由于数据库锁机制的影响导致性能下降。