feature(web): 增加调度计划显示
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.configuration.entity.schedule;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-06-27
|
||||||
|
*/
|
||||||
|
public class ScheduleStrategy {
|
||||||
|
private String name;
|
||||||
|
private String comment;
|
||||||
|
private String job;
|
||||||
|
private String trigger;
|
||||||
|
private Long lastFireTime;
|
||||||
|
private Long nextFireTime;
|
||||||
|
|
||||||
|
public ScheduleStrategy() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getComment() {
|
||||||
|
return comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJob() {
|
||||||
|
return job;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTrigger() {
|
||||||
|
return trigger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getLastFireTime() {
|
||||||
|
return lastFireTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getNextFireTime() {
|
||||||
|
return nextFireTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ScheduleStrategy{" +
|
||||||
|
"name='" + name + '\'' +
|
||||||
|
", comment='" + comment + '\'' +
|
||||||
|
", job='" + job + '\'' +
|
||||||
|
", trigger='" + trigger + '\'' +
|
||||||
|
", lastFireTime=" + lastFireTime +
|
||||||
|
", nextFireTime=" + nextFireTime +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.forest.service;
|
||||||
|
|
||||||
|
import com.dtflys.forest.annotation.BaseRequest;
|
||||||
|
import com.dtflys.forest.annotation.Get;
|
||||||
|
import com.dtflys.forest.annotation.Query;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.entity.schedule.ScheduleStrategy;
|
||||||
|
import org.eclipse.collections.api.list.ImmutableList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-06-27
|
||||||
|
*/
|
||||||
|
@BaseRequest(baseURL = "http://service-scheduler/schedule")
|
||||||
|
public interface ScheduleService {
|
||||||
|
@Get("/schedule_jobs")
|
||||||
|
ImmutableList<ScheduleStrategy> scheduleJobs();
|
||||||
|
|
||||||
|
@Get("/all")
|
||||||
|
void scheduleAllTable();
|
||||||
|
|
||||||
|
@Get("/all_focus")
|
||||||
|
void scheduleAllFocus();
|
||||||
|
|
||||||
|
@Get("/all_un_scheduled")
|
||||||
|
void scheduleAllUnScheduledTable();
|
||||||
|
|
||||||
|
@Get("/table")
|
||||||
|
void scheduleTable(@Query("flink_job_id") Long flinkJobId, @Query("alias") String alias);
|
||||||
|
|
||||||
|
@Get("/table")
|
||||||
|
void scheduleTableForce(@Query("flink_job_id") Long flinkJobId, @Query("alias") String alias, @Query("force") String forceCluster);
|
||||||
|
|
||||||
|
@Get("/table")
|
||||||
|
void scheduleTableRecommend(@Query("flink_job_id") Long flinkJobId, @Query("alias") String alias, @Query("recommend") String recommendCluster);
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.lanyuanxiaoyao.service.configuration.entity.yarn.YarnApplication;
|
|||||||
import com.lanyuanxiaoyao.service.configuration.entity.yarn.YarnRootQueue;
|
import com.lanyuanxiaoyao.service.configuration.entity.yarn.YarnRootQueue;
|
||||||
import com.lanyuanxiaoyao.service.forest.service.InfoService;
|
import com.lanyuanxiaoyao.service.forest.service.InfoService;
|
||||||
import com.lanyuanxiaoyao.service.forest.service.QueueService;
|
import com.lanyuanxiaoyao.service.forest.service.QueueService;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.ScheduleService;
|
||||||
import com.lanyuanxiaoyao.service.forest.service.YarnService;
|
import com.lanyuanxiaoyao.service.forest.service.YarnService;
|
||||||
import com.lanyuanxiaoyao.service.web.entity.JobIdAndAliasVO;
|
import com.lanyuanxiaoyao.service.web.entity.JobIdAndAliasVO;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -41,12 +42,14 @@ public class OverviewController extends BaseController {
|
|||||||
private final InfoService infoService;
|
private final InfoService infoService;
|
||||||
private final YarnService yarnService;
|
private final YarnService yarnService;
|
||||||
private final QueueService queueService;
|
private final QueueService queueService;
|
||||||
|
private final ScheduleService scheduleService;
|
||||||
|
|
||||||
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
|
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
|
||||||
public OverviewController(InfoService infoService, YarnService yarnService, QueueService queueService) {
|
public OverviewController(InfoService infoService, YarnService yarnService, QueueService queueService, ScheduleService scheduleService) {
|
||||||
this.infoService = infoService;
|
this.infoService = infoService;
|
||||||
this.yarnService = yarnService;
|
this.yarnService = yarnService;
|
||||||
this.queueService = queueService;
|
this.queueService = queueService;
|
||||||
|
this.scheduleService = scheduleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("")
|
@GetMapping("")
|
||||||
@@ -158,4 +161,9 @@ public class OverviewController extends BaseController {
|
|||||||
}
|
}
|
||||||
return responseCrudData(jobIdAndAliases.collect(JobIdAndAliasVO::new));
|
return responseCrudData(jobIdAndAliases.collect(JobIdAndAliasVO::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("schedule_jobs")
|
||||||
|
public AmisResponse scheduleJobs() {
|
||||||
|
return responseCrudData(scheduleService.scheduleJobs());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
@password = cYxg3b4PtWoVD5SjFayWxtnSVsjzRsg4
|
@password = cYxg3b4PtWoVD5SjFayWxtnSVsjzRsg4
|
||||||
@url = http://{{username}}:{{password}}@{{host}}:{{port}}
|
@url = http://{{username}}:{{password}}@{{host}}:{{port}}
|
||||||
@queue-url = {{url}}/hudi_services/queue
|
@queue-url = {{url}}/hudi_services/queue
|
||||||
|
@scheduler-url = {{url}}/hudi_services/service_scheduler
|
||||||
|
|
||||||
### 队列名称
|
### 队列名称
|
||||||
GET {{queue-url}}/queue/names
|
GET {{queue-url}}/queue/names
|
||||||
@@ -42,3 +43,6 @@ GET http://{{username}}:{{password}}@132.122.116.146:18166/info/compaction_metri
|
|||||||
|
|
||||||
### Info
|
### Info
|
||||||
GET http://{{username}}:{{password}}@132.122.116.150:27510/table/list_compaction_metrics?search_flink_job_id=1542097996099055616&search_alias=acct_acct_item_fs
|
GET http://{{username}}:{{password}}@132.122.116.150:27510/table/list_compaction_metrics?search_flink_job_id=1542097996099055616&search_alias=acct_acct_item_fs
|
||||||
|
|
||||||
|
### Query Scheduler
|
||||||
|
GET {{scheduler-url}}/schedule/schedule_jobs
|
||||||
|
|||||||
@@ -292,6 +292,24 @@ function overviewTab() {
|
|||||||
},
|
},
|
||||||
versionDetailDialog('unSchedule.normal', 'unScheduled_normal'),
|
versionDetailDialog('unSchedule.normal', 'unScheduled_normal'),
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{type: 'divider'},
|
||||||
|
{
|
||||||
|
type: 'service',
|
||||||
|
api: '${base}/overview/schedule_jobs',
|
||||||
|
interval: 60000,
|
||||||
|
silentPolling: true,
|
||||||
|
body: [
|
||||||
|
'调度策略',
|
||||||
|
{
|
||||||
|
type: 'each',
|
||||||
|
name: 'items',
|
||||||
|
items: {
|
||||||
|
type: 'tpl',
|
||||||
|
tpl: '<div class="font-mono"><span class="font-bold">${trigger}</span> <span class="text-gray-500">(${job})</span></div>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user