首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
SQL-Server
›
XXL-Job入门
返回列表
发新帖
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的灰心锁,其他事件无法进入
select * from xxl_job_lock where lock_name = 'schedule_lock' for update
复制代码
3.读取
数据库
中的xxl_job_info:记载定时任务的相干信息,该表中有trigger_next_time字段表现下一次任务的触发时间。
拿到间隔当前时间5s内的任务列表:
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.trigger_status = 1
and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
ORDER BY id ASC
LIMIT #{pagesize}
复制代码
分为三种环境处理惩罚:
对于 nowTime > triggerNextTime + 5,直接跳过不实验,重置trigger_next_time的时间。(高出5s)
对于 triggerNextTime < nowTime < triggerNextTime+5的任务(不高出5s的):
开线程处理惩罚实验触发逻辑,根据当前时间更新trigger_next_time
如果新的任务trigger_next_time - nowTime < 5,放到时间轮中,时间轮是一个map:
private volatile static Map<Integer, List<Integer>> ringData = new ConcurrentHashMap<>();
复制代码
根据新的任务下一次触发时间更新下下一次任务触发时间
对于 trigger_next_time > nowTime,将其放入时间轮中,根据任务下一次触发时间更新下下一次任务触发时间
4.commit提交事件,同时开释排他锁
大抵如下图
实验器的利用:
1、实验器吸收到调理中心的调理信息,将调理信息放到对应的任务的等待队列中
2、实验器的任务
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
分布式数据库
吴旭华
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表