WangHan
2024-09-12 d5855a4926926698b740bc6c7ba489de47adb68b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package tech.powerjob.server.remote.worker.selector;
 
import tech.powerjob.common.enums.DispatchStrategy;
import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.persistence.remote.model.InstanceInfoDO;
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
 
import java.util.List;
 
/**
 * 主节点选择方式
 *
 * @author tjq
 * @since 2024/2/24
 */
public interface TaskTrackerSelector {
 
    /**
     * 支持的策略
     * @return 派发策略
     */
    DispatchStrategy strategy();
 
    /**
     * 选择主节点
     * @param jobInfoDO 任务信息
     * @param instanceInfoDO 任务实例
     * @param availableWorkers 可用 workers
     * @return 主节点 worker
     */
    WorkerInfo select(JobInfoDO jobInfoDO, InstanceInfoDO instanceInfoDO, List<WorkerInfo> availableWorkers);
}