XXL-JOB:揭秘跨服务调用

SpringBoot集成XXL-JOB调度平台 阅读详情

01 引言

前面已经介绍了XXL-JOB 的整体架构以及主要的组件。

XXL-JOB作为一款广泛应用的分布式任务调度框架,通过其精巧的架构设计和高效的通信机制,为跨服务调用提供了标准化的解决方案。

在分布式系统中,任务调度作为协调跨服务协作的核心组件,面临着服务发现、通信可靠性、负载均衡等诸多挑战。尤其在微服务架构下,不同业务模块往往独立部署,如何高效、安全地实现跨服务任务触发与执行,成为保障系统弹性和可扩展性的关键。

本文将揭秘XXL-JOB实现跨服务调用的核心原理,揭示其如何借助服务注册、动态调度及RPC通信等技术,构建高可用的分布式任务调度体系。

02 通讯模块剖析

2.1 完整的任务调度通讯流程

  1. 「调度中心」向「执行器」发送http调度请求
  2. 「执行器」中接收请求的服务,实际上是一台内嵌Server,默认端口9999,使用的基于Netty的WebSocket;
  3. 「执行器」执行任务逻辑
  4. 「执行器」http回调「调度中心」调度结果
  5. 「调度中心」中接收回调的服务,是针对执行器开放一套API服务

上面的流程摘自官网。

简单来说:

「调度中心」向「执行器」发送http调度请求,「执行器」使用WebSocket接收并处理,最后返回结果。

2.2 通讯数据加密

调度中心向执行器发送的调度请求时使用RequestModel和ResponseModel两个对象封装调度请求参数和响应数据, 在进行通讯之前底层会将上述两个对象对象序列化,并进行数据协议以及时间戳检验,从而达到数据加密的功能。

03 调度中心源码追踪

我们以手动发起一项调度任务为例,其访问路劲为:/jobinfo/trigger

3.1 源码链路

从源码链路来看,最终通过工具类发起了POST请求。

3.2 链路的入口

com.xxl.job.admin.controller.JobInfoController#triggerJob

@RequestMapping("/trigger")
@ResponseBody
public ReturnT<String> triggerJob(HttpServletRequest request,
                                  @RequestParam("id") int id,
                                  @RequestParam("executorParam") String executorParam,
                                  @RequestParam("addressList") String addressList) {
   
   

    // login user
    XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request);
    // trigger
    return xxlJobService.trigger(loginUser, id, executorParam, addressList);
}

3.3 关键源码解析-线程池调用

com.xxl.job.admin.core.thread.JobTriggerPoolHelper#addTrigger

通过线程池调用com.xxl.job.admin.core.trigger.XxlJobTrigger#trigger

【全链路追踪】XXL-JOB与TraceID集成实战:从MDC到跨服务调用 本文详细介绍了在XXL-JOB定时任务中集成全链路追踪TraceID的实战方案。通过MDC、Spring AOP和拦截器技术,实现任务执行、跨服务调用及异步场景下的TraceID无感注入与自动传递,有效解决分布式系统日志排查难题,大幅提升运维效率。 阅读详情

相关推荐

XXL-JOB快速入门(什么是XXL-JOB、部署XXL-JOB、在SpringBoot项目中接入XXL-JOB、XXL-JOB中的核心概念、集群环境下任务的路由策略)

XXL-JOB 是一个分布式任务调度平台,由中国人许雪里(一个来自美团的程序员)开发XXL-JOB 的核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB 现已开放源代码并接入多家公司的线上产品线许雪里/xxl-jobXXL开源社区。

m0_74825093的博客 1246

xxl-job-admin2.3远程调用APi

xxl-job-admin2.3远程调用APi 本文主要描述xxl-job的接口调用实现对job动态增删改查。 代码结构 一、pom引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3</

weixin_44768189的博客 6284

Xxl-Job 实现简单的远程调用其他服务(RestTemplate和OpenFeign)

这里有两种方法:第一种:使用Spring框架的进行远程调用API第二种:使用进行远程调用本次远程调用其他服务,是在执行器的中使用的。

m0_57623482的博客 1924

SpringBoot整合XXL-JOB

XXL-JOB是一个开源的分布式任务调度平台,它能够帮助开发者简化定时任务的管理和执行。本文将指导你如何将XXL-JOB集成到Spring Boot项目中,以便管理和调度定时任务。通过以上步骤,你已经成功将XXL-JOB集成到Spring Boot项目中,并创建了一个简单的任务处理器。XXL-JOB提供了强大的任务调度功能,能够帮助你高效地管理和执行定时任务。随着你对XXL-JOB的深入了解,你还可以探索其更多高级特性和配置。

My_wife_QBL的博客 1592

Word论文插入带有方括号序号的参考文献——尾注+交叉引用

文章目录1. 尾注功能2. 为参考文献的序号添加方括号3. 调整参考文献前的序号大小4. 重复引用同一参考文献5. 将交叉引用的序号改为带有方括号的上标序号格式6. 删除参考文献前的尾注横线 1. 尾注功能 首先使用尾注功能顺序插入参考文献,暂时不考虑方括号问题,具体操作如下: ① 将光标放在需要插入参考文献角标的地方 ② 在word菜单栏,“引用-脚注部分右下角箭头”(用来设置尾注格式) ③如...

Your_Raymond的博客 9万+

Win11系统下Notepad++右键菜单失效?3种修复方法实测有效(附注册表备份指南)

本文针对Windows 11系统中Notepad++右键菜单失效的常见问题,提供了三种经过实测有效的修复方法。核心解决方案包括使用官方NppShell.dll重新注册、手动修复注册表项以及系统级问题排查,并详细说明了操作前的注册表备份指南,确保修复过程安全可靠。

m2n3b4v5c6的博客 328

CST入门——0. 安装CST Studio Suite 2022

安装CST Studio Suite 2022详细操作步骤

plmxu34的博客 6万+

头歌操作系统2.3系统调用命令ls执行的系统调用

设置版本0内核为分析对象。然后一直c直到虚拟机出现。然后一直c就是答案了。

m0_74128952的博客 1万+

DOTS 性能基石:为什么传统 Unity 代码难以满足现代游戏需求?(DOTS 系列教程 · 第1篇)

本文探讨了Unity游戏开发中的性能优化问题,指出性能问题不应在最后才考虑,而应贯穿整个开发过程。文章分析了性能问题的三大表现(渲染开销、物理模拟、游戏逻辑),并解释了依赖硬件升级的不可行性。重点剖析了传统Unity代码性能低下的六大根源:垃圾回收卡顿、编译器优化不足、多核利用不足、数据结构和代码缓存不友好、过度抽象等问题。最后指出Unity项目中常见的反模式,如主线程垄断、内存碎片化等,为后续学习DOTS高性能架构解决方案奠定基础。

分享知识,拥抱变化 149

【Clickhouse】Cannot allocate block number in Zookeeper write prefix view location

我有一个问题,我CK集群跑批的时候,replicated表变成只读的了下面是CK的报错和当时ZK的日志。下面是zk报错开始 我认为是写入的时候,压力太大,ZK扛不住了,就按照博客里的建议优化了ZK的参数,现在偶尔还会只读,zk报错都是图里的那种clickhouse的集群是5分片的集群,数据量比较大。每小时批量一次,每次2-10W条数据,字段的话,不到200个字段,使用的 jdbc sink写入。

九师兄 834

【MATLAB代码】蚁群算法(Ant Colony Optimization, ACO)路径规划(避障)仿真程序,订阅专栏后可直接查看完整源代码

基于蚁群算法的路径规划系统。可自定义起点、终点和障碍物地图,系统通过蚁群算法自动计算最优路径,并输出路径坐标、障碍物地图和收敛曲线。完整MATLAB源代码直接运行。适用于复杂障碍环境下的路径优化问题。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 3090

基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现

本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中

huanghm88的专栏 238

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: XXL-JOB:剖析三大灵魂组件
下一篇: XXL-JOB:揭秘任务注册、自动发现
智_永无止境
博客等级 码龄10年 803粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值