2025-09-11 01:04:51 +08:00
|
|
|
|
# 系统架构设计文档
|
2025-08-18 23:48:54 +08:00
|
|
|
|
|
|
|
|
|
|
## 1. 概述
|
|
|
|
|
|
|
2025-09-11 01:04:51 +08:00
|
|
|
|
本项目采用前后端分离的架构设计,后端基于双技术栈(Java Spring Boot + Node.js)的微服务架构,前端采用Vue.js和Nuxt.js技术栈,支持Web端和微信小程序等多种客户端。
|
2025-08-18 23:48:54 +08:00
|
|
|
|
|
|
|
|
|
|
## 2. 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 前端技术栈
|
2025-09-11 01:04:51 +08:00
|
|
|
|
- **管理后台**: Vue 3 + Element Plus
|
|
|
|
|
|
- **用户端**: Nuxt 3 (SSR)
|
|
|
|
|
|
- **微信小程序**: 微信小程序原生开发
|
|
|
|
|
|
- **构建工具**: Vite, Webpack
|
|
|
|
|
|
- **状态管理**: Pinia, Vuex
|
|
|
|
|
|
- **HTTP客户端**: Axios
|
2025-08-18 23:48:54 +08:00
|
|
|
|
|
|
|
|
|
|
### 2.2 后端技术栈
|
|
|
|
|
|
|
2025-09-11 01:04:51 +08:00
|
|
|
|
#### 2.2.1 Java技术栈(主要)
|
|
|
|
|
|
- **核心框架**: Spring Boot 2.7.x, Spring Cloud 2021.x
|
|
|
|
|
|
- **服务注册与发现**: Eureka
|
|
|
|
|
|
- **配置中心**: Spring Cloud Config
|
|
|
|
|
|
- **API网关**: Spring Cloud Gateway
|
|
|
|
|
|
- **数据库**: MySQL 8.0, Spring Data JPA
|
|
|
|
|
|
- **缓存**: Redis
|
|
|
|
|
|
- **消息队列**: RabbitMQ
|
|
|
|
|
|
- **安全框架**: Spring Security + JWT
|
|
|
|
|
|
- **构建工具**: Maven 3.8.x
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.2.2 Node.js技术栈(辅助)
|
|
|
|
|
|
- **运行环境**: Node.js 16.x
|
|
|
|
|
|
- **Web框架**: Express.js
|
|
|
|
|
|
- **数据库**: MySQL 8.0
|
|
|
|
|
|
- **ORM**: Sequelize
|
|
|
|
|
|
- **构建工具**: NPM/Yarn
|
|
|
|
|
|
|
|
|
|
|
|
### 2.3 基础设施
|
|
|
|
|
|
- **容器化**: Docker
|
|
|
|
|
|
- **容器编排**: Kubernetes
|
|
|
|
|
|
- **反向代理**: Nginx
|
|
|
|
|
|
- **监控**: Prometheus + Grafana
|
|
|
|
|
|
- **日志**: ELK Stack (Elasticsearch, Logstash, Kibana)
|
|
|
|
|
|
- **CI/CD**: Jenkins
|
2025-08-18 23:48:54 +08:00
|
|
|
|
|
|
|
|
|
|
## 3. 系统架构图
|
|
|
|
|
|
|
2025-09-11 01:04:51 +08:00
|
|
|
|
```mermaid
|
|
|
|
|
|
graph TB
|
|
|
|
|
|
subgraph "客户端层"
|
|
|
|
|
|
A[Web浏览器] --> B[管理后台 admin-system]
|
|
|
|
|
|
C[Web浏览器] --> D[用户端 frontend]
|
|
|
|
|
|
E[微信客户端] --> F[微信小程序 miniprogram]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "网关层"
|
|
|
|
|
|
G[API网关 gateway]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "服务注册与配置中心"
|
|
|
|
|
|
H[Eureka注册中心 registry]
|
|
|
|
|
|
I[Config配置中心 config-server]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "核心业务服务层(Java)"
|
|
|
|
|
|
J[养殖管理服务<br/>farming-service:8081]
|
|
|
|
|
|
K[用户中心服务<br/>user-center-service:8082]
|
|
|
|
|
|
L[交易服务<br/>trade-service:8083]
|
|
|
|
|
|
M[金融服务<br/>finance-service:8084]
|
|
|
|
|
|
N[数据平台服务<br/>data-platform-service:8085]
|
|
|
|
|
|
O[政务服务<br/>government-service:8086]
|
|
|
|
|
|
P[大屏服务<br/>dashboard-service:8087]
|
|
|
|
|
|
Q[商城服务<br/>mall-service:8088]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "辅助业务服务层(Node.js)"
|
|
|
|
|
|
R[AI能力服务<br/>ai-service:3001]
|
|
|
|
|
|
S[部分遗留服务<br/>legacy-service:3002]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "数据存储层"
|
|
|
|
|
|
T[MySQL主数据库]
|
|
|
|
|
|
U[Redis缓存]
|
|
|
|
|
|
V[RabbitMQ消息队列]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "基础设施层"
|
|
|
|
|
|
W[Docker容器]
|
|
|
|
|
|
X[Kubernetes集群]
|
|
|
|
|
|
Y[Nginx反向代理]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
B --> G
|
|
|
|
|
|
D --> G
|
|
|
|
|
|
F --> G
|
|
|
|
|
|
|
|
|
|
|
|
G --> H
|
|
|
|
|
|
G --> J
|
|
|
|
|
|
G --> K
|
|
|
|
|
|
G --> L
|
|
|
|
|
|
G --> M
|
|
|
|
|
|
G --> N
|
|
|
|
|
|
G --> O
|
|
|
|
|
|
G --> P
|
|
|
|
|
|
G --> Q
|
|
|
|
|
|
G --> R
|
|
|
|
|
|
G --> S
|
|
|
|
|
|
|
|
|
|
|
|
J --> T
|
|
|
|
|
|
K --> T
|
|
|
|
|
|
L --> T
|
|
|
|
|
|
M --> T
|
|
|
|
|
|
N --> T
|
|
|
|
|
|
O --> T
|
|
|
|
|
|
P --> T
|
|
|
|
|
|
Q --> T
|
|
|
|
|
|
R --> T
|
|
|
|
|
|
S --> T
|
|
|
|
|
|
|
|
|
|
|
|
J --> U
|
|
|
|
|
|
K --> U
|
|
|
|
|
|
L --> U
|
|
|
|
|
|
M --> U
|
|
|
|
|
|
N --> U
|
|
|
|
|
|
O --> U
|
|
|
|
|
|
P --> U
|
|
|
|
|
|
Q --> U
|
|
|
|
|
|
R --> U
|
|
|
|
|
|
S --> U
|
|
|
|
|
|
|
|
|
|
|
|
J --> V
|
|
|
|
|
|
K --> V
|
|
|
|
|
|
L --> V
|
|
|
|
|
|
M --> V
|
|
|
|
|
|
N --> V
|
|
|
|
|
|
O --> V
|
|
|
|
|
|
P --> V
|
|
|
|
|
|
Q --> V
|
|
|
|
|
|
R --> V
|
|
|
|
|
|
S --> V
|
|
|
|
|
|
|
|
|
|
|
|
H --> W
|
|
|
|
|
|
I --> W
|
|
|
|
|
|
J --> W
|
|
|
|
|
|
K --> W
|
|
|
|
|
|
L --> W
|
|
|
|
|
|
M --> W
|
|
|
|
|
|
N --> W
|
|
|
|
|
|
O --> W
|
|
|
|
|
|
P --> W
|
|
|
|
|
|
Q --> W
|
|
|
|
|
|
R --> W
|
|
|
|
|
|
S --> W
|
|
|
|
|
|
T --> W
|
|
|
|
|
|
U --> W
|
|
|
|
|
|
V --> W
|
|
|
|
|
|
|
|
|
|
|
|
W --> X
|
|
|
|
|
|
X --> Y
|
2025-08-18 23:48:54 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-11 01:04:51 +08:00
|
|
|
|
## 4. 前端架构
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 管理后台 (admin-system)
|
|
|
|
|
|
- 基于Vue 3和Element Plus构建
|
|
|
|
|
|
- 采用组件化开发模式
|
|
|
|
|
|
- 使用Vue Router管理路由
|
|
|
|
|
|
- 使用Pinia进行状态管理
|
|
|
|
|
|
- 通过Axios与后端API通信
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 用户端 (frontend)
|
|
|
|
|
|
- 基于Nuxt 3构建,支持SSR
|
|
|
|
|
|
- 采用模块化架构设计
|
|
|
|
|
|
- 使用Vue Router管理路由
|
|
|
|
|
|
- 使用Vuex进行状态管理
|
|
|
|
|
|
- 通过Axios与后端API通信
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 微信小程序 (miniprogram)
|
|
|
|
|
|
- 基于微信小程序原生开发
|
|
|
|
|
|
- 采用页面+组件的结构
|
|
|
|
|
|
- 使用微信提供的API和组件
|
|
|
|
|
|
- 通过wx.request与后端API通信
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 后端架构
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 微服务架构
|
|
|
|
|
|
系统采用微服务架构设计,将业务功能拆分为独立的服务:
|
|
|
|
|
|
|
|
|
|
|
|
#### 5.1.1 Java微服务(主要)
|
|
|
|
|
|
1. **养殖管理服务 (farming-service:8081)**
|
|
|
|
|
|
- 功能:养殖场管理、牲畜档案、饲养记录等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
2. **用户中心服务 (user-center-service:8082)**
|
|
|
|
|
|
- 功能:用户管理、权限控制、认证授权等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Security, JWT
|
|
|
|
|
|
|
|
|
|
|
|
3. **交易服务 (trade-service:8083)**
|
|
|
|
|
|
- 功能:活牛交易、订单管理、支付处理等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
4. **金融服务 (finance-service:8084)**
|
|
|
|
|
|
- 功能:贷款申请、保险购买、金融产品等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
5. **数据平台服务 (data-platform-service:8085)**
|
|
|
|
|
|
- 功能:数据统计、报表生成、数据分析等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
6. **政务服务 (government-service:8086)**
|
|
|
|
|
|
- 功能:政策发布、监管上报、审批流程等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
7. **大屏服务 (dashboard-service:8087)**
|
|
|
|
|
|
- 功能:数据可视化、实时监控、大屏展示等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
8. **商城服务 (mall-service:8088)**
|
|
|
|
|
|
- 功能:商品管理、购物车、订单处理等
|
|
|
|
|
|
- 技术:Spring Boot, Spring Data JPA
|
|
|
|
|
|
|
|
|
|
|
|
#### 5.1.2 Node.js服务(辅助)
|
|
|
|
|
|
1. **AI能力服务 (ai-service:3001)**
|
|
|
|
|
|
- 功能:图像识别、智能分析等AI相关功能
|
|
|
|
|
|
- 技术:Node.js, Express.js
|
|
|
|
|
|
|
|
|
|
|
|
2. **遗留服务 (legacy-service:3002)**
|
|
|
|
|
|
- 功能:部分原有系统功能的兼容
|
|
|
|
|
|
- 技术:Node.js, Express.js
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 核心组件
|
|
|
|
|
|
|
|
|
|
|
|
#### 5.2.1 API网关 (gateway)
|
|
|
|
|
|
- 技术:Spring Cloud Gateway
|
|
|
|
|
|
- 功能:
|
|
|
|
|
|
- 请求路由转发
|
|
|
|
|
|
- 负载均衡
|
|
|
|
|
|
- 认证鉴权
|
|
|
|
|
|
- 限流熔断
|
|
|
|
|
|
- 日志记录
|
|
|
|
|
|
|
|
|
|
|
|
#### 5.2.2 服务注册中心 (registry)
|
|
|
|
|
|
- 技术:Eureka Server
|
|
|
|
|
|
- 功能:
|
|
|
|
|
|
- 服务注册与发现
|
|
|
|
|
|
- 服务健康检查
|
|
|
|
|
|
- 服务状态监控
|
|
|
|
|
|
|
|
|
|
|
|
#### 5.2.3 配置中心 (config-server)
|
|
|
|
|
|
- 技术:Spring Cloud Config
|
|
|
|
|
|
- 功能:
|
|
|
|
|
|
- 集中化配置管理
|
|
|
|
|
|
- 配置动态刷新
|
|
|
|
|
|
- 环境隔离配置
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 数据架构
|
|
|
|
|
|
|
|
|
|
|
|
### 6.1 数据库设计
|
|
|
|
|
|
- **主数据库**: MySQL 8.0
|
|
|
|
|
|
- **读写分离**: 主从复制
|
|
|
|
|
|
- **分库分表**: 根据业务模块分库
|
|
|
|
|
|
- **索引优化**: 合理设计索引提升查询性能
|
|
|
|
|
|
|
|
|
|
|
|
### 6.2 缓存设计
|
|
|
|
|
|
- **缓存技术**: Redis
|
|
|
|
|
|
- **缓存策略**:
|
|
|
|
|
|
- 热点数据缓存
|
|
|
|
|
|
- 会话缓存
|
|
|
|
|
|
- 分布式锁
|
|
|
|
|
|
- **缓存更新**: 通过消息队列实现缓存同步
|
|
|
|
|
|
|
|
|
|
|
|
### 6.3 消息队列
|
|
|
|
|
|
- **消息中间件**: RabbitMQ
|
|
|
|
|
|
- **应用场景**:
|
|
|
|
|
|
- 异步处理
|
|
|
|
|
|
- 服务解耦
|
|
|
|
|
|
- 流量削峰
|
|
|
|
|
|
- 日志收集
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 安全架构
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 认证授权
|
|
|
|
|
|
- **认证方式**: JWT Token
|
|
|
|
|
|
- **授权机制**: RBAC权限模型
|
|
|
|
|
|
- **安全传输**: HTTPS加密
|
|
|
|
|
|
- **密码安全**: BCrypt加密存储
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 数据安全
|
|
|
|
|
|
- **数据传输**: SSL/TLS加密
|
|
|
|
|
|
- **数据存储**: 敏感信息加密
|
|
|
|
|
|
- **访问控制**: 基于角色的访问控制
|
|
|
|
|
|
- **审计日志**: 关键操作日志记录
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 部署架构
|
|
|
|
|
|
|
|
|
|
|
|
### 8.1 容器化部署
|
|
|
|
|
|
- **容器技术**: Docker
|
|
|
|
|
|
- **镜像管理**: Harbor私有镜像仓库
|
|
|
|
|
|
- **容器编排**: Kubernetes
|
|
|
|
|
|
- **服务发现**: Kubernetes Service
|
|
|
|
|
|
|
|
|
|
|
|
### 8.2 负载均衡
|
|
|
|
|
|
- **反向代理**: Nginx
|
|
|
|
|
|
- **负载策略**: 轮询、权重、IP哈希
|
|
|
|
|
|
- **健康检查**: 定期检查服务状态
|
|
|
|
|
|
- **SSL终止**: Nginx处理SSL加密解密
|
|
|
|
|
|
|
|
|
|
|
|
### 8.3 监控告警
|
|
|
|
|
|
- **指标监控**: Prometheus
|
|
|
|
|
|
- **可视化**: Grafana
|
|
|
|
|
|
- **日志收集**: ELK Stack
|
|
|
|
|
|
- **告警机制**: 邮件、短信、微信通知
|
|
|
|
|
|
|
|
|
|
|
|
## 9. 性能优化策略
|
|
|
|
|
|
|
|
|
|
|
|
### 9.1 前端优化
|
|
|
|
|
|
- **资源压缩**: JS/CSS压缩合并
|
|
|
|
|
|
- **图片优化**: WebP格式、懒加载
|
|
|
|
|
|
- **缓存策略**: HTTP缓存、浏览器缓存
|
|
|
|
|
|
- **代码分割**: 路由懒加载、组件懒加载
|
|
|
|
|
|
|
|
|
|
|
|
### 9.2 后端优化
|
|
|
|
|
|
- **数据库优化**: 索引优化、查询优化
|
|
|
|
|
|
- **缓存优化**: 多级缓存、缓存预热
|
|
|
|
|
|
- **接口优化**: 接口合并、数据批量处理
|
|
|
|
|
|
- **异步处理**: 消息队列异步处理耗时操作
|
|
|
|
|
|
|
|
|
|
|
|
### 9.3 网络优化
|
|
|
|
|
|
- **CDN加速**: 静态资源CDN分发
|
|
|
|
|
|
- **压缩传输**: Gzip压缩
|
|
|
|
|
|
- **连接复用**: HTTP/2协议
|
|
|
|
|
|
- **边缘计算**: 靠近用户的边缘节点处理
|
|
|
|
|
|
|
|
|
|
|
|
## 10. 扩展性设计
|
|
|
|
|
|
|
|
|
|
|
|
### 10.1 水平扩展
|
|
|
|
|
|
- **服务拆分**: 微服务架构支持独立扩展
|
|
|
|
|
|
- **数据库扩展**: 读写分离、分库分表
|
|
|
|
|
|
- **缓存扩展**: Redis集群
|
|
|
|
|
|
- **消息队列扩展**: RabbitMQ集群
|
|
|
|
|
|
|
|
|
|
|
|
### 10.2 弹性伸缩
|
|
|
|
|
|
- **自动扩缩容**: Kubernetes HPA
|
|
|
|
|
|
- **资源监控**: 实时监控资源使用情况
|
|
|
|
|
|
- **负载均衡**: 动态调整流量分配
|
|
|
|
|
|
- **故障自愈**: 自动重启失败服务
|
|
|
|
|
|
|
|
|
|
|
|
## 11. 高可用设计
|
|
|
|
|
|
|
|
|
|
|
|
### 11.1 服务高可用
|
|
|
|
|
|
- **多实例部署**: 关键服务多实例运行
|
|
|
|
|
|
- **故障转移**: 服务故障自动切换
|
|
|
|
|
|
- **健康检查**: 定期检查服务状态
|
|
|
|
|
|
- **超时重试**: 网络异常自动重试
|
|
|
|
|
|
|
|
|
|
|
|
### 11.2 数据高可用
|
|
|
|
|
|
- **数据备份**: 定期备份重要数据
|
|
|
|
|
|
- **主从复制**: 数据库主从同步
|
|
|
|
|
|
- **灾难恢复**: 制定数据恢复预案
|
|
|
|
|
|
- **一致性保证**: 分布式事务处理
|
|
|
|
|
|
|
|
|
|
|
|
## 12. 总结
|
|
|
|
|
|
|
|
|
|
|
|
本系统采用现代化的微服务架构设计,通过合理的技术选型和架构规划,能够满足畜牧管理系统的业务需求,具备良好的可扩展性、可维护性和高可用性。Java技术栈作为主要后端技术,Node.js作为辅助技术,能够充分发挥各自优势,构建一个稳定、高效的畜牧管理系统。
|