Parcourir la source

Merge remote-tracking branch 'origin/master'

LingxinMeng il y a 1 an
Parent
commit
a6528173f2

+ 10 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/app/service/ProjectApplicationService.java

@@ -151,6 +151,7 @@ public class ProjectApplicationService {
             log.info("项目 " + projectId + " 开始算法导入。");
             String algorithmDockerImage = handleAlgorithm(projectId, algorithmId);
             log.info("项目 " + projectId + " 算法已导入:" + algorithmDockerImage);
+            customRedisClient.set("project:" + projectId + ":docker-image", algorithmDockerImage);
             // -------------------------------- 3 查询模型 --------------------------------
             log.debug("项目 " + projectId + " 开始查询模型。");
             //1 根据车辆配置id vehicleConfigId, 获取 模型信息和传感器信息
@@ -503,7 +504,8 @@ public class ProjectApplicationService {
         log.info("项目 " + projectId + " 运行在:" + nodeMap);
         stringRedisTemplate.opsForValue().set(projectRunningKey, JsonUtil.beanToJson(projectMessageModel));
         //* -------------------------------- 3 根据算法id查询算法名称 --------------------------------
-        String algorithmDockerImage = projectDomainService.getAlgorithmDockerImageByProjectTypeAndProjectId(projectType, projectId);
+//        String algorithmDockerImage = projectDomainService.getAlgorithmDockerImageByProjectTypeAndProjectId(projectType, projectId);
+        String algorithmDockerImage = projectDomainService.getAlgorithmDockerImageByProjectId(projectId);
         // -------------------------------- 4 发送任务消息 --------------------------------
         List<NodeEntity> nodeListToCount = projectDomainService.getNodeListToCount(nodeMap);
         int messageNumber = 0;
@@ -767,6 +769,7 @@ public class ProjectApplicationService {
             }
         }
         log.info("项目 " + projectId + " 使用的算法镜像为:" + dockerImage);
+
         return dockerImage;
     }
 
@@ -823,7 +826,12 @@ public class ProjectApplicationService {
             Set<String> nodeOfPodKeySet = RedisUtil.getKeySetByPrefix(stringRedisTemplate, "project:" + projectId + ":pod:" + "project-" + projectId);
             Set<String> podNameSet = nodeOfPodKeySet.stream().map(key -> key.split(":")[3]).collect(Collectors.toSet());
             for (String podName : podNameSet) {
-                String nodeName = projectDomainService.getNodeNameOfPod(projectId, podName);
+                String nodeName;
+                try {
+                    nodeName = projectDomainService.getNodeNameOfPod(projectId, podName);
+                } catch (Exception e) {
+                    break;
+                }
                 // 删除 pod
                 projectDomainService.deletePod(podName);
                 // 节点并行度加一

+ 13 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/domain/service/ProjectDomainService.java

@@ -260,6 +260,15 @@ public class ProjectDomainService {
         return s;
     }
 
+    public String getNodeNameOfPod2(String projectId, String podName) {
+        String key = "project:" + projectId + ":pod:" + podName + ":node";
+        final String s = stringRedisTemplate.opsForValue().get(key);
+        if (StringUtil.isEmpty(s)) {
+            throw new RuntimeException("无法获取 pod 运行所在节点:" + key);
+        }
+        return s;
+    }
+
 
     /**
      * 更改一个名字继续启动
@@ -984,6 +993,10 @@ public class ProjectDomainService {
     }
 
 
+    public String getAlgorithmDockerImageByProjectId(String projectId) {
+        return customRedisClient.get("project:" + projectId + ":docker-image");
+    }
+
     public String getAlgorithmDockerImageByProjectTypeAndProjectId(String projectType, String projectId) {
         String algorithmType;
         String algorithmId;