9f8bf041c3
fix: 修复测试配置和依赖检查 perf: 优化雪花算法性能 refactor: 清理冗余代码和未使用的导入 style: 统一代码格式和注释 test: 添加单元测试和集成测试 ci: 更新CI配置和构建脚本 chore: 更新依赖和配置文件
8.3 KiB
8.3 KiB
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 相关文档
12.2 联系方式
- 技术支持: support@novalon.cn
- 文档地址: https://docs.novalon.cn