xxljob2.4.1本地部署
所属分类 xxl-job
浏览量 101
https://www.xuxueli.com/xxl-job/
二、快速入门部分
2.4架构图
https://www.xuxueli.com/doc/static/xxl-job/images/img_Qohm.png
下载源码
git clone https://gitee.com/xuxueli0323/xxl-job.git -b 2.4.1
创建数据库
mysql 客户端命令行
source /PATH/xxl-job/doc/db/tables_xxl_job.sql;
idea 打开项目
启动调度器 xxl-job-admin
配置修改
/xxl-job-admin/src/main/resources/application.properties
修改数据库连接信息
/xxl-job-admin/src/main/resources/logback.xml
修改日志路径
idea里启动
com.xxl.job.admin.XxlJobAdminApplication
http://127.0.0.1:8080/xxl-job-admin/
admin / 123456
启动执行器
xxl-job-executor-sample-springboot
修改配置
/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
xxl.job.executor.logpath=/PATH/work/logs/xxl-job/jobhandler
/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml
日志路径修改
启动 com.xxl.job.executor.XxlJobExecutorApplication
XXL-JOB2.4.1 调度中心集群部署,提升调度系统容灾和可用性
要求和建议:
要求:
DB配置保持一致;
集群机器时钟保持一致(单机集群忽视);
建议:
推荐通过nginx为调度中心集群做负载均衡,分配域名。
调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。
执行器集群部署
执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;
调度中心根据该配置动态发现不同集群的在线执行器列表。
执行器管理
http://127.0.0.1:8080/xxl-job-admin/jobgroup
查看执行机器
http://172.30.77.26:9999/
http://172.30.77.26:9999/
{"code":500,"msg":"invalid request, HttpMethod not support."}
执行器开启两个端口 8081(springboot http 端口) 和 9999 (执行器服务端口)
执行器实际上是一个内嵌的Server,默认端口9999
配置项 xxl.job.executor.port
任务管理
http://127.0.0.1:8080/xxl-job-admin/jobinfo
操作 / 执行一次
手动执行
调度日志查看
http://127.0.0.1:8080/xxl-job-admin/joblog
操作 / 执行日志
修改任务 cron表达式改为
0 * * * * ? *
操作 / 启动
状态 由 STOP 变为 RUNNING
新增任务
往 xxl_job_info 新增记录
任务管理 / 新增
执行器示例 下拉列表从 xxl_job_group 里读取
调度类型 CRON
CRON表达式
运行模式 BEAN
JobHandler 执行器项目 @XxlJob 注解 value值
@XxlJob("commandJobHandler")
路由策略 第一个
调度过期策略
阻塞处理策略
路由策略
第一个 最后一个 轮询 随机 一致性HASH 最不经常使用 最近最久未使用 故障转移 忙碌转移 分片广播
调度过期策略 忽略 立即执行一次
阻塞处理策略 单机串行 丢弃后续调度 覆盖之前调度
避免任务重复执行
调度密集或者耗时任务可能会导致任务阻塞,集群情况下调度组件小概率情况下会重复触发;
可以通过结合 “单机路由策略(如:第一台、一致性哈希)” + “阻塞策略(如:单机串行、丢弃后续调度)” 来规避
一次完整的任务调度通讯流程
1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务,实际上是一台内嵌Server,默认端口9999;
2、“执行器”执行任务逻辑;
3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务
初始化 sql
INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' );
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');
错误实例
从公司回到家 , 任务执行失败 ,
20:26:28.085 logback [xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-281158694] ERROR c.x.job.core.util.XxlJobRemotingUtil - connect timed out
java.net.SocketTimeoutException: connect timed out
ip变了 , 调度器调用执行器 超时
http://172.30.77.26:9999
Not found outbound for proxy:DIRECT
http://127.0.0.1:9999/
{"code":500,"msg":"invalid request, HttpMethod not support."}
调度日志 / 调度备注
任务触发类型:Cron触发
调度机器:172.30.77.26
执行器-注册方式:自动注册
执行器-地址列表:[http://172.30.77.26:9999/]
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
触发调度:
address:http://172.30.77.26:9999/
code:500
msg:xxl-job remoting error(connect timed out), for url : http://172.30.77.26:9999/run
上一篇
下一篇
quartz.properties配置文件详解
java 技术学习面试指南
shardingsphere 简介
少儿体态体能姿势
xxljob2.4.1 表结构
flink-doris-connector 和 flink-cdc-pipeline-connector-doris 的区别