系统架构概述
本文档详细描述了系统采用的经典三层B/S(Browser/Server)架构及其具体部署结构。该架构将应用逻辑分为三个主要层次:表示层、业务逻辑层和数据访问层,实现了关注点分离,提高了系统的可维护性和可扩展性。
架构图与部署结构
以下是系统的完整架构图,展示了从客户端到数据库服务器的完整数据流:
flowchart TD
subgraph A["客户端(浏览器)"]
A1["Chrome 90+"]
A2["Edge 90+"]
A3["Firefox 88+"]
end
subgraph B["Web服务器"]
B1["Nginx / Vite Preview"]
B2["静态资源服务"]
B3["API反向代理"]
end
subgraph C["应用服务器"]
C1["Controller层"]
C2["Service层"]
C3["Mapper层(MyBatis-Plus)"]
end
subgraph D["数据库服务器"]
D1["MySQL 8.0"]
D2["数据库: bi\_fat2026"]
end
A -- "HTTPS" --> B
B -- "HTTP (JSON)" --> C
C -- "JDBC" --> D
各层详细说明
1. 客户端层(表示层)
**作用**:用户交互界面,负责展示数据和接收用户输入。
**技术栈**:
- **浏览器**:Chrome 90+、Edge 90+、Firefox 88+
- **通信协议**:HTTPS(安全传输层协议)
**特点**:
- 纯前端渲染,不包含业务逻辑
- 通过HTTPS与Web服务器安全通信
- 支持现代浏览器,确保良好的用户体验
2. Web服务器层(中间层)
**作用**:作为前端和后端应用服务器之间的桥梁。
**技术栈**:
- **服务器软件**:Nginx 或 Vite Preview
- **主要功能**:
- 静态资源服务(HTML、CSS、JavaScript、图片等)
- API反向代理(将前端请求转发到后端应用服务器)
**通信方式**:
- 接收客户端的HTTPS请求
- 向后端应用服务器发送HTTP(JSON格式)请求
3. 应用服务器层(业务逻辑层)
**作用**:处理核心业务逻辑,协调数据访问和业务规则。
**技术栈**:
- **框架**:Spring Boot 2.x
- **端口**:9020
- **架构分层**:
- **Controller层**:接收HTTP请求,进行参数验证,调用Service层
- **Service层**:实现核心业务逻辑,处理业务规则
- **Mapper层**:基于MyBatis-Plus,负责数据库操作
**通信方式**:
- 通过HTTP(JSON)与Web服务器通信
- 通过JDBC与数据库服务器通信
4. 数据库服务器层(数据访问层)
**作用**:持久化存储系统数据。
**技术栈**:
- **数据库**:MySQL 8.0
- **数据库名称**:bi_fat2026
**特点**:
- 关系型数据库,支持事务处理
- 通过JDBC与应用服务器通信
- 存储所有业务数据
数据流分析
请求流程(正向)
- **用户操作**:用户在浏览器中进行操作(如点击按钮)
- **HTTPS请求**:浏览器通过HTTPS向Web服务器发送请求
- **静态资源/API代理**:
- 如果是静态资源请求,Web服务器直接返回
- 如果是API请求,Web服务器反向代理到应用服务器
- **业务处理**:应用服务器按Controller→Service→Mapper的顺序处理请求
- **数据操作**:Mapper层通过JDBC操作数据库
- **响应返回**:处理结果按原路返回给用户
响应流程(反向)
- **数据库响应**:数据库返回查询/操作结果
- **业务封装**:应用服务器将数据封装为业务对象
- **JSON序列化**:Controller层将结果序列化为JSON
- **HTTP响应**:应用服务器返回HTTP响应给Web服务器
- **HTTPS响应**:Web服务器将响应转发给客户端
- **界面更新**:浏览器解析响应并更新界面
架构优势
1. 安全性
- **HTTPS加密**:客户端与Web服务器之间使用HTTPS,防止数据窃听
- **反向代理**:Web服务器隐藏了应用服务器的真实地址
- **分层防护**:每层都有独立的安全策略
2. 可扩展性
- **水平扩展**:每层都可以独立扩展
- **负载均衡**:Web服务器层可以轻松添加负载均衡
- **微服务演进**:为未来向微服务架构演进奠定基础
3. 可维护性
- **关注点分离**:各层职责清晰,便于团队分工
- **技术栈独立**:每层可以使用最适合的技术
- **易于测试**:各层可以独立进行单元测试
4. 性能优化
- **静态资源分离**:Web服务器专门处理静态资源,减轻应用服务器压力
- **连接池管理**:应用服务器可以管理数据库连接池
- **缓存策略**:可以在各层实施缓存策略
部署建议
1. 硬件配置
- **Web服务器**:2核4GB内存,SSD存储
- **应用服务器**:4核8GB内存,根据业务负载调整
- **数据库服务器**:8核16GB内存,高性能SSD,建议主从复制
2. 网络配置
- **防火墙规则**:
- 客户端只能访问Web服务器的443端口
- Web服务器只能访问应用服务器的9020端口
- 应用服务器只能访问数据库服务器的3306端口
- **域名配置**:为Web服务器配置域名和SSL证书
3. 监控与日志
- **应用监控**:监控各服务器的CPU、内存、磁盘使用率
- **业务监控**:监控关键业务接口的响应时间和成功率
- **日志收集**:集中收集各层日志,便于问题排查
常见问题与解决方案
1. 跨域问题
**问题**:前端直接调用后端API时可能出现跨域错误
**解决方案**:在Web服务器配置CORS,或在应用服务器添加CORS过滤器
2. 性能瓶颈
**问题**:数据库查询慢导致整体性能下降
**解决方案**:
- 优化SQL语句,添加索引
- 使用数据库连接池
- 考虑引入缓存(如Redis)
3. 单点故障
**问题**:任一服务器宕机导致系统不可用
**解决方案**:
- Web服务器和应用服务器使用集群部署
- 数据库使用主从复制或集群方案
- 配置负载均衡和健康检查
总结
本文详细介绍了系统的三层B/S架构,通过清晰的架构图和分层说明,展示了从客户端到数据库的完整数据流。该架构具有安全性高、可扩展性强、易于维护等优点,为系统的稳定运行提供了坚实基础。
在实际部署和运维过程中,建议根据业务规模和技术团队能力,选择合适的硬件配置、网络策略和监控方案,确保系统能够稳定、高效地运行。