执行器栏目,支持查看在线额执行器列表

This commit is contained in:
xueli.xue 2016-10-03 19:20:51 +08:00
parent 965a0aedd6
commit b7fa39bd51
3 changed files with 22 additions and 14 deletions

View File

@ -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是一个轻量级分布式任务调度框架其核心设计目标是
- 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至稳定版本, 进入维护阶段
- 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至稳定版本, 进入维护阶段
并行:后续调度并行执行; 并行:后续调度并行执行;
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秒加载一次注册表, 超时记录则心跳检测, 调度未配置执行地址,则使用注册表;
## 七、其他 ## 七、其他

View File

@ -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 {
} }
} }
model.addAttribute("adminAddressList", adminAddressList);
model.addAttribute("list", list); model.addAttribute("list", list);
return "jobgroup/jobgroup.index"; return "jobgroup/jobgroup.index";
} }

View File

@ -32,6 +32,8 @@
<div class="box-header"> <div class="box-header">
<h3 class="box-title">执行器列表</h3>&nbsp;&nbsp; <h3 class="box-title">执行器列表</h3>&nbsp;&nbsp;
<button class="btn btn-info btn-xs pull-left2 add" >+新增执行器</button> <button class="btn btn-info btn-xs pull-left2 add" >+新增执行器</button>
&nbsp;&nbsp;&nbsp;&nbsp;
调度中心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%" >