技术架构
夜月AI应用平台 采用现代化的微服务架构设计,支持单体和微服务双模式部署,为企业级AI应用提供稳定、可扩展的技术底座。
系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web前端 │ │ 小程序 │ │ 移动端 │ │ API调用 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ API网关 (Gateway) │
│ Spring Cloud Gateway : 7770 │
│ Nacos服务发现 │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 认证服务 │ │ 业务服务 │ │ 监控服务 │
│ (Auth) │ │ (Biz) │ │(Monitor) │
└──────────┘ └──────────┘ └──────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ LLM │ │ 知识 │ │ 数字 │
│ 服务 │ │ 图谱 │ │ 人 │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 训练 │ │ RAG │ │ AI │
│ 服务 │ │ 服务 │ │ Excel │
└──────────┘ └──────────┘ └──────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MySQL │ │ Redis │ │ Neo4j │ │ Milvus │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘技术栈详解
核心框架
| 层次 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 语言 | Java | 17 | LTS版本 |
| 框架 | Spring Boot | 3.4.7 | 微服务框架 |
| 云 | Spring Cloud | 2024.0.0 | 云原生支持 |
| 云阿里 | Spring Cloud Alibaba | 2023.0.3.2 | 阿里巴巴生态 |
| RPC | Apache Dubbo | 3.2.14 | 高性能RPC |
AI/LLM
| 技术 | 版本 | 说明 |
|---|---|---|
| LangChain4j | 1.0.0-beta1 | LLM应用框架 |
| HanLP | latest | 中文NLP |
| Apache Tika | 2.9.1 | 文档解析 |
| ONNX Runtime | latest | 模型推理 |
| OpenCV | latest | 图像处理 |
数据存储
| 技术 | 版本 | 说明 |
|---|---|---|
| MySQL | 9.2.0 | 关系型数据库 |
| Neo4j | 5.27.0 | 图数据库 |
| Redis | 6.0+ | 缓存和向量存储 |
| Milvus | latest | 向量数据库 |
| MinIO | latest | 对象存储 |
中间件
| 技术 | 版本 | 说明 |
|---|---|---|
| RocketMQ | 5.2.0 | 消息队列 |
| Sa-Token | 1.44.0 | 认证授权 |
| MyBatis-Plus | 3.5.12 | ORM框架 |
| Redisson | 3.38.1 | Redis客户端 |
| Sentinel | latest | 流量控制 |
工具库
| 技术 | 版本 | 说明 |
|---|---|---|
| Hutool | 5.8.33 | Java工具库 |
| Fastjson2 | 2.0.57 | JSON处理 |
| OkHttp | 4.12.0 | HTTP客户端 |
| Knife4j | 4.6.0 | API文档 |
部署模式
单体模式 (boot profile)
适合开发、测试和小规模部署场景。
架构特点:
- 单JVM部署
- 本地方法调用
- 无需Nacos等基础设施
- 简单快速
部署要求:
- Java 17+
- MySQL 8.0+
- Redis 6.0+
- 内存:4GB+
启动命令:
bash
java -jar nitemoon-boot.jar --spring.profiles.active=boot微服务模式 (cloud profile)
适合生产环境和大规模部署场景。
架构特点:
- 多服务独立部署
- Dubbo RPC通信
- Nacos服务发现和配置
- Sentinel流量控制
- Seata分布式事务
部署要求:
- Java 17+
- MySQL 8.0+
- Redis 6.0+
- Neo4j 5.0+
- Nacos 2.0+
- RocketMQ 5.0+
- 内存:8GB+(每个服务)
服务列表:
| 服务 | 端口 | 说明 |
|---|---|---|
| gateway | 7770 | API网关 |
| auth | 7771 | 认证服务 |
| llm | - | LLM服务 |
| onnx | - | ONNX推理服务 |
| upms | - | 用户权限服务 |
模块依赖关系
nitemoon-cloud (root)
├── nitemoon-gateway # API网关
├── nitemoon-auth # 认证服务
├── nitemoon-common # 公共模块
│ ├── common-core # 核心工具
│ ├── common-security # 安全模块
│ ├── common-mybatis # ORM模块
│ ├── common-redis # 缓存模块
│ ├── common-sse # SSE模块
│ ├── common-storage # 存储模块
│ └── ... # 其他公共模块
├── nitemoon-api # 服务接口
│ ├── nitemoon-llm-api # LLM接口
│ ├── nitemoon-kg-api # 知识图谱接口
│ ├── nitemoon-human-api # 数字人接口
│ └── ... # 其他接口
├── nitemoon-biz # 业务模块
│ ├── nitemoon-llm # LLM服务
│ ├── nitemoon-kg # 知识图谱服务
│ ├── nitemoon-human # 数字人服务
│ ├── nitemoon-training # 训练服务
│ ├── nitemoon-onnx # 推理服务
│ ├── nitemoon-aiexcel # AI Excel服务
│ ├── nitemoon-generator # 代码生成器
│ ├── nitemoon-monitor # 监控服务
│ └── nitemoon-upms # 用户权限服务
└── nitemoon-boot # 单体启动模块设计模式
策略模式
用于LLM提供商、TTS提供商、存储后端等场景的抽象。
java
public interface ModelBuildHandler {
ChatModel buildChatModel(LLMModelConfig config);
EmbeddingModel buildEmbeddingModel(LLMModelConfig config);
}工厂模式
用于创建模型实例、存储实例等。
java
@Component
public class ModelStoreFactory {
public ChatModel createChatModel(String provider, String modelName) {
ModelBuildHandler handler = getHandler(provider);
return handler.buildChatModel(loadConfig(modelName));
}
}观察者模式
用于事件驱动的缓存刷新、配置更新等。
java
@Component
public class ProviderRefreshListener implements ApplicationListener<ProviderRefreshEvent> {
@Override
public void onApplicationEvent(ProviderRefreshEvent event) {
// 刷新提供商缓存
}
}性能优化
缓存策略
- Redis缓存热点数据
- 本地缓存频繁访问数据
- 多级缓存架构
异步处理
- RocketMQ异步消息
- CompletableFuture异步调用
- 线程池隔离
连接池
- HikariCP数据库连接池
- Redisson连接池
- OkHttp连接池