LingxinMeng 2 yıl önce
ebeveyn
işleme
522f8dc18e

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/ProjectScheduler.java

@@ -27,7 +27,7 @@ public class ProjectScheduler {
     /**
      * 调度项目启动
      */
-    @Scheduled(fixedDelay = 60000)
+    @Scheduled(fixedDelay = 5000)
     public void dispatchProject() {
         List<String> projectMessageKeys = projectUtil.getWaitingProjectMessageKeys();
         if (!CollectionUtil.isEmpty(projectMessageKeys)) {

+ 2 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -148,7 +148,7 @@ public class ProjectUtil {
      * @param lastPodName 即将删除的 pod 名称
      */
     @SneakyThrows
-    public void createNextPod(String userId, String projectId, String projectType, String nodeName, String lastPodName) {
+    public void createNextPod(String projectUserId, String projectId, String projectType, String nodeName, String lastPodName) {
         final String isChoiceGpu = getIsChoiceGpuByProjectId(projectId);
         log.info("删除上一个 pod:projectId={},nodeName={},lastPodName={}", projectId, nodeName, lastPodName);
         String cpuOrderString = stringRedisTemplate.opsForValue().get("project:" + projectId + ":pod:" + lastPodName + ":cpu");
@@ -160,7 +160,7 @@ public class ProjectUtil {
             // 如果当前节点没有下一个yaml,则返回一个并行度。
             log.info("节点 " + nodeName + " 已经执行完被分配的项目 " + projectId + " 的所有 pod。");
             incrementOneParallelism(isChoiceGpu, nodeName);
-            releaseLicense(userId, getModelTypeByProjectIdAndProjectType(projectId, projectType), 1);
+            releaseLicense(getClusterUserIdByProjectUserId(projectUserId), getModelTypeByProjectIdAndProjectType(projectId, projectType), 1);
         } else {
             final String yamlPathCacheKey = new ArrayList<>(yamlPathCacheKeySet).get(0);
             final String absolutePath = stringRedisTemplate.opsForValue().get(yamlPathCacheKey);

+ 11 - 11
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/TaskUtil.java

@@ -93,7 +93,7 @@ public class TaskUtil {
      * 加事务的话高并发情况下会死锁
      */
     @SneakyThrows
-    public void isProjectCompleted(PrefixEntity redisPrefix, String userId, String projectId, String projectType, String maxSimulationTime, String taskId, String state, String podName) {
+    public void isProjectCompleted(PrefixEntity redisPrefix, String projectUserId, String projectId, String projectType, String maxSimulationTime, String taskId, String state, String podName) {
         boolean isCompleted;
         String nodeName = projectUtil.getNodeNameOfPod(projectId, podName);
         final String isChoiceGpu = projectUtil.getIsChoiceGpuByProjectId(projectId);
@@ -158,10 +158,10 @@ public class TaskUtil {
                 //如果项目已完成先把 pod 删除,并归还并行度
                 KubernetesUtil.deletePod2(apiClient, kubernetesConfiguration.getNamespace(), podName);
                 projectUtil.incrementOneParallelism(isChoiceGpu, nodeName);
-                projectUtil.releaseLicense(userId, projectUtil.getModelTypeByProjectIdAndProjectType(projectId, projectType), 1);
+                projectUtil.releaseLicense(projectUtil.getClusterUserIdByProjectUserId(projectUserId), projectUtil.getModelTypeByProjectIdAndProjectType(projectId, projectType), 1);
             } else {
                 log.info("项目 " + projectId + " 还未运行完成。");
-                projectUtil.createNextPod(userId, projectId, projectType, nodeName, podName);
+                projectUtil.createNextPod(projectUserId, projectId, projectType, nodeName, podName);
             }
             RedisUtil.deleteByPrefix(stringRedisTemplate, redisPrefix.getTaskMessageKey());
             RedisUtil.deleteByPrefix(stringRedisTemplate, redisPrefix.getTaskPodKey());
@@ -172,7 +172,7 @@ public class TaskUtil {
             if (isCompleted) {
                 customRedisClient.tryLock(lock2, 10 * 60L);
                 log.info("项目 {} 开始打分。", projectId);
-                score(redisPrefix.getProjectRunningKey(), userId, projectId, projectType);
+                score(redisPrefix.getProjectRunningKey(), projectUserId, projectId, projectType);
                 log.info("项目 {} 计算评价等级。", projectId);
                 evaluationLevel(projectId);
                 log.info("项目 {} 开始释放资源。", projectId);
@@ -186,10 +186,10 @@ public class TaskUtil {
 
 
     /**
-     * @param userId 项目创建用户的 id
+     * @param projectUserId 项目创建用户的 id
      */
     @SneakyThrows
-    public void score(String projectRunningKey, String userId, String projectId, String projectType) {
+    public void score(String projectRunningKey, String projectUserId, String projectId, String projectType) {
         stringRedisTemplate.delete(projectRunningKey);
         // -------------------------------- 打分 --------------------------------
         ProjectEntity projectEntity = null;
@@ -292,7 +292,7 @@ public class TaskUtil {
                         taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
                         taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
                         taskOfLeaf.setScoreExplain(score.getScore_description());
-                        taskOfLeaf.setModifyUserId(userId);
+                        taskOfLeaf.setModifyUserId(projectUserId);
                         taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
                         scoreExplain = score.getScore_description();
                         taskOfLeaf.setRunState(DictConstants.TASK_COMPLETED);
@@ -350,9 +350,9 @@ public class TaskUtil {
             leafIndexTemplate.setTempScore(leafIndexScore);
 
             LeafIndexEntity leafIndex = LeafIndexEntity.builder().id(StringUtil.getRandomUUID()).pId(projectId).target(leafIndexTemplate.getIndexId()).errorSceneNum(errorSceneNumber).notScoredSceneNum(notScoredSceneNumber).notStandardSceneNum(notStandardSceneNumber).standardSceneNum(standardSceneNumber).score(leafIndexScore).indexId(indexId).parentId(parentId).rootId(rootId).weight(weight).scoreExplain(scoreExplain).packageLevel(packageLevel).build();
-            leafIndex.setCreateUserId(userId);
+            leafIndex.setCreateUserId(projectUserId);
             leafIndex.setCreateTime(TimeUtil.getNowForMysql());
-            leafIndex.setModifyUserId(userId);
+            leafIndex.setModifyUserId(projectUserId);
             leafIndex.setModifyTime(TimeUtil.getNowForMysql());
             leafIndex.setIsDeleted("0");
 
@@ -434,9 +434,9 @@ public class TaskUtil {
         log.info("收到任务 " + taskId + " 的心跳。");
         TaskEntity taskEntity = taskMapper.selectById(taskId);
         String projectId = taskEntity.getPId();
-        String userId = taskEntity.getCreateUserId();
+        String projectUserId = taskEntity.getCreateUserId();
         // 刷新 redis 心跳时间
-        PrefixEntity redisPrefix = projectUtil.getRedisPrefixByUserIdAndProjectIdAndTaskId(userId, projectId, taskId);
+        PrefixEntity redisPrefix = projectUtil.getRedisPrefixByUserIdAndProjectIdAndTaskId(projectUserId, projectId, taskId);
         if (RedisUtil.getStringByKey(stringRedisTemplate, redisPrefix.getProjectRunningKey()) != null) {
             stringRedisTemplate.opsForValue().set(redisPrefix.getTaskTickKey(), TimeUtil.getNowString());
         }