Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
b7fa39bd
提交
b7fa39bd
authored
10月 03, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
执行器栏目,支持查看在线额执行器列表
上级
965a0aed
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
22 行增加
和
14 行删除
+22
-14
README.md
README.md
+14
-13
JobGroupController.java
...java/com/xxl/job/admin/controller/JobGroupController.java
+6
-1
jobgroup.index.ftl
.../main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl
+2
-0
没有找到文件。
README.md
浏览文件 @
b7fa39bd
...
@@ -8,9 +8,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -8,9 +8,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
-
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
-
2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
-
2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
-
3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
-
3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
-
4、任务HA:任务
支持多地址配置
,可保证任务执行HA;
-
4、任务HA:任务
"执行器"支持集群部署
,可保证任务执行HA;
-
5、任务Failover:
多地址配置
时,调度失败时将会平滑切换执行器进行Failover;
-
5、任务Failover:
执行器集群部署
时,调度失败时将会平滑切换执行器进行Failover;
-
6、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性;
-
6、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性
, 一次任务调度只会触发一次执行
;
-
7、自定义任务参数:支持在线配置调度任务入参,即时生效;
-
7、自定义任务参数:支持在线配置调度任务入参,即时生效;
-
8、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
-
8、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
-
9、执行日志:支持在线查看调度结果,并且查看完整的执行日志;
-
9、执行日志:支持在线查看调度结果,并且查看完整的执行日志;
...
@@ -20,6 +20,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -20,6 +20,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
13、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
-
13、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
-
14、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
-
14、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
-
15、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
-
15、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
-
16、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。
#### 1.3 发展
#### 1.3 发展
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
...
@@ -652,12 +653,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -652,12 +653,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
5、因catch异常,导致任务不可终止的问题,给出解决方案, 见文档;
-
5、因catch异常,导致任务不可终止的问题,给出解决方案, 见文档;
#### 6.9 版本 V1.5.0 特性
#### 6.9 版本 V1.5.0 特性
-
1、调度中心回调逻辑优化, 过滤非法请求;
-
1、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。
-
2、公共依赖中新增DBGlueLoader,基于原生jdbc实现GLUE源码的加载器,减少第三方依赖(mybatis,spring-orm等);
-
2、"执行器" 新增参数 "AppName" : 是每个执行器集群的唯一标示AppName, 并周期性以AppName为对象进行自动注册。
-
3、精简和优化执行器测配置(针对GLUE任务),降低上手难度
-
3、调度中心新增栏目 "执行器管理" : 管理在线的执行器, 通过属性AppName自动发现注册的执行器。只有被管理的执行器才允许被使用;
-
4、(调度中心, 注册发现线程, 5min清空一次过期appName, 懒加载查询appName注册, 放入缓存, 存活10s, 30s内认为有效, 注册间隔15s)
-
4、"任务组"属性改为"执行器": 每个任务需要绑定指定的执行器, 调度地址通过绑定的执行器获取;
-
5、(DB字段优化)
-
5、抛弃"任务机器"属性: 通过任务绑定的执行器, 自动发现注册的远程执行器地址并触发调度请求。
-
6、(调度中心, 也自动注册, 调度时, 传输调度中心地址列表)
-
6、"公共依赖"中新增DBGlueLoader,基于原生jdbc实现GLUE源码的加载器,减少第三方依赖(mybatis,spring-orm等);精简和优化执行器测配置(针对GLUE任务),降低上手难度;
-
7、表结构调整,底层重构优化;
-
8、"调度中心"自动注册和发现,failover: 调度中心周期性自动注册, 任务回调时可以感知在线的所有调度中心地址, 通过failover的方式进行任务回调,避免回调单点风险。
#### 规划中
#### 规划中
-
1、任务执行规则自定义:假如前一个任务正在执行,后续调度执行规则支持自定义;
-
1、任务执行规则自定义:假如前一个任务正在执行,后续调度执行规则支持自定义;
...
@@ -665,10 +668,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -665,10 +668,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
并行:后续调度并行执行;
并行:后续调度并行执行;
Pass:后续调度被Pass;
Pass:后续调度被Pass;
-
2、兼容oracle;
-
2、兼容oracle;
-
3、执行器JobHandler自动注册发现: 执行器中JobHandler自动上报到注册中心,调度中心自动发现注册中心的JobHandler并触发对应的执行器执行任务逻辑; 一方面省略了人工指定器地址的流程,另一方面可以方便的进行执行器机器扩充;(但是,XXL-JOB的定位是轻量级作业调度系统,目前而言使用非常方便,担心引入注册机器会增加运维和学习成本,权衡得失中...)
-
3、后续优化:在线修改密码,
-
4、后续优化:在线维护分组,在线修改密码,回调多地址+重试,
-
4、支持脚本JOB, 即shell/python/php等, glue实现;
-
5、支持脚本JOB, 即shell/python/php等, glue实现;
-
6、通过数据库实现JobHandler自动发现: 每个执行器指定appname, 执行器15注册一次粒度为appname和ip, 调度中心15秒加载一次注册表, 超时记录则心跳检测, 调度未配置执行地址,则使用注册表;
## 七、其他
## 七、其他
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
浏览文件 @
b7fa39bd
...
@@ -26,12 +26,16 @@ public class JobGroupController {
...
@@ -26,12 +26,16 @@ public class JobGroupController {
@Resource
@Resource
public
IXxlJobInfoDao
xxlJobInfoDao
;
public
IXxlJobInfoDao
xxlJobInfoDao
;
@Resource
@Resource
public
IXxlJobGroupDao
xxlJobGroupDao
;
public
IXxlJobGroupDao
xxlJobGroupDao
;
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
)
{
public
String
index
(
Model
model
)
{
// job admin
List
<
String
>
adminAddressList
=
JobRegistryHelper
.
discover
(
RegistHelper
.
RegistType
.
ADMIN
.
name
(),
RegistHelper
.
RegistType
.
ADMIN
.
name
());
// job group (executor)
List
<
XxlJobGroup
>
list
=
xxlJobGroupDao
.
findAll
();
List
<
XxlJobGroup
>
list
=
xxlJobGroupDao
.
findAll
();
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
...
@@ -41,6 +45,7 @@ public class JobGroupController {
...
@@ -41,6 +45,7 @@ public class JobGroupController {
}
}
}
}
model
.
addAttribute
(
"adminAddressList"
,
adminAddressList
);
model
.
addAttribute
(
"list"
,
list
);
model
.
addAttribute
(
"list"
,
list
);
return
"jobgroup/jobgroup.index"
;
return
"jobgroup/jobgroup.index"
;
}
}
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl
浏览文件 @
b7fa39bd
...
@@ -32,6 +32,8 @@
...
@@ -32,6 +32,8 @@
<div
class=
"box-header"
>
<div
class=
"box-header"
>
<h3
class=
"box-title"
>
执行器列表
</h3>
<h3
class=
"box-title"
>
执行器列表
</h3>
<button
class=
"btn btn-info btn-xs pull-left2 add"
>
+新增执行器
</button>
<button
class=
"btn btn-info btn-xs pull-left2 add"
>
+新增执行器
</button>
调度中心OnLine:
<
#
if
adminAddressList
?
exists
><
#
list
adminAddressList
as
item
><span
class=
"badge bg-green"
>
${item}
</span></
#
list></
#
if>
</div>
</div>
<div
class=
"box-body"
>
<div
class=
"box-body"
>
<table
id=
"joblog_list"
class=
"table table-bordered table-striped display"
width=
"100%"
>
<table
id=
"joblog_list"
class=
"table table-bordered table-striped display"
width=
"100%"
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论