xxl-job基础组件核心类解解读一:XxlJobScheduler

前言:

        前人栽树后人乘凉,基础框架和组件让我们在开发的过程中只需关注与业务本身功能的开发即可,大大节约了我们的开发成本,让我们的工作效率变得更加的高效。在此感谢所有基础组件的开发者们让我们codeing简单高效。

摘要:

        xxl-job基础组件核心类解读是我个人熟悉xxl-job的过程,大家可以借鉴一下某一部分的解读。希望大家在阅读的过程中发现问题给我留言,我会及时订正避免给大家带来误导。XxlJobScheduler在我看来是xxl-job的主板:i18n的加载,触发线程池初始化,失败监控线程启动,回调线程池和任务结果丢失线程启动,执行日志报表线程启动,任务导入线程启动都由XxlJobScheduler进行初始化和销毁。因此想要了解xxl-job我觉得可以先从这个类入手阅读其中涉及每个线程的执行逻辑,就可以很快的熟悉和了解xxl-job的底层原理和设计思想了

参考代码截图:触发任务线程池,失败监控线程,任务导入线程已经用红框标出

拆解详述:

           1、JobTriggerPoolHelper : 触发任务线程池

                  功能描述:包含两个线程池,快速触发任务线程池和慢触发任务线程池。会根据每分钟执行的次数决定任务投递到快速触发任务线程池还是慢触发任务线程池中 。  

            2、JobRegistryHelper: 执行器注册

                  功能描述:此类包含一个线程池registryOrRemoveThreadPool和一个registryMonitorThread线程每隔30秒进行一次执行器地址确认(删除无效的地址,更新最新的地址)确保任务执行能够调度有效的client地址触发任务。

           3、JobFailMonitorHelper:失败监控线程   

               功能描述: 主要是一个monitorThread线程,每隔10秒查询一次执行日志获取1000执行失败的日志,进行打标(告警标识和重试标识),从而触发告警逻辑和任务重试逻辑。

          4、JobCompleteHelper:任务回调和任务丢失标记

                功能描述: 主要有一个线程池callbackThreadPool主要处理client任务执行结果和日志输出等回调动作和一个任务丢失标记线程(每10分钟执行一次),任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;

           5、JobLogReportHelper: 任务执行报表

               功能描述:主要是一个logrThread日志报表线程,每分钟刷新一次任务执行报表数据

           6、JobScheduleHelper:任务管理

               功能描述:主要有两个线程和一个map,scheduleThread工作计划线程查询未来5秒内要执行的数据,同时更新下次执行时间,同时将要执行任务ID和几秒后执行存入map中。ringThread环线程,每次整秒校验一次map中是否有要触发的任务,如果有则投递到JobTriggerPoolHelper的线程池中

     注:TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000 ); 确保整点(秒)触发,System.currentTimeMillis()%1000 通过取余的方式获取当前毫秒精度,1000 - System.currentTimeMillis()%1000 差多少毫秒到下一秒,如果集群服务器(xxl-job admin server)上的时间不统一就可能导致多次触发的问题,就需要调整时间精度

补充说明:

1、以上线程中涉及的定时循环,每隔几毫秒,每隔几秒或每隔几分钟都是通过:TimeUnit.【时间单位】.sleep(n)实现

2、JobApiController:客户端任务处理过程中的回调接口(执行log和执行结果等)都由此接口处理呦,这7个类是我认为最为核心的7个类了,其中涉及了很多的思想和编程技巧非常值得我们学习和借鉴的

        

        

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值