xxl-job github源码地址:https://github.com/xuxueli/xxl-job
xxl-job 官方文档:https://www.xuxueli.com/xxl-job/#
系统组成
调度模块(调度中心):
负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
执行模块(执行器):
负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
接收“调度中心”的执行请求、终止请求和日志请求等。
架构图
xxl-job 环境搭建步骤:
1、初始化“调度数据库” "调度数据库初始化SQL脚本" 位置为:/xxl-job/doc/db/tables_xxl_job.sql
调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例,如果mysql做主从,调度中心集群节点务必强制走主库。
2、编译源码按照maven格式将源码导入IDE, 使用maven进行编译即可(这里需要注意admin和core版本最好是要一致,不然会出现调度中心调不到job笔者亲自躺坑)
源码结构如下:
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项
目改造成执行器)
xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用,推荐这种
方式;
xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;
xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器
3、配置部署“调度中心”
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
① 修改配置文件
老版本:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties
新版本:/xxl-job/xxl-job-admin/src/main/resources/application.properties
② 部署发布到服务器
调度中心访问地址:http://localhost:8080/xxl-job-admin
(该地址执行器将会使用到,作为回调地址),
默认登录账号 “admin/123456”, 登录后运行界面如下图所示。
③ 调度中心集群(可选)
调度中心支持集群部署,提升调度系统容灾和可用性。调度中心集群部署时,几点要求和建议:
DB配置保持一致;登陆账号配置保持一致;
集群机器时钟保持一致(单机集群忽视);
建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用
API服务等操作均通过该域名进行
4、配置部署“执行器项目”
“执行器”项目:xxl-job-executor-sample-spring (提供多种版本执行器供选择,现以Spring版本为例,
可直接使用,也可以参考其并将现有项目改造成执行器)
作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。
步骤一:maven依赖
确认pom文件中引入了 “xxl-job-core” 的maven依赖;
步骤二:执行器配置
执行器配置,配置文件地址(这里配置参考官方文档配置即可):
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
步骤三:执行器组件配置
执行器组件,配置文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
(appname字段名称可能不一样,这里官方版本说明有提到)
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
步骤四:部署执行器项目:
如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供多种执行器Sample示例项目,选择其中一个即可,各自的部署方式如下。
xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
xxl-job-executor-sample-spring:项目编译打包成WAR包,并部署到tomcat中。
xxl-job-executor-sample-jfinal:同上
xxl-job-executor-sample-nutz:同上
xxl-job-executor-sample-jboot:同上
至此“执行器”项目已经部署结束。
执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。
执行器集群部署时,几点要求和建议:
执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表
5、开发第一个任务”hello world”
前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
步骤一:新建任务,登录调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。
步骤二:“GLUE模式(Java)” 任务开发:
请点击任务右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式(Java)” 运行模式的任务默认已经初始化了示例任务代码,
即打印Hello World。 ( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用
@Resource/@Autowire注入执行器里中的其他服务。
步骤三:触发执行:
请点击任务右侧 “执行” 按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度触发)。
步骤四:查看日志:
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。
在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志
来源:oschina
链接:https://my.oschina.net/javazyw/blog/4287337