设计网站首页多少钱,新产品开发的5个步骤,平台式网站,网站首页弹出公告模板目录 XXL-Job特性系统组成架构图调度模块剖析任务 “运行模式” 剖析执行器 XXL-Job
XXL-JOB是一个分布式任务调度平台#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线#xff0c;开箱即用。
特性
1、简单#… 目录 XXL-Job特性系统组成架构图调度模块剖析任务 “运行模式” 剖析执行器 XXL-Job
XXL-JOB是一个分布式任务调度平台其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线开箱即用。
特性
1、简单支持通过Web页面对任务进行CRUD操作操作简单一分钟上手 2、动态支持动态修改任务状态、启动/停止任务以及终止运行中任务即时生效 3、调度中心HA中心式调度采用中心式设计“调度中心”自研调度组件并支持集群部署可保证调度中心HA 4、执行器HA分布式任务分布式执行任务”执行器”支持集群部署可保证任务执行HA 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时也支持手动录入执行器地址 6、弹性扩容缩容一旦有新执行器机器上线或者下线下次调度时将会重新分配任务
还有多种特性具体可以查看官网 链接: https://www.xuxueli.com/xxl-job/
系统组成
xxl-job分为 调度中心和执行器两大模块
调度模块调度中心 负责管理调度信息按照调度配置发出调度请求自身不承担业务代码。调度系统与任务解耦提高了系统可用性和稳定性同时调度系统性能不再受限于任务模块 支持可视化、简单且动态的管理调度信息包括任务新建更新删除GLUE开发和任务报警等所有上述操作都会实时生效同时支持监控调度结果以及执行日志支持执行器Failover。
执行模块执行器 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作开发和维护更加简单和高效 接收“调度中心”的执行请求、终止请求和日志请求等。
架构图 将调度行为抽象形成“调度中心”公共平台而平台自身并不承担业务逻辑“调度中心”负责发起调度请求。
将任务抽象成分散的JobHandler交由“执行器”统一管理“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。
调度模块剖析
调度线程池 调度采用线程池方式实现避免单线程因阻塞而引起任务调度延迟。
并行调度 XXL-JOB调度模块默认采用并行机制在多线程调度的情况下调度模块被阻塞的几率很低大大提高了调度系统的承载量。 XXL-JOB的不同任务之间并行调度、并行执行。 XXL-JOB的单个任务针对多个执行器是并行运行的针对单个执行器是串行执行的。同时支持任务终止。
过期处理策略 任务调度错过触发时间时的处理策略
可能原因服务重启调度线程被阻塞线程被耗尽上次调度持续阻塞下次调度被错过 处理策略 过期超5s本次忽略当前时间开始计算下次触发时间 过期5s内立即触发一次当前时间开始计算下次触发时间
调度中心HA集群 基于数据库的集群方案数据库选用Mysql集群分布式并发环境中进行定时任务调度时会在各个节点会上报任务存到数据库中执行时会从数据库中取出触发器来执行如果触发器的名称和执行时间相同则只有一个节点去执行此任务。
任务 “运行模式” 剖析
“Bean模式” 任务
原理每个Bean模式任务都是一个Spring的Bean类实例它被维护在“执行器”项目的Spring容器中。任务类需要加“JobHandler(value”名称”)”注解因为“执行器”会根据该注解识别Spring容器中的任务。任务类需要继承统一接口“IJobHandler”任务逻辑在execute方法中开发因为“执行器”在接收到调度中心的调度请求时将会调用“IJobHandler”的execute方法执行任务逻辑。
“GLUE模式(Java)” 任务 原理每个 “GLUE模式(Java)” 任务的代码实际上是“一个继承自“IJobHandler”的实现类的类代码”“执行器”接收到“调度中心”的调度请求时会通过Groovy类加载器加载此代码实例化成Java对象同时注入此代码中声明的Spring服务请确保Glue代码中的服务和类引用在“执行器”项目中存在然后调用该对象的execute方法执行任务逻辑。
GLUE模式(Shell) GLUE模式(Python) GLUE模式(PHP) GLUE模式(NodeJS) GLUE模式(Powershell) 原理脚本任务的源码托管在调度中心脚本逻辑在执行器运行。当触发脚本任务时执行器会加载脚本源码在执行器机器上生成一份脚本文件然后通过Java代码调用该脚本并且实时将脚本输出日志写到任务日志文件中从而在调度中心可以实时监控脚本运行情况
执行器
执行器实际上是一个内嵌的Server默认端口9999配置项xxl.job.executor.port。
在项目启动时执行器会通过“JobHandler”识别Spring容器中“Bean模式任务”以注解的value属性为key管理起来。
“执行器”接收到“调度中心”的调度请求时如果任务类型为“Bean模式”将会匹配Spring容器中的“Bean模式任务”然后调用其execute方法执行任务逻辑。如果任务类型为“GLUE模式”将会加载GLue代码实例化Java对象注入依赖的Spring服务注意Glue代码中注入的Spring服务必须存在与该“执行器”项目的Spring容器中然后调用execute方法执行任务逻辑。
工作流程
1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务实际上是一台内嵌Server默认端口9999; 2、“执行器”执行任务逻辑 3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务是针对执行器开放一套API服务;