美文网首页
XXL-job 介绍及源码分析

XXL-job 介绍及源码分析

作者: iseeyouguo | 来源:发表于2019-05-10 09:45 被阅读0次

XXL-job 介绍及源码分析

  • 官方github: https://github.com/xuxueli/xxl-job

  • xxl-job是一款基于spring, quartz,netty开源定时任务框架,解决的问题是不用每一个job-client都需要集成quartz,管理cron配置,尤其job很多的时候当容器启动会执行一堆job,影响启动速度。

  • 原理简单而言就是由job配置中心管理通过quartz 控制客户端job触发时机,然后通过netty rpc 调用执行客户端的具体实现。这样中心化的方式可以极大改善job的管理成本,也可以配置集群,加上本身框架的轻量级,用起来还是可以的。不过稍微有那么一点鸡肋,在我看来如果用spring-cloud项目,我更倾向于用spring-cloud-stream 消息系统来触发执行客户端实现,用redis锁管理分布式job,这样更加高可用。因为以我的经验来看,如果项目中job承载了很重要的角色,那么在高并发的时候mysq相对于kafka/rabbit和redis来说更容易奔溃,所以选择用消息系统+redis方式管理重要job更加的高可用(ps: 之前被数据库方式的分布式job坑惨了)。

详细解读

一 架构分析
image.png
二 xxl-job-core
三 xxl-job-admin
  • 调度模块中的所有调度任务使用同一个QuartzJobBean,即RemoteHttpJobBean。不同的调度任务将各自参数维护在各自扩展表数据中,当触发RemoteHttpJobBean执行时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务。
RemoteHttpJobBean executeInternal()

    JobTriggerPoolHelper.trigger(jobid,...) 

        JobTriggerPoolHelper.addTrigger(jobId...) 

            XxlJobTrigger.trigger(jobId,...)  processTrigger(group, jobInfo, ...)

                组织参数,通过group获取address  runExecutor(triggerParam, address)

                        executorBiz.run(triggerParam) 具体远程执行
四 执行端

相关文章

网友评论

      本文标题:XXL-job 介绍及源码分析

      本文链接:https://www.haomeiwen.com/subject/hrmtwqtx.html