package tech.powerjob.server.remote.worker.selector.impl; import com.google.common.collect.Lists; import org.springframework.stereotype.Component; 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 tech.powerjob.server.remote.worker.selector.TaskTrackerSelector; import java.util.List; /** * HealthFirst * * @author (疑似)新冠帕鲁 * @since 2024/2/24 */ @Component public class HealthFirstTaskTrackerSelector implements TaskTrackerSelector { @Override public DispatchStrategy strategy() { return DispatchStrategy.HEALTH_FIRST; } @Override public WorkerInfo select(JobInfoDO jobInfoDO, InstanceInfoDO instanceInfoDO, List availableWorkers) { List workers = Lists.newArrayList(availableWorkers); workers.sort((o1, o2) -> o2.getSystemMetrics().calculateScore() - o1.getSystemMetrics().calculateScore()); return workers.get(0); } }