Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
71025170
提交
71025170
authored
3月 10, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
执行器"轮训"和"LRU"策略中新增缓存Clear逻辑;
上级
1c5a8415
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
21 行增加
和
0 行删除
+21
-0
ExecutorRouteLRU.java
...m/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
+10
-0
ExecutorRouteRound.java
...xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+11
-0
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
浏览文件 @
71025170
...
@@ -16,10 +16,18 @@ import java.util.concurrent.ConcurrentHashMap;
...
@@ -16,10 +16,18 @@ import java.util.concurrent.ConcurrentHashMap;
public
class
ExecutorRouteLRU
extends
ExecutorRouter
{
public
class
ExecutorRouteLRU
extends
ExecutorRouter
{
private
static
ConcurrentHashMap
<
Integer
,
LinkedHashMap
<
String
,
String
>>
jobLRUMap
=
new
ConcurrentHashMap
<
Integer
,
LinkedHashMap
<
String
,
String
>>();
private
static
ConcurrentHashMap
<
Integer
,
LinkedHashMap
<
String
,
String
>>
jobLRUMap
=
new
ConcurrentHashMap
<
Integer
,
LinkedHashMap
<
String
,
String
>>();
private
static
long
CACHE_VALID_TIME
=
0
;
@Override
@Override
public
String
route
(
int
jobId
,
ArrayList
<
String
>
addressList
)
{
public
String
route
(
int
jobId
,
ArrayList
<
String
>
addressList
)
{
// cache clear
if
(
System
.
currentTimeMillis
()
>
CACHE_VALID_TIME
)
{
jobLRUMap
.
clear
();
CACHE_VALID_TIME
=
System
.
currentTimeMillis
()
+
1000
*
60
*
60
*
24
;
}
// init lru
LinkedHashMap
<
String
,
String
>
lruItem
=
jobLRUMap
.
get
(
jobId
);
LinkedHashMap
<
String
,
String
>
lruItem
=
jobLRUMap
.
get
(
jobId
);
if
(
lruItem
==
null
)
{
if
(
lruItem
==
null
)
{
/**
/**
...
@@ -31,12 +39,14 @@ public class ExecutorRouteLRU extends ExecutorRouter {
...
@@ -31,12 +39,14 @@ public class ExecutorRouteLRU extends ExecutorRouter {
jobLRUMap
.
put
(
jobId
,
lruItem
);
jobLRUMap
.
put
(
jobId
,
lruItem
);
}
}
// put
for
(
String
address:
addressList
)
{
for
(
String
address:
addressList
)
{
if
(!
lruItem
.
containsKey
(
address
))
{
if
(!
lruItem
.
containsKey
(
address
))
{
lruItem
.
put
(
address
,
address
);
lruItem
.
put
(
address
,
address
);
}
}
}
}
// load
String
eldestKey
=
lruItem
.
entrySet
().
iterator
().
next
().
getKey
();
String
eldestKey
=
lruItem
.
entrySet
().
iterator
().
next
().
getKey
();
String
eldestValue
=
lruItem
.
get
(
eldestKey
);
String
eldestValue
=
lruItem
.
get
(
eldestKey
);
return
eldestValue
;
return
eldestValue
;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
浏览文件 @
71025170
...
@@ -11,7 +11,15 @@ import java.util.concurrent.ConcurrentHashMap;
...
@@ -11,7 +11,15 @@ import java.util.concurrent.ConcurrentHashMap;
public
class
ExecutorRouteRound
extends
ExecutorRouter
{
public
class
ExecutorRouteRound
extends
ExecutorRouter
{
private
static
ConcurrentHashMap
<
Integer
,
Integer
>
routeCountEachJob
=
new
ConcurrentHashMap
<
Integer
,
Integer
>();
private
static
ConcurrentHashMap
<
Integer
,
Integer
>
routeCountEachJob
=
new
ConcurrentHashMap
<
Integer
,
Integer
>();
private
static
long
CACHE_VALID_TIME
=
0
;
private
static
int
count
(
int
jobId
)
{
private
static
int
count
(
int
jobId
)
{
// cache clear
if
(
System
.
currentTimeMillis
()
>
CACHE_VALID_TIME
)
{
routeCountEachJob
.
clear
();
CACHE_VALID_TIME
=
System
.
currentTimeMillis
()
+
1000
*
60
*
60
*
24
;
}
// count++
Integer
count
=
routeCountEachJob
.
get
(
jobId
);
Integer
count
=
routeCountEachJob
.
get
(
jobId
);
count
=
(
count
==
null
)?
0
:++
count
;
count
=
(
count
==
null
)?
0
:++
count
;
routeCountEachJob
.
put
(
jobId
,
count
);
routeCountEachJob
.
put
(
jobId
,
count
);
...
@@ -20,6 +28,9 @@ public class ExecutorRouteRound extends ExecutorRouter {
...
@@ -20,6 +28,9 @@ public class ExecutorRouteRound extends ExecutorRouter {
@Override
@Override
public
String
route
(
int
jobId
,
ArrayList
<
String
>
addressList
)
{
public
String
route
(
int
jobId
,
ArrayList
<
String
>
addressList
)
{
return
addressList
.
get
(
count
(
jobId
)%
addressList
.
size
());
return
addressList
.
get
(
count
(
jobId
)%
addressList
.
size
());
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论