Files
张翔 9f8bf041c3 feat: 更新端口配置并添加监控支持
fix: 修复测试配置和依赖检查

perf: 优化雪花算法性能

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

style: 统一代码格式和注释

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

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

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

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 联系方式