运营平台后端

tips :server.servlet.context-path用于指定Web应用程序的上下文路径,例如,如果你设置server.servlet.context-path=/myapp,那么当用户访问http://localhost:8080/myapp时,Boot应用程序会处理这个请求。
tips : 写dev/local/prod这类配置的时候,可以把你的nacos相关配置写到最上面,后面直接变量名引用就行,例如:

1
2
3
4
5
6
7
8
large:
model:
nacos:
server-addr: 192.168.1.46:8848
namespace: large-model-dev
group: LARGE_MODEL_GROUP

# 引用方式 ${large.model.nacos.server-addr}

tips : META-INF/spring.factories文件用于自动配置和扩展Spring应用程序。这个文件通过Spring的工厂加载机制,可以自动发现和加载配置类、监听器等组件,从而实现模块化和自动化配置。当你在Config包下面写了一些配置时,可以通过以下方式配置

1
2
3
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.pubinfo.large.model.framework.dict.config.TravelDictRpcAutoConfiguration,\
com.pubinfo.large.model.framework.dict.config.TravelDictAutoConfiguration

@Async的基本使用

@Async注解可以让被标注的方法异步执行,但是有前提条件

  1. 配置类上添加@EnableAsync注解开启对异步方法的支持。
  2. 异步执行的方法所在类由Spring管理,即类上要注解@Component或者其他能将类添加到Spring IOC容器的注解。

由于Async注解使用的默认线程池不会复用线程,因此最好使用自定义的线程池。

  1. 使用AsyncConfigurer指定线程池,用于全局配置线程池的核心接口。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration  
@EnableAsync
public class GlobalAsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5); // 核心线程数
executor.setMaxPoolSize(10); // 最大线程数
executor.setQueueCapacity(20); // 队列容量
executor.setThreadNamePrefix("global-"); // 线程名称前缀
executor.initialize();
return executor;
}
}
  1. 在Spring容器中注册一个线程池bean,这种方式能按需使用线程池资源。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Configuration  
public class CustomThreadPoolConfig {
@Bean(name = "customExecutor")
public ThreadPoolTaskExecutor customExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(3);
executor.setMaxPoolSize(5);
executor.setQueueCapacity(10);
executor.setThreadNamePrefix("custom-");
executor.initialize();
return executor;
}
}

// 使用方法,在@Async注解中写Bean的名字
@Service
public class MyService {
@Async("customExecutor")
public void executeCustomTask() {
// 此方法将使用CustomThreadPoolConfig中名为customExecutor的线程池执行
}
}

运营平台重写Servlet和SpringCloudGateWay的目的

为了统计日志信息,统计大模型响应成功率与响应速度,校验安全策略,限制访问频次。需要搭建自己的网关,在网关中对于上游服务的请求进行记录与统计。

其主要实现在LargeModelServletServerInvokeLogServiceImplLargeModelServiceImpl类中。