Commit ee1f4e7a by xueli.xue

路由策越优化:循环和LFU路由策略计数器自增无上限问题和首次路由压力集中在首台机器的问题修复;

parent 66e6dd93
...@@ -23,6 +23,7 @@ XXL-JOB銝銝芾蝠漣遙靚漲獢嚗敹挽霈∠ ...@@ -23,6 +23,7 @@ XXL-JOB銝銝芾蝠漣遙靚漲獢嚗敹挽霈∠
- 16、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址; - 16、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
- 17、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移; - 17、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
- 18、Rolling日志:支持以Rolling方式实时查看执行器输出的日志信息,实时监控任务进度; - 18、Rolling日志:支持以Rolling方式实时查看执行器输出的日志信息,实时监控任务进度;
- 19、运行报表:支持实时查看系统信息数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
#### 1.3 发展 #### 1.3 发展
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
...@@ -770,9 +771,11 @@ Tips: (V1.3.x)歇蝏elease蝔喳, 餈蝏湔畾 ...@@ -770,9 +771,11 @@ Tips: (V1.3.x)歇蝏elease蝔喳, 餈蝏湔畾
- 4、权限增强校验,采用动态登录TOKEN(推荐接入内部SSO); - 4、权限增强校验,采用动态登录TOKEN(推荐接入内部SSO);
- 5、数据库配置优化,解决乱码问题; - 5、数据库配置优化,解决乱码问题;
#### 6.12 版本 V1.6.2 特性(Coding) #### 6.12 版本 V1.6.2 特性
- 1、任务报表:总任务数、总调度数、调度成功比例; - 1、运行报表:支持实时查看系统信息数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
- 2、JobHandler支持自定义回调结果; - 2、JobHandler支持自定义回调结果;
- 3、资源路径包含空格或中文时资源文件无法加载时,无法准确查看异常信息的问题处理。
- 4、路由策越优化:循环和LFU路由策略计数器自增无上限问题和首次路由压力集中在首台机器的问题修复;
#### TODO LIST #### TODO LIST
- 1、支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现; - 1、支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现;
......
...@@ -33,8 +33,8 @@ public class ExecutorRouteLFU extends ExecutorRouter { ...@@ -33,8 +33,8 @@ public class ExecutorRouteLFU extends ExecutorRouter {
jobLfuMap.put(jobId, lfuItemMap); jobLfuMap.put(jobId, lfuItemMap);
} }
for (String address: addressList) { for (String address: addressList) {
if (!lfuItemMap.containsKey(address)) { if (!lfuItemMap.containsKey(address) || lfuItemMap.get(address) >1000000 ) {
lfuItemMap.put(address, 0); lfuItemMap.put(address, new Random().nextInt(addressList.size())); // 初始化时主动Random一次,缓解首次压力
} }
} }
......
...@@ -3,6 +3,7 @@ package com.xxl.job.admin.core.route.strategy; ...@@ -3,6 +3,7 @@ package com.xxl.job.admin.core.route.strategy;
import com.xxl.job.admin.core.route.ExecutorRouter; import com.xxl.job.admin.core.route.ExecutorRouter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** /**
...@@ -21,7 +22,7 @@ public class ExecutorRouteRound extends ExecutorRouter { ...@@ -21,7 +22,7 @@ public class ExecutorRouteRound extends ExecutorRouter {
// count++ // count++
Integer count = routeCountEachJob.get(jobId); Integer count = routeCountEachJob.get(jobId);
count = (count==null)?0:++count; count = (count==null || count>1000000)?(new Random().nextInt(100)):++count; // 初始化时主动Random一次,缓解首次压力
routeCountEachJob.put(jobId, count); routeCountEachJob.put(jobId, count);
return count; return count;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment