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 availableWorkers); }