|
@@ -7,6 +7,7 @@ import api.common.pojo.param.project.MultiCreateYamlRet;
|
|
import api.common.pojo.param.project.MultiSimulationProjectKafkaParam;
|
|
import api.common.pojo.param.project.MultiSimulationProjectKafkaParam;
|
|
import api.common.pojo.param.project.MultiSimulationProjectParam;
|
|
import api.common.pojo.param.project.MultiSimulationProjectParam;
|
|
import api.common.pojo.param.project.MultiSimulationSceneKafkaParam;
|
|
import api.common.pojo.param.project.MultiSimulationSceneKafkaParam;
|
|
|
|
+import api.common.pojo.po.group.SimulationMageGroupPO;
|
|
import api.common.pojo.po.project.MultiSimulationProjectTaskRecordPO;
|
|
import api.common.pojo.po.project.MultiSimulationProjectTaskRecordPO;
|
|
import api.common.pojo.vo.map.SimulationMapVO;
|
|
import api.common.pojo.vo.map.SimulationMapVO;
|
|
import api.common.pojo.vo.project.MultiSimulationProjectVO;
|
|
import api.common.pojo.vo.project.MultiSimulationProjectVO;
|
|
@@ -39,6 +40,7 @@ import io.minio.MinioClient;
|
|
import lombok.SneakyThrows;
|
|
import lombok.SneakyThrows;
|
|
import lombok.Synchronized;
|
|
import lombok.Synchronized;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.kafka.clients.admin.Admin;
|
|
import org.apache.kafka.clients.admin.Admin;
|
|
import org.apache.kafka.clients.producer.RecordMetadata;
|
|
import org.apache.kafka.clients.producer.RecordMetadata;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -125,6 +127,8 @@ public class ProjectApplicationService {
|
|
private SimulationMapMapper mapMapper;
|
|
private SimulationMapMapper mapMapper;
|
|
@Resource
|
|
@Resource
|
|
private MultiSimulationProjectMapper multiSimulationProjectMapper;
|
|
private MultiSimulationProjectMapper multiSimulationProjectMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private SimulationMageGroupMapper mageGroupMapper;
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
private MultiSimulationProjectTaskRecordMapper taskRecordMapper;
|
|
private MultiSimulationProjectTaskRecordMapper taskRecordMapper;
|
|
@@ -584,6 +588,7 @@ public class ProjectApplicationService {
|
|
parallel = multiTaskMessageEntityList.size();
|
|
parallel = multiTaskMessageEntityList.size();
|
|
}
|
|
}
|
|
Integer runState = multiProjectWaitQueue.getRunState();
|
|
Integer runState = multiProjectWaitQueue.getRunState();
|
|
|
|
+
|
|
// 使用完塞入
|
|
// 使用完塞入
|
|
Map<String, Integer> multiNodeMapToUse = projectDomainService.getMultiNodeMapToUse(isChoiceGpu, parallel);
|
|
Map<String, Integer> multiNodeMapToUse = projectDomainService.getMultiNodeMapToUse(isChoiceGpu, parallel);
|
|
List<MultiCreateYamlRet> yamlList = new ArrayList<>();
|
|
List<MultiCreateYamlRet> yamlList = new ArrayList<>();
|
|
@@ -615,7 +620,9 @@ public class ProjectApplicationService {
|
|
throw new RuntimeException("未选取到可用的节点");
|
|
throw new RuntimeException("未选取到可用的节点");
|
|
}
|
|
}
|
|
MultiSimulationSceneKafkaParam multiSimulationSceneKafkaParam = multiProjectWaitQueue.getKafkaParamList().get(i);
|
|
MultiSimulationSceneKafkaParam multiSimulationSceneKafkaParam = multiProjectWaitQueue.getKafkaParamList().get(i);
|
|
- MultiCreateYamlRet multiTempYaml = projectDomainService.createMultiTempYaml(projectId, multiSimulationSceneKafkaParam, messageEntity, modelName, partition, offset, isChoiceGpu);
|
|
|
|
|
|
+ MultiCreateYamlRet multiTempYaml = projectDomainService.createMultiTempYaml(projectId, multiSimulationSceneKafkaParam, messageEntity
|
|
|
|
+ ,multiProjectWaitQueue.getConnectorPath(),multiProjectWaitQueue.getControllerPath()
|
|
|
|
+ , modelName, partition, offset, isChoiceGpu);
|
|
multiTempYaml.setTaskId(messageEntity.getInfo().getTask_id());
|
|
multiTempYaml.setTaskId(messageEntity.getInfo().getTask_id());
|
|
multiTempYaml.setNodeName(modelName);
|
|
multiTempYaml.setNodeName(modelName);
|
|
yamlList.add(multiTempYaml);
|
|
yamlList.add(multiTempYaml);
|
|
@@ -1038,6 +1045,7 @@ public class ProjectApplicationService {
|
|
}
|
|
}
|
|
|
|
|
|
@Async("pool1")
|
|
@Async("pool1")
|
|
|
|
+ @SneakyThrows
|
|
public void runMultiProject(MultiSimulationProjectKafkaParam projectStartMessageEntity) {
|
|
public void runMultiProject(MultiSimulationProjectKafkaParam projectStartMessageEntity) {
|
|
MultiProjectWaitQueueEntity multiTaskAndFixData = createMultiTaskAndFixData(projectStartMessageEntity);
|
|
MultiProjectWaitQueueEntity multiTaskAndFixData = createMultiTaskAndFixData(projectStartMessageEntity);
|
|
checkIfCanRunMulti(multiTaskAndFixData);
|
|
checkIfCanRunMulti(multiTaskAndFixData);
|
|
@@ -1123,6 +1131,16 @@ public class ProjectApplicationService {
|
|
KafkaUtil.deleteTopic(kafkaAdminClient, projectId);
|
|
KafkaUtil.deleteTopic(kafkaAdminClient, projectId);
|
|
|
|
|
|
List<MultiSimulationSceneKafkaParam> kafkaParamList = projectStartMessageEntity.getKafkaParamList();
|
|
List<MultiSimulationSceneKafkaParam> kafkaParamList = projectStartMessageEntity.getKafkaParamList();
|
|
|
|
+
|
|
|
|
+ MultiSimulationProjectVO projectVO = multiSimulationProjectMapper.selectMultiSimulationProjectById(projectId);
|
|
|
|
+ if (Objects.isNull(projectVO)){
|
|
|
|
+ throw new RuntimeException("未找到有效的仿真任务");
|
|
|
|
+ }
|
|
|
|
+ String simulationMageGroupId = projectVO.getSimulationMageGroupId();
|
|
|
|
+ SimulationMageGroupPO groupPO = mageGroupMapper.selectSimulationMageGroupById(simulationMageGroupId);
|
|
|
|
+ if (Objects.isNull(groupPO) || StringUtils.isBlank(groupPO.getControllerPath()) || StringUtils.isBlank(groupPO.getConnectorPath())){
|
|
|
|
+ throw new RuntimeException("仿真镜像组无效");
|
|
|
|
+ }
|
|
List<MultiTaskMessageEntity> entityList = new ArrayList<>();
|
|
List<MultiTaskMessageEntity> entityList = new ArrayList<>();
|
|
for (MultiSimulationSceneKafkaParam kafkaParam: kafkaParamList) {
|
|
for (MultiSimulationSceneKafkaParam kafkaParam: kafkaParamList) {
|
|
String taskId = StringUtil.getRandomUUID();
|
|
String taskId = StringUtil.getRandomUUID();
|
|
@@ -1226,6 +1244,9 @@ public class ProjectApplicationService {
|
|
MultiProjectWaitQueueEntity build = MultiProjectWaitQueueEntity.builder()
|
|
MultiProjectWaitQueueEntity build = MultiProjectWaitQueueEntity.builder()
|
|
.multiTaskMessageEntityList(entityList)
|
|
.multiTaskMessageEntityList(entityList)
|
|
.projectId(projectId)
|
|
.projectId(projectId)
|
|
|
|
+ .connectorPath(groupPO.getConnectorPath())
|
|
|
|
+ .controllerPath(groupPO.getControllerPath())
|
|
|
|
+ .softwarePath(groupPO.getSoftwarePath())
|
|
.waitingParallelism(entityList.size())
|
|
.waitingParallelism(entityList.size())
|
|
.kafkaParamList(kafkaParamList)
|
|
.kafkaParamList(kafkaParamList)
|
|
.runState(-1)
|
|
.runState(-1)
|
|
@@ -1344,6 +1365,9 @@ public class ProjectApplicationService {
|
|
waitMulti(MultiProjectWaitQueueEntity.builder().waitingParallelism(parallelism - remainderParallelism)
|
|
waitMulti(MultiProjectWaitQueueEntity.builder().waitingParallelism(parallelism - remainderParallelism)
|
|
.runState(runSt)
|
|
.runState(runSt)
|
|
.projectId(projectWaitQueueEntity.getProjectId())
|
|
.projectId(projectWaitQueueEntity.getProjectId())
|
|
|
|
+ .softwarePath(projectWaitQueueEntity.getSoftwarePath())
|
|
|
|
+ .connectorPath(projectWaitQueueEntity.getConnectorPath())
|
|
|
|
+ .controllerPath(projectWaitQueueEntity.getControllerPath())
|
|
.multiTaskMessageEntityList(projectWaitQueueEntity.getMultiTaskMessageEntityList())
|
|
.multiTaskMessageEntityList(projectWaitQueueEntity.getMultiTaskMessageEntityList())
|
|
.kafkaParamList(projectWaitQueueEntity.getKafkaParamList())
|
|
.kafkaParamList(projectWaitQueueEntity.getKafkaParamList())
|
|
.build());
|
|
.build());
|
|
@@ -1361,6 +1385,9 @@ public class ProjectApplicationService {
|
|
waitMulti(MultiProjectWaitQueueEntity.builder().waitingParallelism(0)
|
|
waitMulti(MultiProjectWaitQueueEntity.builder().waitingParallelism(0)
|
|
.runState(projectWaitQueueEntity.getMultiTaskMessageEntityList().size() -1)
|
|
.runState(projectWaitQueueEntity.getMultiTaskMessageEntityList().size() -1)
|
|
.projectId(projectWaitQueueEntity.getProjectId())
|
|
.projectId(projectWaitQueueEntity.getProjectId())
|
|
|
|
+ .softwarePath(projectWaitQueueEntity.getSoftwarePath())
|
|
|
|
+ .connectorPath(projectWaitQueueEntity.getConnectorPath())
|
|
|
|
+ .controllerPath(projectWaitQueueEntity.getControllerPath())
|
|
.kafkaParamList(projectWaitQueueEntity.getKafkaParamList())
|
|
.kafkaParamList(projectWaitQueueEntity.getKafkaParamList())
|
|
.multiTaskMessageEntityList(projectWaitQueueEntity.getMultiTaskMessageEntityList()).build()
|
|
.multiTaskMessageEntityList(projectWaitQueueEntity.getMultiTaskMessageEntityList()).build()
|
|
);
|
|
);
|