XXL-Job入门

[复制链接]
发表于 2025-10-30 12:15:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
XXL-Job入门

什么是xxl-job?

​         xxl-job是一个分布式的任务调理平台,其核心筹划目的是:学习简单、开发灵敏、轻量级、易扩展,如今已经开放源代码并接入多家公司的线上产物线,开箱即用。xxl是xxl-job的开发者大众点评的许雪里名称的拼音开头。
​         xxl-job框架重要用于处理惩罚分布式的定时任务,其重要由调理中心和实验器构成。
调理模块(调理中心):
         负责管理调理信息,按照调理设置发出调理哀求,自身不负担业务代码。调理体系与任务解耦,进步了体系可用性和稳固性,同时调理体系性能不再受限于任务模块;
         支持可视化、简单且动态的管理调理信息,包罗任务新建,更新,删除,GLUE开发和任务报警等,全部上述利用都会实时见效,同时支持监控监控调理结果以及实验日志日志,支持实验器Failover。
实验模块(实验器):
         负责吸收调理哀求并实验任务逻辑。任务模块专注于任务的实验等利用,开发和维护更加简单和高效;
         吸收“调理中心”的实验哀求、停止哀求和日志日志哀求等。
总结:
​         调理中心:同一管理任务调理平台上的调理任务,负责触发调理实验,而且提供任务管理平台。
​         实验器:吸收调理中心的调理而且实验,可以直接实验也可以集成到项目中。
​         调理中心和实验器两个模块分开摆设,相互分离,两者之间通过RPC举行通讯,此中调理中心重要是提供一个平台,管理调理信息,发送调理哀求,自己不负担业务代码,而实验器继承调理中心的调理实验业务逻辑。

xxl-job的原理

1、实验器的注册和发现
实验器的注册和发现重要是关系两张表:
xxl_job_registry:实验器的实例表,生存实例信息和心跳信息;
xxl_job_group:每个服务注册的实例列表。
实验器启动线程每隔30秒向注册表xxl_job_registry哀求一次,更新实验器的心跳信息,调理中心启动线程每隔30秒检测一次xxl_job_registry,将高出90秒还没有收到心跳的实例信息从xxl_job_registry删除,并更新xxl_job_group服务的实例列表信息。

2、调理中心调用实验器
调理中心的利用:
调理中心通过循环不绝的:
1.关闭自动提交事件
2.利用mysql的灰心锁,其他事件无法进入
  1. select * from xxl_job_lock where lock_name = 'schedule_lock' for update
复制代码
3.读取数据库中的xxl_job_info:记载定时任务的相干信息,该表中有trigger_next_time字段表现下一次任务的触发时间。
拿到间隔当前时间5s内的任务列表:
  1. SELECT <include refid="Base_Column_List" />
  2.         FROM xxl_job_info AS t
  3.         WHERE t.trigger_status = 1
  4.             and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
  5.         ORDER BY id ASC
  6.         LIMIT #{pagesize}
复制代码
分为三种环境处理惩罚:
对于 nowTime > triggerNextTime + 5,直接跳过不实验,重置trigger_next_time的时间。(高出5s)
对于 triggerNextTime < nowTime < triggerNextTime+5的任务(不高出5s的):
         开线程处理惩罚实验触发逻辑,根据当前时间更新trigger_next_time
         如果新的任务trigger_next_time - nowTime < 5,放到时间轮中,时间轮是一个map:
        
  1. private volatile static Map<Integer, List<Integer>> ringData = new ConcurrentHashMap<>();
复制代码

         根据新的任务下一次触发时间更新下下一次任务触发时间
对于 trigger_next_time > nowTime,将其放入时间轮中,根据任务下一次触发时间更新下下一次任务触发时间

4.commit提交事件,同时开释排他锁
大抵如下图


实验器的利用:
1、实验器吸收到调理中心的调理信息,将调理信息放到对应的任务的等待队列中
2、实验器的任务
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表