Ver código fonte

GitUtil 修改

root 2 anos atrás
pai
commit
85b8c76fe2

+ 45 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/ClusterScheduler.java

@@ -0,0 +1,45 @@
+package com.css.simulation.resource.scheduler.scheduler;
+
+import api.common.util.CollectionUtil;
+import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
+import com.css.simulation.resource.scheduler.pojo.to.KubernetesNodeTO;
+import com.css.simulation.resource.scheduler.util.KubernetesUtil;
+import io.kubernetes.client.openapi.ApiClient;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Component
+@Slf4j
+public class ClusterScheduler {
+
+
+    @Resource
+    KubernetesConfiguration kubernetesConfiguration;
+    @Resource
+    ApiClient apiClient;
+    @Resource
+    StringRedisTemplate stringRedisTemplate;
+
+
+    /**
+     * 闲时重置所有并行度
+     */
+    @Scheduled(fixedDelay = 2 * 60 * 1000)
+    @SneakyThrows
+    public void initNodeParallelism() {
+        List<KubernetesNodeTO> initialNodeList = kubernetesConfiguration.getNodeList(); // 预设并行度的节点列表
+        List<String> podNameList = KubernetesUtil.getPod(apiClient, kubernetesConfiguration.getNamespace());
+        if (CollectionUtil.isEmpty(podNameList)) {
+            for (KubernetesNodeTO kubernetesNodeTO : initialNodeList) {
+                stringRedisTemplate.opsForValue().set("node:" + kubernetesNodeTO.getName() + ":parallelism", kubernetesNodeTO.getMaxParallelism() + "");
+                log.info("ClusterScheduler--initNodeParallelism 重置节点并行度为:" + initialNodeList);
+            }
+        }
+    }
+}