Files
makemd/docs/01_Architecture_Design.md
2026-03-30 16:55:04 +08:00

182 lines
9.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 架构设计
## 1. 架构概述
Crawlful Hub 采用分层架构设计,确保系统的可维护性、可扩展性和可测试性。系统分为控制器层、服务层、仓库层和模型层,各层之间通过依赖注入进行解耦,实现了高内聚、低耦合的设计目标。
## 2. 分层架构
### 2.1 控制器层Controller
控制器层负责处理 HTTP 请求,包括请求参数的验证、调用服务层的方法、处理异常和返回响应。控制器层不包含业务逻辑,只负责请求和响应的处理。
**主要职责**
- 接收 HTTP 请求
- 验证请求参数
- 调用服务层处理业务逻辑
- 处理异常
- 返回 HTTP 响应
**核心控制器**
- `AuthController`:处理认证相关的请求
- `UserController`:处理用户管理相关的请求
- `ProductController`:处理商品管理相关的请求
- `OrderController`:处理订单管理相关的请求
- `PaymentController`:处理支付管理相关的请求
- `LogisticsController`:处理物流管理相关的请求
- `MonitoringController`:处理监控相关的请求
- `AlertController`:处理告警相关的请求
- `AuditController`:处理审计相关的请求
- `ConfigController`:处理配置相关的请求
- `DataController`:处理数据相关的请求
- `ReportController`:处理报表相关的请求
### 2.2 服务层Service
服务层是业务逻辑的核心,负责实现业务规则、处理业务流程和协调多个仓库的操作。服务层通过依赖注入使用仓库层的方法,实现业务逻辑的封装和复用。
**主要职责**
- 实现业务逻辑
- 处理业务流程
- 协调多个仓库的操作
- 管理事务
- 处理异常
**核心服务**
- `AuthService`:处理认证相关的业务逻辑
- `UserService`:处理用户管理相关的业务逻辑
- `ProductService`:处理商品管理相关的业务逻辑
- `OrderService`:处理订单管理相关的业务逻辑
- `PaymentService`:处理支付管理相关的业务逻辑
- `LogisticsService`:处理物流管理相关的业务逻辑
- `MonitoringService`:处理监控相关的业务逻辑
- `AlertService`:处理告警相关的业务逻辑
- `AuditService`:处理审计相关的业务逻辑
- `ConfigService`:处理配置相关的业务逻辑
- `DataService`:处理数据相关的业务逻辑
- `ReportService`:处理报表相关的业务逻辑
### 2.3 仓库层Repository
仓库层负责数据访问,包括数据库的 CRUD 操作。仓库层通过 Spring Data JPA 实现,提供了简洁的数据库操作接口。
**主要职责**
- 实现数据库的 CRUD 操作
- 提供查询方法
- 管理数据库事务
**核心仓库**
- `UserRepository`:处理用户数据的访问
- `ProductRepository`:处理商品数据的访问
- `OrderRepository`:处理订单数据的访问
- `PaymentRepository`:处理支付数据的访问
- `LogisticsRepository`:处理物流数据的访问
- `AlertRepository`:处理告警数据的访问
- `AuditRepository`:处理审计数据的访问
- `ConfigRepository`:处理配置数据的访问
### 2.4 模型层Model
模型层定义了数据结构,包括实体类和 DTO数据传输对象。实体类对应数据库表DTO 用于在不同层之间传递数据。
**主要职责**
- 定义数据结构
- 映射数据库表
- 提供数据访问方法
**核心模型**
- `User`:用户模型
- `Product`:商品模型
- `Order`:订单模型
- `Payment`:支付模型
- `Logistics`:物流模型
- `Alert`:告警模型
- `Audit`:审计模型
- `Config`:配置模型
## 3. 核心流程
### 3.1 用户认证流程
1. **用户注册**:用户提交注册信息,`AuthController` 调用 `AuthService``register` 方法,验证输入数据,创建用户并返回用户信息。
2. **用户登录**:用户提交登录信息,`AuthController` 调用 `AuthService``login` 方法,验证用户名和密码,生成 JWT 令牌并返回。
3. **令牌验证**:请求携带 JWT 令牌,`SecurityConfig` 验证令牌的有效性,确保用户已认证。
### 3.2 商品管理流程
1. **创建商品**:用户提交商品信息,`ProductController` 调用 `ProductService``create` 方法,验证输入数据,创建商品并返回商品信息。
2. **查询商品**:用户请求商品列表,`ProductController` 调用 `ProductService``getAll` 方法,根据过滤条件查询商品并返回。
3. **更新商品**:用户提交商品更新信息,`ProductController` 调用 `ProductService``update` 方法,验证输入数据,更新商品并返回更新后的商品信息。
4. **删除商品**:用户请求删除商品,`ProductController` 调用 `ProductService``delete` 方法,删除商品并返回成功信息。
### 3.3 订单管理流程
1. **创建订单**:用户提交订单信息,`OrderController` 调用 `OrderService``createOrder` 方法,验证输入数据,创建订单并返回订单信息。
2. **查询订单**:用户请求订单列表,`OrderController` 调用 `OrderService``getOrders` 方法,根据过滤条件查询订单并返回。
3. **更新订单**:用户提交订单更新信息,`OrderController` 调用 `OrderService``updateOrder` 方法,验证输入数据,更新订单并返回更新后的订单信息。
4. **订单状态流转**:用户请求更新订单状态,`OrderController` 调用 `OrderService``transitionOrderStatus` 方法,更新订单状态并返回成功信息。
### 3.4 支付管理流程
1. **创建支付**:用户提交支付信息,`PaymentController` 调用 `PaymentService``create` 方法,验证输入数据,创建支付并返回支付信息。
2. **查询支付**:用户请求支付列表,`PaymentController` 调用 `PaymentService``getAll` 方法,根据过滤条件查询支付并返回。
3. **更新支付**:用户提交支付更新信息,`PaymentController` 调用 `PaymentService``update` 方法,验证输入数据,更新支付并返回更新后的支付信息。
### 3.5 物流管理流程
1. **创建物流**:用户提交物流信息,`LogisticsController` 调用 `LogisticsService``create` 方法,验证输入数据,创建物流并返回物流信息。
2. **查询物流**:用户请求物流列表,`LogisticsController` 调用 `LogisticsService``getAll` 方法,根据过滤条件查询物流并返回。
3. **更新物流**:用户提交物流更新信息,`LogisticsController` 调用 `LogisticsService``update` 方法,验证输入数据,更新物流并返回更新后的物流信息。
### 3.6 监控与告警流程
1. **系统健康检查**:用户请求系统健康状态,`MonitoringController` 调用 `MonitoringService``getSystemHealth` 方法,返回系统健康状态。
2. **性能指标获取**:用户请求系统性能指标,`MonitoringController` 调用 `MonitoringService``getPerformanceMetrics` 方法,返回系统性能指标。
3. **告警创建**:系统检测到异常,`AlertService` 创建告警并存储到数据库。
4. **告警处理**:用户请求处理告警,`AlertController` 调用 `AlertService``resolveAlert` 方法,更新告警状态为已解决。
## 4. 技术实现细节
### 4.1 数据库设计
- **用户表**:存储用户信息,包括用户名、密码、邮箱、角色等。
- **商品表**:存储商品信息,包括标题、描述、价格、数量等。
- **订单表**:存储订单信息,包括订单号、状态、总金额等。
- **支付表**:存储支付信息,包括支付方式、金额、状态等。
- **物流表**:存储物流信息,包括物流方式、跟踪号、状态等。
- **告警表**:存储告警信息,包括告警类型、严重程度、状态等。
- **审计表**:存储审计日志,包括操作类型、资源类型、操作人等。
- **配置表**:存储系统配置,包括配置键、配置值、配置类型等。
### 4.2 缓存实现
使用 Redis 作为缓存存储,缓存高频访问的数据,如用户信息、商品信息等,提高系统的响应速度。
### 4.3 安全实现
- **JWT 认证**:使用 JWT 进行身份验证,确保 API 安全。
- **CSRF 保护**:实现 CSRF 令牌验证,防止 CSRF 攻击。
- **速率限制**:限制 API 请求频率,防止恶意请求。
- **密码加密**:使用 BCrypt 加密用户密码,确保密码安全。
### 4.4 国际化实现
使用 Spring 的国际化支持,提供英文和中文的资源文件,根据请求的 Accept-Language 头自动切换语言。
### 4.5 监控与告警实现
- **系统健康检查**:实现系统健康状态检查,包括数据库连接、缓存状态等。
- **性能指标监控**:实现系统性能指标监控,包括响应时间、请求次数等。
- **告警管理**:实现告警的创建、查询、更新和处理,及时发现和处理系统异常。
## 5. 扩展性设计
- **模块化设计**:系统采用模块化设计,各模块之间通过接口进行通信,便于功能扩展和代码维护。
- **依赖注入**:使用 Spring 的依赖注入,实现组件的解耦,便于单元测试和功能扩展。
- **配置化**:系统的配置通过 application.yml 文件进行配置,便于环境切换和参数调整。
- **插件化**:系统支持插件化开发,可以通过插件扩展系统功能。
## 6. 总结
Crawlful Hub 采用分层架构设计,实现了高内聚、低耦合的系统结构。系统通过控制器层、服务层、仓库层和模型层的划分,实现了业务逻辑的封装和复用,提高了系统的可维护性、可扩展性和可测试性。同时,系统通过缓存、安全、国际化等技术的应用,提高了系统的性能和用户体验。