XXL-JOB 源码分析

调度中心自动发现执行器服务

xxl没有采用zk等协作服务器,是通过数据库来实现的服务自动注册。

执行器端

执行器端应用启动时,首先会执行com.xxl.job.core.executor.XxlJobExecutor.start方法,这是在applicationcontext-xxl-job.xml中配置好的。
start方法中会启动一个守护线程,守护线程中通过jetty服务调用调度中心固定的controller(/api/registry)。

调度中心

调度中心提供有很多controller,除了提供给前台界面UI的controller之外,还有个JobApiController,专门接收执行器端发来的请求,其中:
/api/registry
接收执行器端注册请求,通过执行器appName,和执行器地址更新数据库中的时间,即数据库中该执行器地址的时间每隔30秒更新一次。

调度中心启动时同时启动两个守护线程:
JobRegistryMonitorHelper
每隔30秒移除数据库中过期的执行器,通过比较更新时间小于当前时间-90s。

这样就可以及时将宕掉的执行器端某个服务器排除在外了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 新的一年刚刚开始,许多人都给自己制定了新的目标,希望能改变自己,美国畅销书作家马丁.麦德斯出了一本新书,“This...
    力其阅读 791评论 0 0
  • 设定是喵比汪大十五岁,年龄差的梗,如果接受不了请绕道么么哒。甜文,我保证。 -------------------...
    不是绞丝儿阅读 342评论 0 3
  • 大约一年前,在CCTV9看过一个纪录片<寻味顺德>,感慨都发出好几番。 没想到就在梦想突然就实现了!当然不是我有钱...
    拥衾王阅读 662评论 4 9