• 【Quartz】工作原理


      本文参考至http://www.cnblogs.com/davidwang456/p/4205237.html和https://blog.csdn.net/guolong1983811/article/details/51501346

    1 集群架构

     

    Quartz的分布式架构如上图,可以看到数据库是各节点上调度器的枢纽。各个节点并不感知其他节点的存在,只是通过数据库来进行间接的沟通。

    实际上,Quartz的分布式策略就是一种以数据库作为边界资源的并发策略.每个节点都遵守相同的操作规范,使得对数据库的操作可以串行执行。而不同名称的调度器又可以互不影响的并行运行.

    2 调度机制

    2.1 任务调度通讯机制

     

                Quartz运行时主要有四个角色:QuartzSchedulerThread类作为主体,循环执行调度流程;JobStore作为中间层,按照quartz的并发策略执行数据库操作,完成主要的调度逻辑;JobRunShellFactory负责实例化JobDetail对象,将其放入线程池运行;LockHandler负责获取LOCKS表中的数据库锁。

    2.2 任务调度流程

    0.调度器线程run()

    1.获取待触发trigger

        1.1数据库LOCKS表TRIGGER_ACCESS行加锁

        1.2读取JobDetail信息

        1.3读取trigger表中触发器信息并标记为"已获取"

        1.4 commit事务,释放锁

    2.触发trigger

        2.1数据库LOCKS表STATE_ACCESS行加锁

        2.2确认trigger的状态

        2.3读取trigger的JobDetail信息

        2.4读取trigger的Calendar信息

        2.5更新trigger信息

        2.6 commit事务,释放锁

    3实例化并执行Job

        3.1从线程池获取线程执行JobRunShell的run方法

    2.3 任务调度时序

     

    2.4 Trigger状态变化

     

  • 相关阅读:
    NHibernate 配置增加代码感知
    NHibernate应用开发
    Spring.Net+NHibernate+Castle学习网站
    Windows Live Writer 网易博客配置
    第一章. 序言
    NHibernate之配置文件属性说明
    Log4Net各参数API
    EntityFramework 6.0< Code First > 连接 Mysql数据库
    maven阿里云中央仓库
    eclipse安装maven
  • 原文地址:https://www.cnblogs.com/xiongxx/p/8995061.html
Copyright © 2020-2023  润新知