[源码分析]-xxljob(1): 整体介绍

news2024/12/31 5:36:56

xxljob是一种分布式的调度框架,所谓分布式调度,是指调度器和执行器不在同一个进程里,因此必须进行远程服务调用,也需要考虑高可用问题。

但是由于调度器维护的数据是落库而在各个节点间共享的,因此不需要考虑数据的一致性问题,而执行器由于是无状态的,集群节点间不需要同步数据,也不需要考虑数据一致性问题。

总体来看,这个架构相对简单。

1. 源码结构

xxl-job主要有3个repo,其中xxl-job-admin放置的是调度器相关的代码,也就是源码中将admin与调度器画上了等号。

xxl-job-core中包含了执行器(executor)的代码,以及执行器和调度器共有的代码。

xxl-job-executor-samples也源码提供的一些样例代码。

 

2. 执行流程

xxl-job架构比较简单,从总体上看,就是包含了调度器和执行器。调度器用于触发定时任务的执行,而执行器是负责具体的任务执行。

两者都可以进行集群部署,交互基于http协议。两者间的交互包括:

(1)执行器注册到调度器(首次注册,定时注册充当心跳功能),解除注册;

(2)调度器触发调度器执行任务;

(3)执行器执行完(成功/失败)任务后,回调调度器,返回执行结果。

 2.1 调度器集群

调度器使用集群部署,可以达到高可用,也可以分散调度压力。

调度器集群没有采用master/slaver的模式,而是采用对等节点模式,各节点在调度任务时使用数据库悲观锁来消除任务的重复调度。

2.2 执行器集群

执行器所执行的任务一般是无状态的,因此可以随机选择一个执行器执行,或者将大任务进行分片进行分摊执行,达到降低执行器压力的目的。

3. 一些统一说明

xxl-job并不是对quartz的包装,没有引用quartz的引用。为什么这么说,虽然xxl-job中在对cron表达式解析时用到了quartz的代码,但这个cron的解析可以说是一种工具类,并不包含任务的架构设计理念。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

必备数据可视化工具大揭秘

探索数据的美妙世界!我们为您带来了一份精心策划的数据可视化工具分享合集。在这个数字时代,数据可视化是理解和传达数据的关键,而这些工具将帮助您以令人惊叹的方式展现数据的潜力。 分享一:伙伴云 伙伴云是一个提供仪表盘和可…

vscode超炫酷的编码特效详解

1.在扩展中搜索 插件:Power Mode 2.在设置里搜索Code Actions On Save 3.点击在settings.json中编辑 {"powermode.enabled": true, //启动// "powermode.presets": "flames", // 火花效果 // 炸裂// "powermode.presets&quo…

织梦宏,解锁元音之谜

本篇博客会讲解力扣“2586. 统计范围内的元音字符串数”的解题思路,这是题目链接。 本题可以使用一个宏来判断一个字符是不是元音字母,接着遍历字符串数组,统计满足条件的字符串个数。 需要满足的条件有: 第一个字符是元音字母。…

微信小程序 滚动到底部加载新的数据 之后滚动到顶部

1.配置到底部监听 在app.json的window里面加入 里面的300表示距离底部300rpx触发onReachBottom事件 默认50rpx "window": {"onReachBottomDistance": 300}, 2.在数据列表的js页面 /*** 页面上拉触底事件的处理函数*/onReachBottom() {console.log("…

采用 CD4011 的温度监测自动控制电路

该电路结构简单,制作容易,由一只与非门和一只热敏电阻组成测控电路和警笛声发声电路,由一只继电器作为执行电路。 一、电路工作原理 电路原理如图 8 所示。 测温电阻RT接在控制门D1的输入端,它和电阻R1、R2及RP通过RP的分压调节…

Cesium入门之十一:认识Cesium中的Entity

目录 Entity类简介Entity在Cesium中的作用Entity的常用属性使用Entity创建点、线、面常用的Entity图形对象及其属性创建点、线、面的方法创建点创建线创建面将点、线、面添加到viewer中 修改Entity的外观和样式点(Point)的外观样式线(Polylin…

蓝奥声核心技术——无线协同代理技术

1.技术背景 无线协同代理技术指基于对目标场景状态变化的协同感知而获得触发响应并进行智能决策,属于蓝奥声核心技术--边缘协同感知(EICS)技术的关键支撑性技术之一。该项技术涉及物联网边缘域的无线通信技术领域,具体主要涉及网络服务节点与…

mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入

文章目录 背景说明 背景说明 我这里主要针对2处地方要进行增量执行sql: 1.新功能需要创建一张新表结构indicator_alarm_threshold2.给菜单表和另一个表新增数据 我们现在使用的是项目启动先初始化加载init-table.sql的脚本(这里面的轻易不动了,保持原…

浏览器测试的三大挑战及解决方案

目录 跨浏览器测试,为什么重要 跨浏览器测试挑战及其解决方案 自动化挑战大 解决方案:正确选择工具 设施维护负担大 解决方案:选择可靠的云服务 浏览器适配列表太多 解决方案:选择多版本支持的平台 总结: 随着…

关于Nuxt3.6兼容低版本游览器的实战以及可能存在的问题

当我们网站打包上线后,有些问题我们肯定也要考虑在内,兼容性也是其中一个重要的一种,可能会有人说,都2023年了,还在乎那些废弃的游览器干啥,我只能说,错!大错特错! 我们不…

docker方式安装gitlab

一:docker 方式安装gitlab 用docker来安装比较方便简单,包括版本升级也会变得更简单。 1、拉取gitlab镜像 gitlab-ce表示的是社区免费版本 docker pull gitlab/gitlab-ce:latest2、创建映射文件 mkdir -p /data/docker/gitlab/etc mkdir -p /data/do…

虚拟现实(VR)在医疗保健中的5种应用

医疗保健中的VR虚拟现实 虚拟现实的由来已久,18世纪,法国的医生使用布制的分娩模拟器向助产师和外科医生教授医学技术。在20世纪60年代初,医生一边对心肺复苏学员口述心肺复苏的技巧,一边使用一家塑料玩具厂家制造的塑料娃娃现场…

前端开发工程师的自我修养:前端开发工程师必须掌握的 Promise(详解)以及在 Vue3 项目中的实战应用

文章目录 📋前言🎯关于 promise(用于使用 JavaScript 编写的 Windows 应用商店应用)的内容分享🧩promise 究竟是什么?承诺关系 🎯JavaScript Promise🧩认识了解 Promise &#x1f3a…

RK3568平台开发系列讲解(外设篇)HX711调试

🚀返回专栏总目录 文章目录 一、HX711 工作原理二、硬件连接三、驱动四、修改设备树五、测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解 HX711 模块调试。 一、HX711 工作原理 该部分由应变片与 HX711 模数转换器组成。应变片上的压力变化引起应…

线程基础、线程之间的共享和协作(初篇)

什么是进程和线程? 进程是操作系统进行资源分配的最小单位。资源包括cpu,内存空间,磁盘io等。同一进程里的多个线程共享该进程的全部系统资源。而进程与进程之间是相互独立的。 线程是cpu调度的最小单位,必须依托于进程而存在。…

高斯金字塔的秘密,尺度空间证明的思考

在构建图像尺度空间的过程中,唯一使用的核函数是高斯核,这一点被T Lindeber在文献《Scale-space theory: a basic tool for analyzing structures at different scales》中证明,高斯核是唯一可以产生多尺度空间的核。 相信大家在使用高斯金字…

Linux多线程与fork()函数

4.1多线程中使用进程复制 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<pthread.h> void* fun(void* arg) {for(int i0;i<5;i){printf("fun run pid%d\n",getpid());sleep(1);} } int m…

基于人工智能与边缘计算Aidlux的鸟类检测驱赶系统(可修改为coco 80类目标检测)

●项目名称 基于人工智能与边缘计算Aidlux的鸟类检测驱赶系统&#xff08;可修改为coco 80类目标检测&#xff09; ●项目简介 本项目在Aidlux上部署鸟类检测驱赶系统&#xff0c;通过视觉技术检测到有鸟类时&#xff0c;会进行提示。并可在源码上修改coco 80类目标检测索引直…

554、Vue 3 学习笔记 -【常用Composition API(二)】 2023.06.30

目录 一、常用Composition API1. 拉开序幕的setup2. ref函数3. reactive函数4. Vue3.0中的响应式原理5. reactive对比ref 二、参考链接 一、常用Composition API 1. 拉开序幕的setup &#xff08;1&#xff09;Vue3.0中一个新的配置项&#xff0c;值为一个函数。 &#xff08…

逍遥自在学C语言 | 常见的预定义宏

前言 在C语言中&#xff0c;预定义宏是由编译器提供的一组特殊标识符&#xff0c;可以在程序中直接使用&#xff0c;无需进行额外的定义。 预定义宏可以提供有关源文件、行号、日期、时间和函数名等信息&#xff0c;对于调试和日志记录非常有用。 一、人物简介 第一位闪亮登…