瀏覽代碼

执行器路由逻辑优化

xuxueli 8 年之前
父節點
當前提交
b607bcde28

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java 查看文件

1
 package com.xxl.job.admin.core.route;
1
 package com.xxl.job.admin.core.route;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.core.biz.ExecutorBiz;
3
 import com.xxl.job.core.biz.ExecutorBiz;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
21
      *
20
      *
22
      * @param triggerParam
21
      * @param triggerParam
23
      * @param addressList
22
      * @param addressList
24
-     * @return
23
+     * @return  ReturnT.content: final address
25
      */
24
      */
26
-    public abstract ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog);
25
+    public abstract ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList);
27
 
26
 
28
     /**
27
     /**
29
      * run executor
28
      * run executor

+ 5 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.ExecutorBiz;
4
 import com.xxl.job.core.biz.ExecutorBiz;
6
 import com.xxl.job.core.biz.model.ReturnT;
5
 import com.xxl.job.core.biz.model.ReturnT;
19
     }
18
     }
20
 
19
 
21
     @Override
20
     @Override
22
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
21
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
23
 
22
 
24
         StringBuffer idleBeatResultSB = new StringBuffer();
23
         StringBuffer idleBeatResultSB = new StringBuffer();
25
         for (String address : addressList) {
24
         for (String address : addressList) {
40
 
39
 
41
             // beat success
40
             // beat success
42
             if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
41
             if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
43
-                jobLog.setExecutorAddress(address);
44
 
42
 
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
43
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
46
                 idleBeatResultSB.append("<br><br>").append(runResult.getMsg());
44
                 idleBeatResultSB.append("<br><br>").append(runResult.getMsg());
47
 
45
 
48
-                return new ReturnT<String>(runResult.getCode(), idleBeatResultSB.toString());
46
+                // result
47
+                runResult.setMsg(idleBeatResultSB.toString());
48
+                runResult.setContent(address);
49
+                return runResult;
49
             }
50
             }
50
         }
51
         }
51
 
52
 

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
78
     }
77
     }
79
 
78
 
80
     @Override
79
     @Override
81
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
80
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
82
         // address
81
         // address
83
         String address = route(triggerParam.getJobId(), addressList);
82
         String address = route(triggerParam.getJobId(), addressList);
84
-        jobLog.setExecutorAddress(address);
85
 
83
 
86
         // run executor
84
         // run executor
87
         ReturnT<String> runResult = runExecutor(triggerParam, address);
85
         ReturnT<String> runResult = runExecutor(triggerParam, address);
86
+        runResult.setContent(address);
88
         return runResult;
87
         return runResult;
89
     }
88
     }
90
 }
89
 }

+ 5 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.ExecutorBiz;
4
 import com.xxl.job.core.biz.ExecutorBiz;
6
 import com.xxl.job.core.biz.model.ReturnT;
5
 import com.xxl.job.core.biz.model.ReturnT;
19
     }
18
     }
20
 
19
 
21
     @Override
20
     @Override
22
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
21
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
23
 
22
 
24
         StringBuffer beatResultSB = new StringBuffer();
23
         StringBuffer beatResultSB = new StringBuffer();
25
         for (String address : addressList) {
24
         for (String address : addressList) {
40
 
39
 
41
             // beat success
40
             // beat success
42
             if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
41
             if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
43
-                jobLog.setExecutorAddress(address);
44
 
42
 
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
43
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
46
                 beatResultSB.append("<br><br>").append(runResult.getMsg());
44
                 beatResultSB.append("<br><br>").append(runResult.getMsg());
47
 
45
 
48
-                return new ReturnT<String>(runResult.getCode(), beatResultSB.toString());
46
+                // result
47
+                runResult.setMsg(beatResultSB.toString());
48
+                runResult.setContent(address);
49
+                return runResult;
49
             }
50
             }
50
         }
51
         }
51
         return new ReturnT<String>(ReturnT.FAIL_CODE, beatResultSB.toString());
52
         return new ReturnT<String>(ReturnT.FAIL_CODE, beatResultSB.toString());

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java 查看文件

17
     }
17
     }
18
 
18
 
19
     @Override
19
     @Override
20
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
20
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
21
 
21
 
22
         // address
22
         // address
23
         String address = route(triggerParam.getJobId(), addressList);
23
         String address = route(triggerParam.getJobId(), addressList);
24
-        jobLog.setExecutorAddress(address);
25
 
24
 
26
         // run executor
25
         // run executor
27
         ReturnT<String> runResult = runExecutor(triggerParam, address);
26
         ReturnT<String> runResult = runExecutor(triggerParam, address);
27
+        runResult.setContent(address);
28
         return runResult;
28
         return runResult;
29
     }
29
     }
30
 }
30
 }

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
57
     }
56
     }
58
 
57
 
59
     @Override
58
     @Override
60
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
59
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
61
 
60
 
62
         // address
61
         // address
63
         String address = route(triggerParam.getJobId(), addressList);
62
         String address = route(triggerParam.getJobId(), addressList);
64
-        jobLog.setExecutorAddress(address);
65
 
63
 
66
         // run executor
64
         // run executor
67
         ReturnT<String> runResult = runExecutor(triggerParam, address);
65
         ReturnT<String> runResult = runExecutor(triggerParam, address);
66
+        runResult.setContent(address);
68
         return runResult;
67
         return runResult;
69
     }
68
     }
70
 
69
 

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
56
 
55
 
57
 
56
 
58
     @Override
57
     @Override
59
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
58
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
60
 
59
 
61
         // address
60
         // address
62
         String address = route(triggerParam.getJobId(), addressList);
61
         String address = route(triggerParam.getJobId(), addressList);
63
-        jobLog.setExecutorAddress(address);
64
 
62
 
65
         // run executor
63
         // run executor
66
         ReturnT<String> runResult = runExecutor(triggerParam, address);
64
         ReturnT<String> runResult = runExecutor(triggerParam, address);
65
+        runResult.setContent(address);
67
         return runResult;
66
         return runResult;
68
     }
67
     }
69
 
68
 

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java 查看文件

17
     }
17
     }
18
 
18
 
19
     @Override
19
     @Override
20
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
20
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
21
         // address
21
         // address
22
         String address = route(triggerParam.getJobId(), addressList);
22
         String address = route(triggerParam.getJobId(), addressList);
23
-        jobLog.setExecutorAddress(address);
24
 
23
 
25
         // run executor
24
         // run executor
26
         ReturnT<String> runResult = runExecutor(triggerParam, address);
25
         ReturnT<String> runResult = runExecutor(triggerParam, address);
26
+        runResult.setContent(address);
27
         return runResult;
27
         return runResult;
28
     }
28
     }
29
 }
29
 }

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
21
     }
20
     }
22
 
21
 
23
     @Override
22
     @Override
24
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
23
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
25
         // address
24
         // address
26
         String address = route(triggerParam.getJobId(), addressList);
25
         String address = route(triggerParam.getJobId(), addressList);
27
-        jobLog.setExecutorAddress(address);
28
 
26
 
29
         // run executor
27
         // run executor
30
         ReturnT<String> runResult = runExecutor(triggerParam, address);
28
         ReturnT<String> runResult = runExecutor(triggerParam, address);
29
+        runResult.setContent(address);
31
         return runResult;
30
         return runResult;
32
     }
31
     }
33
 
32
 

+ 2 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java 查看文件

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
3
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.core.biz.model.ReturnT;
4
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.TriggerParam;
5
 import com.xxl.job.core.biz.model.TriggerParam;
36
 
35
 
37
 
36
 
38
     @Override
37
     @Override
39
-    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList, XxlJobLog jobLog) {
38
+    public ReturnT<String> routeRun(TriggerParam triggerParam, ArrayList<String> addressList) {
40
 
39
 
41
         // address
40
         // address
42
         String address = route(triggerParam.getJobId(), addressList);
41
         String address = route(triggerParam.getJobId(), addressList);
43
-        jobLog.setExecutorAddress(address);
44
 
42
 
45
         // run executor
43
         // run executor
46
         ReturnT<String> runResult = runExecutor(triggerParam, address);
44
         ReturnT<String> runResult = runExecutor(triggerParam, address);
45
+        runResult.setContent(address);
47
         return runResult;
46
         return runResult;
48
     }
47
     }
49
 }
48
 }

+ 3 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java 查看文件

86
             triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
86
             triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
87
 
87
 
88
             // 4.2、trigger-run (route run / trigger remote executor)
88
             // 4.2、trigger-run (route run / trigger remote executor)
89
-            triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
89
+            triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList);
90
             triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
90
             triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
91
 
91
 
92
             // 4.3、trigger (fail retry)
92
             // 4.3、trigger (fail retry)
93
             if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_RETRY) {
93
             if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_RETRY) {
94
-                triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
94
+                triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList);
95
                 triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
95
                 triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
96
             }
96
             }
97
         }
97
         }
98
 
98
 
99
         // 5、save trigger-info
99
         // 5、save trigger-info
100
+        jobLog.setExecutorAddress(triggerResult.getContent());
100
         jobLog.setTriggerCode(triggerResult.getCode());
101
         jobLog.setTriggerCode(triggerResult.getCode());
101
         jobLog.setTriggerMsg(triggerMsgSb.toString());
102
         jobLog.setTriggerMsg(triggerMsgSb.toString());
102
         XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
103
         XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);

+ 1 - 1
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js 查看文件

110
                             }
110
                             }
111
 
111
 
112
                             var temp = '';
112
                             var temp = '';
113
-                            temp += '执行器地址:' + row.executorAddress;
113
+                            temp += '执行器地址:' + (row.executorAddress?row.executorAddress:'');
114
                             temp += '<br>运行模式:' + glueTypeTitle;
114
                             temp += '<br>运行模式:' + glueTypeTitle;
115
                             temp += '<br>任务参数:' + row.executorParam;
115
                             temp += '<br>任务参数:' + row.executorParam;
116
 
116