Bladeren bron

执行器支持HA,同时支持Failover

xueli.xue 9 jaren geleden
bovenliggende
commit
2e2ec18f41
2 gewijzigde bestanden met toevoegingen van 18 en 8 verwijderingen
  1. 9 8
      README.md
  2. 9 0
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java

+ 9 - 8
README.md Bestand weergeven

21
 - 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
21
 - 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
22
 - 2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
22
 - 2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
23
 - 3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
23
 - 3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
24
-- 4、任务HA:任务支持多地址配置,可保证任务HA(Failover);
25
-- 5、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性;
26
-- 6、自定义任务参数:支持在线配置调度任务入参,即时生效;
27
-- 7、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
28
-- 8、执行日志:支持在线查看调度结果,并且查看完整的执行日志;
29
-- 9、邮件报警:任务失败时支持邮件报警,同时可自定义失败次数阀值;
30
-- 10、支持登录验证;
31
-- 11、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。
24
+- 4、任务HA:任务支持多地址配置,可保证任务执行HA;
25
+- 5、任务Failover:多地址配置时,调度失败时将会平滑切换执行器进行Failover;
26
+- 6、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性;
27
+- 7、自定义任务参数:支持在线配置调度任务入参,即时生效;
28
+- 8、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
29
+- 9、执行日志:支持在线查看调度结果,并且查看完整的执行日志;
30
+- 10、邮件报警:任务失败时支持邮件报警,同时可自定义失败次数阀值;
31
+- 11、支持登录验证;
32
+- 12、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。
32
 
33
 
33
 #### 1.3 发展
34
 #### 1.3 发展
34
 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
35
 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java Bestand weergeven

1
 package com.xxl.job.admin.core.jobbean;
1
 package com.xxl.job.admin.core.jobbean;
2
 
2
 
3
 import java.text.MessageFormat;
3
 import java.text.MessageFormat;
4
+import java.util.Arrays;
5
+import java.util.Collections;
4
 import java.util.Date;
6
 import java.util.Date;
5
 import java.util.HashMap;
7
 import java.util.HashMap;
8
+import java.util.List;
6
 
9
 
7
 import org.apache.commons.lang.StringUtils;
10
 import org.apache.commons.lang.StringUtils;
8
 import org.quartz.JobExecutionContext;
11
 import org.quartz.JobExecutionContext;
88
 	 */
91
 	 */
89
 	public RemoteCallBack failoverTrigger(String handler_address, HashMap<String, String> handler_params, XxlJobLog jobLog){
92
 	public RemoteCallBack failoverTrigger(String handler_address, HashMap<String, String> handler_params, XxlJobLog jobLog){
90
 		if (handler_address.split(",").length > 1) {
93
 		if (handler_address.split(",").length > 1) {
94
+			
95
+			// for ha
96
+			List<String> addressList = Arrays.asList(handler_address.split(","));
97
+			Collections.shuffle(addressList);
98
+			
99
+			// for failover
91
 			String failoverMessage = "";
100
 			String failoverMessage = "";
92
 			for (String address : handler_address.split(",")) {
101
 			for (String address : handler_address.split(",")) {
93
 				if (StringUtils.isNotBlank(address)) {
102
 				if (StringUtils.isNotBlank(address)) {