Files
novalon-manage-system/docs/architecture/system-architecture.md
T
张翔 9f8bf041c3 feat: 更新端口配置并添加监控支持
fix: 修复测试配置和依赖检查

perf: 优化雪花算法性能

refactor: 清理冗余代码和未使用的导入

style: 统一代码格式和注释

test: 添加单元测试和集成测试

ci: 更新CI配置和构建脚本

chore: 更新依赖和配置文件
2026-03-13 08:50:19 +08:00

324 lines
8.3 KiB
Markdown

# Novalon 管理系统 - 系统架构设计文档
## 1. 系统概述
Novalon 管理系统是一个企业级后台管理系统,采用前后端分离架构,基于 Spring WebFlux 响应式编程模型。
## 2. 技术架构
### 2.1 后端架构
- **框架**: Spring Boot 3.4.1
- **编程模型**: 响应式 WebFlux
- **数据库**: PostgreSQL 15 + R2DBC
- **认证**: JWT + Spring Security
- **缓存**: Caffeine
- **文档**: SpringDoc OpenAPI 3.0
- **构建工具**: Maven 3.9
- **JDK**: Java 21
### 2.2 前端架构
- **框架**: Vue 3 + TypeScript 5.0
- **UI 组件**: Ant Design Vue 4.0
- **状态管理**: Pinia
- **路由**: Vue Router 4.0
- **构建工具**: Vite 5.0
- **HTTP 客户端**: Axios
### 2.3 基础设施
- **容器化**: Docker
- **编排**: Docker Compose
- **CI/CD**: Woodpecker
- **监控**: Prometheus + Grafana
- **日志**: 结构化日志 (SLF4J)
## 3. 分层架构
```
┌─────────────────────────────────────┐
│ Frontend (Vue 3) │
│ - TypeScript │
│ - Ant Design Vue │
│ - Pinia State │
└──────────────┬──────────────────────┘
│ HTTP/WebSocket
┌──────────────▼──────────────────────┐
│ Handler Layer │
│ (Functional WebFlux Routes) │
│ - Request Validation │
│ - Response Formatting │
└──────────────┬──────────────────────┘
┌──────────────▼──────────────────────┐
│ Service Layer │
│ (Business Logic) │
│ - @Cacheable │
│ - Transaction Management │
└──────────────┬──────────────────────┘
┌──────────────▼──────────────────────┐
│ DAO Layer │
│ (Data Access Object) │
│ - Repository Pattern │
│ - R2DBC Operations │
└──────────────┬──────────────────────┘
┌──────────────▼──────────────────────┐
│ Entity Layer │
│ (Database Entities) │
│ - MapStruct Mappers │
│ - Domain Objects │
└──────────────┬──────────────────────┘
┌──────────────▼──────────────────────┐
│ Database (PostgreSQL) │
│ - Connection Pool (HikariCP) │
│ - Indexes │
└─────────────────────────────────────┘
```
## 4. 核心模块
### 4.1 用户管理 (User Management)
- 用户 CRUD 操作
- 用户认证与授权
- 密码管理 (BCrypt 加密)
- 角色分配
- 用户状态管理 (启用/禁用)
- 逻辑删除与恢复
### 4.2 角色管理 (Role Management)
- 角色定义与维护
- 权限配置
- 菜单关联
- 角色排序
- 角色状态管理
### 4.3 菜单管理 (Menu Management)
- 菜单树结构
- 路由配置
- 权限控制
- 菜单类型 (目录/菜单/按钮)
- 图标配置
### 4.4 字典管理 (Dictionary Management)
- 字典类型管理
- 字典数据管理
- 字典缓存
- 字典查询优化
### 4.5 系统配置 (System Configuration)
- 系统参数配置
- 配置管理
- 配置缓存
- 配置类型分类
### 4.6 审计日志 (Audit Logs)
- 操作日志记录
- 登录日志记录
- 异常日志记录
- 日志查询与导出
### 4.7 通知中心 (Notification Center)
- 通知公告管理
- 用户消息管理
- WebSocket 实时推送
- 消息状态跟踪
### 4.8 文件管理 (File Management)
- 文件上传 (Multipart)
- 文件下载
- 文件预览
- 文件类型限制
- 文件大小限制
## 5. 数据流
### 5.1 请求流程
```
1. 前端发送 HTTP 请求
2. Handler 层接收请求并解析参数
3. Service 层处理业务逻辑
- 缓存检查
- 数据验证
4. DAO 层访问数据库
- R2DBC 非阻塞查询
5. 数据库返回结果
6. 逐层返回给前端
- Mono/Flux 响应式流
```
### 5.2 响应式数据流
```
Frontend Request
Handler (Mono/Flux)
- ServerRequest → Mono<ServerResponse>
Service (Mono/Flux)
- @Cacheable 缓存拦截
- 业务逻辑处理
DAO (Mono/Flux)
- R2DBC 非阻塞 I/O
Database (R2DBC Driver)
- 异步数据库操作
Response (Mono/Flux)
- 响应式流返回
Frontend
```
## 6. 安全设计
### 6.1 认证机制
- JWT Token 认证
- Token 刷新机制
- 密码 BCrypt 加密存储
- 登录失败次数限制
- Token 过期时间控制
### 6.2 授权机制
- 基于角色的访问控制 (RBAC)
- API 级别权限控制
- 菜单级别权限控制
- 数据级权限控制
### 6.3 审计机制
- 操作日志记录 (CRUD 操作)
- 登录日志记录 (成功/失败)
- 异常日志记录
- 敏感操作审计
### 6.4 数据安全
- SQL 注入防护 (R2DBC 参数化查询)
- XSS 防护 (输入验证)
- CSRF 防护 (Token 验证)
- 文件上传安全 (类型/大小限制)
## 7. 性能优化
### 7.1 响应式编程优势
- 非阻塞 I/O 操作
- 背压机制 (Backpressure)
- 异步处理能力
- 高并发支持
### 7.2 缓存策略
- Caffeine 本地缓存
- 缓存预热
- 缓存失效策略 (TTL 30 分钟)
- 缓存命中率监控
### 7.3 数据库优化
- 索引优化 (单列/复合索引)
- 查询优化 (EXPLAIN ANALYZE)
- 连接池配置 (HikariCP)
- 慢查询监控
### 7.4 性能指标
- P95 响应时间 < 500ms
- P99 响应时间 < 1000ms
- 并发支持 > 50 QPS
- 数据库连接池利用率 < 80%
## 8. 监控与运维
### 8.1 健康检查
- Spring Boot Actuator 端点
- 数据库连接检查
- 缓存状态检查
- 磁盘空间检查
### 8.2 指标监控
- Prometheus 指标采集
- Grafana 可视化
- JVM 内存使用
- HTTP 请求指标
- 数据库连接池状态
- 缓存命中率
### 8.3 日志管理
- 结构化日志 (JSON 格式)
- 日志级别控制 (DEBUG/INFO/WARN/ERROR)
- 日志归档策略
- ELK 集成 (可选)
### 8.4 告警规则
- 响应时间 > 1s 告警
- 错误率 > 1% 告警
- 数据库连接池耗尽告警
- JVM 内存使用 > 80% 告警
## 9. 部署架构
### 9.1 容器化部署
- Docker 镜像构建 (多阶段构建)
- Docker Compose 编排
- 环境变量配置
- 数据持久化卷
### 9.2 CI/CD 流水线
- Woodpecker CI 配置
- 自动化测试 (单元/集成/E2E)
- 代码覆盖率检查 (JaCoCo >= 80%)
- 静态代码分析 (SpotBugs)
- 安全扫描 (OWASP Dependency Check)
- 自动化部署
### 9.3 环境配置
- 开发环境 (localhost)
- 测试环境 (staging)
- 生产环境 (production)
- 配置文件分离
## 10. 扩展性设计
### 10.1 水平扩展
- 无状态设计 (Stateless)
- 负载均衡 (Nginx)
- 会话共享 (JWT 无状态)
- 数据库读写分离 (可选)
### 10.2 垂直扩展
- 资源优化 (CPU/内存)
- 连接池调优
- 缓存容量扩展
- 数据库分表 (可选)
## 11. 技术债务与改进
### 11.1 当前技术债务
- 部分 Mapper 警告 (MapStruct 未映射字段)
- WebSocket 未检查操作警告
- 测试覆盖率需提升 (当前 10%,目标 80%)
### 11.2 改进计划
- 修复 Mapper 映射问题
- 添加 WebSocket 类型安全
- 补充单元测试提升覆盖率
- 集成测试覆盖关键业务流程
- E2E 测试覆盖用户主要路径
## 12. 附录
### 12.1 相关文档
- [部署指南](../deployment/deployment-guide.md)
- [API 文档](http://localhost:8080/swagger-ui.html)
- [数据库设计](../database/database-schema.md)
### 12.2 联系方式
- 技术支持: support@novalon.cn
- 文档地址: https://docs.novalon.cn