From 28b5ca1dfcb5db21b84a7ed5fa059460f8d44567 Mon Sep 17 00:00:00 2001
From: xiaohucoding <2307520758@qq.com>
Date: Sun, 25 May 2025 17:24:57 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83=EF=BC=88na?=
=?UTF-8?q?cos=E7=89=88=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 78 +++++++++++++------
...cationOrchestrationServiceApplication.java | 2 +
.../controller/publishController.java | 78 ++++---------------
.../util/NacosServiceUtil.java | 21 +++++
src/main/resources/application.properties | 16 +---
src/main/resources/bootstrap.properties | 10 +++
6 files changed, 105 insertions(+), 100 deletions(-)
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java
create mode 100644 src/main/resources/bootstrap.properties
diff --git a/pom.xml b/pom.xml
index 8255ccc..7b91012 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,34 +2,51 @@
4.0.0
+
org.springframework.boot
spring-boot-starter-parent
- 3.2.5
+ 3.1.5
+
com.bipt
intelligent-application-orchestration-service
0.0.1-SNAPSHOT
intelligent-application-orchestration-service
intelligent-application-orchestration-service
-
-
-
-
-
-
-
-
-
-
-
-
+
21
+
+ 2022.0.4
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ 2022.0.0.0
+ pom
+ import
+
+
+
+
+
org.springframework.boot
spring-boot-starter-jdbc
@@ -38,42 +55,53 @@
org.springframework.boot
spring-boot-starter-web
-
org.springframework.boot
spring-boot-starter-data-redis
+
+
org.postgresql
postgresql
runtime
+
+ com.kingbase8
+ kingbase8
+ 9.0.0
+
+
+
org.projectlombok
lombok
1.18.38
true
-
-
com.github.pagehelper
pagehelper-spring-boot-starter
1.4.7
-
org.springdoc
springdoc-openapi-starter-webmvc-ui
- 2.3.0
+ 2.3.0
-
+
- com.kingbase8
- kingbase8
- 9.0.0
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ org.springframework.cloud
+ spring-cloud-starter-bootstrap
+
+
+
org.springframework.boot
spring-boot-starter-test
@@ -98,6 +126,9 @@
org.apache.maven.plugins
maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
org.projectlombok
@@ -121,5 +152,4 @@
-
-
+
\ No newline at end of file
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java
index 1e18dc6..5d34a0f 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java
@@ -4,11 +4,13 @@ import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@MapperScan("com.bipt.intelligentapplicationorchestrationservice.mapper")//指定扫描Mapper接口的包
@SpringBootApplication
@EnableTransactionManagement
+@EnableDiscoveryClient
@Slf4j
public class IntelligentApplicationOrchestrationServiceApplication {
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java
index ea333da..6d98284 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java
@@ -1,8 +1,8 @@
package com.bipt.intelligentapplicationorchestrationservice.controller;
-import com.bipt.intelligentapplicationorchestrationservice.config.RedisConfiguration;
import com.bipt.intelligentapplicationorchestrationservice.pojo.*;
import com.bipt.intelligentapplicationorchestrationservice.service.PublishService;
+import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
@@ -24,11 +24,9 @@ public class publishController {
@Autowired
private RedisTemplate redisTemplate;
- /**
- * 新增请求发布
- * @param servicePublishDTO
- * @return
- */
+ @Autowired
+ private NacosServiceUtil nacosServiceUtil;
+
@PostMapping
@Operation(summary ="新增发布请求")
@Transactional
@@ -37,70 +35,22 @@ public class publishController {
publishService.save(servicePublishDTO);
Long modelId = servicePublishDTO.getModelId();
String key = "Model_" + modelId;
- //查询redis是否存在GPU相关资源数据
- List list;
- list = (List) redisTemplate.opsForValue().get(key);
- //如果存在,直接返回,无须查询数据库
- if (list != null) {
- return OptResult.success(list);
- }else {
- list = new ArrayList<>();
- }
- String modelConfig = publishService.getByModelId(modelId);
- if (modelConfig == null) {
- log.error("模型配置为空,modelId={}", modelId);
- }
- String[] keyValuePairs = modelConfig.split("\\|");
- String GPUMemorySize = null;
- String GPUModel = null;
- for (String pair : keyValuePairs) {
- pair = pair.trim();
- if (pair.startsWith("GPU")) {
- GPUModel = pair.split(";", 2)[1];
- } else if (pair.startsWith("Memory:")) {
- GPUMemorySize = pair.split(":", 2)[1];
- }
- }
- ServicePublishVO servicePublishVO = new ServicePublishVO();
- servicePublishVO.setIp(servicePublishDTO.getIp());
- servicePublishVO.setModelId(servicePublishDTO.getModelId());
- servicePublishVO.setGPUMemorySize(GPUMemorySize);
- servicePublishVO.setGPUModel(GPUModel);
- //todo 调用模型部署,传递信息
-
- servicePublishVO.setApiUrl(servicePublishDTO.getApiUrl());
- list.add(servicePublishVO);
- redisTemplate.opsForValue().set(key,list);
- //一个ip上有多个机器
- // 假设从 Redis 获取的列表元素是 MachineInfo 类型
- String ip = servicePublishVO.getIp();
- String key1 = ip;
- List machineList = (List) redisTemplate.opsForValue().get(key1);
- // 模型所需的 GPU 资源
- String requiredGPUModel = servicePublishVO.getGPUModel();
- Integer requiredGPUMemory = Integer.valueOf(servicePublishVO.getGPUMemorySize());
- if (machineList != null) {
- for (MachineInfo machine : machineList) {
- // 获取机器的 GPU 资源
- String machineGPUModel = machine.getGPUModel();
- Integer machineGPUMemory = machine.getGPUMemorySize();
-
- // 判断机器是否满足模型需求
- if (requiredGPUModel.equals(machineGPUModel) &&
- machineGPUMemory >= requiredGPUMemory) {
- return OptResult.success(list);
- }
- }
- String key3 = "wait_queue";
- redisTemplate.opsForValue().set(key3,list);
- //todo资源释放时候优先分配等待队列中任务
+ try {
+ nacosServiceUtil.registerService(
+ servicePublishDTO.getModelId().toString(),
+ servicePublishDTO.getIp(),
+ 8080
+ );
+ log.info("Nacos服务注册成功");
+ } catch (Exception e) {
+ log.error("Nacos服务注册失败", e);
}
- return OptResult.success(list);
+ return OptResult.success();
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java
new file mode 100644
index 0000000..53861a1
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java
@@ -0,0 +1,21 @@
+package com.bipt.intelligentapplicationorchestrationservice.util;
+
+import com.alibaba.nacos.api.naming.NamingFactory;
+import com.alibaba.nacos.api.naming.NamingService;
+import com.alibaba.nacos.api.naming.pojo.Instance;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class NacosServiceUtil {
+ @Value("${spring.cloud.nacos.discovery.server-addr}")
+ private String nacosServerAddr;
+
+ public void registerService(String serviceName, String ip, int port) throws Exception {
+ NamingService naming = NamingFactory.createNamingService(nacosServerAddr);
+ Instance instance = new Instance();
+ instance.setIp(ip);
+ instance.setPort(port);
+ naming.registerInstance(serviceName, instance);
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2b97d0a..d8ff972 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,5 +1,3 @@
-spring.application.name=intelligent-application-orchestration-service
-
# 数据库配置
spring.datasource.url=jdbc:kingbase8://116.205.121.200:54321/Ipz
@@ -10,20 +8,14 @@ spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=30000
-# SQL映射文件路径配置
+# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
-# 配置实体类别名所在包
mybatis.type-aliases-package=com.bipt.intelligentapplicationorchestrationservice.pojo
-# 开启驼峰命名转换
mybatis.configuration.map-underscore-to-camel-case=true
-# Redis服务器地址
+# Redis配置
spring.data.redis.host=116.205.121.200
-# Redis服务器端口
spring.data.redis.port=6379
-# Redis密码(如果有)
spring.data.redis.password=Jbjhhzstsl97@
-# Redis数据库索引(默认为0)
-spring.data.redis.database = 0
-# 连接超时时间(毫秒)
-spring.data.redis.timeout = 3000
+spring.data.redis.database=0
+spring.data.redis.timeout=3000
\ No newline at end of file
diff --git a/src/main/resources/bootstrap.properties b/src/main/resources/bootstrap.properties
new file mode 100644
index 0000000..b24d590
--- /dev/null
+++ b/src/main/resources/bootstrap.properties
@@ -0,0 +1,10 @@
+# 应用名称(必须与Nacos配置的dataId前缀一致)
+spring.application.name=intelligent-application-orchestration-service
+
+# Nacos配置中心地址(引导阶段加载配置)
+spring.cloud.nacos.config.server-addr=192.168.100.1:8848
+spring.cloud.nacos.config.data-id=${spring.application.name}.properties
+spring.cloud.nacos.config.group=DEFAULT_GROUP
+
+# Nacos服务注册地址(引导阶段注册服务)
+spring.cloud.nacos.discovery.server-addr=192.168.100.1:8848
\ No newline at end of file