删除过时的API文档和README文件
This commit is contained in:
527
docs/系统架构文档.md
Normal file
527
docs/系统架构文档.md
Normal file
@@ -0,0 +1,527 @@
|
||||
# 🏗️ 结伴客系统架构文档
|
||||
|
||||
## 📋 项目概述
|
||||
|
||||
结伴客是一个综合性的社交旅行平台,采用现代化的微服务架构设计,包含后台管理系统、微信小程序和官方网站三个主要模块。系统支持结伴旅行、动物认领、商家服务等核心业务功能。
|
||||
|
||||
## 🎯 技术选型
|
||||
|
||||
### 前端技术栈
|
||||
|
||||
#### 微信小程序
|
||||
- **开发框架**:原生微信小程序
|
||||
- **UI组件库**:Vant Weapp
|
||||
- **状态管理**:原生状态管理
|
||||
- **网络请求**:wx.request封装
|
||||
- **构建工具**:微信开发者工具
|
||||
|
||||
#### 后台管理系统
|
||||
- **开发框架**:Vue 3 + TypeScript
|
||||
- **UI组件库**:Element Plus
|
||||
- **状态管理**:Pinia
|
||||
- **路由管理**:Vue Router 4
|
||||
- **HTTP客户端**:Axios
|
||||
- **构建工具**:Vite
|
||||
|
||||
#### 官方网站
|
||||
- **开发框架**:Vue 3 + JavaScript
|
||||
- **UI框架**:自定义CSS + 响应式设计
|
||||
- **路由管理**:Vue Router
|
||||
- **构建工具**:Vite
|
||||
- **SEO优化**:Vue Meta
|
||||
|
||||
### 后端技术栈
|
||||
|
||||
#### Node.js版本(主要)
|
||||
- **运行环境**:Node.js 16.x+
|
||||
- **Web框架**:Express.js
|
||||
- **数据库ORM**:Sequelize
|
||||
- **认证授权**:JWT + bcrypt
|
||||
- **参数验证**:Joi
|
||||
- **日志管理**:Winston
|
||||
- **进程管理**:PM2
|
||||
|
||||
#### Java微服务版本(备选)
|
||||
- **开发框架**:Spring Boot 2.7+
|
||||
- **微服务框架**:Spring Cloud
|
||||
- **数据库ORM**:MyBatis Plus
|
||||
- **服务注册**:Eureka Server
|
||||
- **API网关**:Spring Cloud Gateway
|
||||
- **配置中心**:Spring Cloud Config
|
||||
|
||||
### 数据存储
|
||||
|
||||
#### 关系型数据库
|
||||
- **主数据库**:MySQL 8.0
|
||||
- **连接池**:HikariCP
|
||||
- **数据迁移**:Sequelize Migrations
|
||||
- **备份策略**:定时全量备份 + 增量备份
|
||||
|
||||
#### 缓存系统
|
||||
- **内存缓存**:Redis 6.0+
|
||||
- **缓存策略**:LRU淘汰策略
|
||||
- **数据类型**:String、Hash、List、Set
|
||||
- **持久化**:RDB + AOF
|
||||
|
||||
#### 文件存储
|
||||
- **对象存储**:MinIO / 阿里云OSS
|
||||
- **CDN加速**:阿里云CDN
|
||||
- **图片处理**:ImageMagick
|
||||
- **文件类型**:图片、文档、视频
|
||||
|
||||
### 开发工具
|
||||
|
||||
#### 版本控制
|
||||
- **代码仓库**:Git
|
||||
- **分支策略**:Git Flow
|
||||
- **代码审查**:Pull Request
|
||||
|
||||
#### 代码质量
|
||||
- **代码规范**:ESLint + Prettier
|
||||
- **类型检查**:TypeScript
|
||||
- **单元测试**:Jest + Supertest
|
||||
- **集成测试**:Postman + Newman
|
||||
|
||||
#### 容器化部署
|
||||
- **容器技术**:Docker
|
||||
- **编排工具**:Docker Compose
|
||||
- **镜像仓库**:Docker Hub / 阿里云容器镜像服务
|
||||
|
||||
## 🏢 系统架构设计
|
||||
|
||||
### 整体架构图
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "客户端层"
|
||||
A[微信小程序]
|
||||
B[后台管理系统]
|
||||
C[官方网站]
|
||||
end
|
||||
|
||||
subgraph "网关层"
|
||||
D[Nginx负载均衡]
|
||||
E[API网关]
|
||||
end
|
||||
|
||||
subgraph "应用服务层"
|
||||
F[用户服务]
|
||||
G[旅行服务]
|
||||
H[动物服务]
|
||||
I[商家服务]
|
||||
J[订单服务]
|
||||
K[消息服务]
|
||||
end
|
||||
|
||||
subgraph "数据存储层"
|
||||
L[MySQL主库]
|
||||
M[MySQL从库]
|
||||
N[Redis缓存]
|
||||
O[MinIO对象存储]
|
||||
end
|
||||
|
||||
subgraph "基础设施层"
|
||||
P[监控系统]
|
||||
Q[日志系统]
|
||||
R[配置中心]
|
||||
end
|
||||
|
||||
A --> D
|
||||
B --> D
|
||||
C --> D
|
||||
D --> E
|
||||
E --> F
|
||||
E --> G
|
||||
E --> H
|
||||
E --> I
|
||||
E --> J
|
||||
E --> K
|
||||
F --> L
|
||||
G --> L
|
||||
H --> L
|
||||
I --> L
|
||||
J --> L
|
||||
K --> L
|
||||
L --> M
|
||||
F --> N
|
||||
G --> N
|
||||
H --> N
|
||||
I --> O
|
||||
F --> P
|
||||
G --> Q
|
||||
H --> R
|
||||
```
|
||||
|
||||
### 微服务架构(Java版本)
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "服务注册中心"
|
||||
A[Eureka Server]
|
||||
end
|
||||
|
||||
subgraph "API网关"
|
||||
B[Gateway Service]
|
||||
end
|
||||
|
||||
subgraph "业务服务"
|
||||
C[用户服务 User Service]
|
||||
D[认证服务 Auth Service]
|
||||
E[旅行服务 Travel Service]
|
||||
F[动物服务 Animal Service]
|
||||
G[订单服务 Order Service]
|
||||
H[推广服务 Promotion Service]
|
||||
end
|
||||
|
||||
subgraph "数据层"
|
||||
I[MySQL集群]
|
||||
J[Redis集群]
|
||||
K[消息队列 RabbitMQ]
|
||||
end
|
||||
|
||||
B --> A
|
||||
C --> A
|
||||
D --> A
|
||||
E --> A
|
||||
F --> A
|
||||
G --> A
|
||||
H --> A
|
||||
|
||||
B --> C
|
||||
B --> D
|
||||
B --> E
|
||||
B --> F
|
||||
B --> G
|
||||
B --> H
|
||||
|
||||
C --> I
|
||||
D --> I
|
||||
E --> I
|
||||
F --> I
|
||||
G --> I
|
||||
H --> I
|
||||
|
||||
C --> J
|
||||
E --> J
|
||||
F --> J
|
||||
|
||||
G --> K
|
||||
H --> K
|
||||
```
|
||||
|
||||
## 🗄️ 数据库设计
|
||||
|
||||
### 数据库架构
|
||||
|
||||
#### 主从复制架构
|
||||
```mermaid
|
||||
graph LR
|
||||
A[应用服务器] --> B[MySQL主库]
|
||||
B --> C[MySQL从库1]
|
||||
B --> D[MySQL从库2]
|
||||
A --> C
|
||||
A --> D
|
||||
```
|
||||
|
||||
#### 分库分表策略
|
||||
- **用户表**:按用户ID取模分表
|
||||
- **订单表**:按时间分表(月表)
|
||||
- **日志表**:按日期分表(日表)
|
||||
|
||||
### 核心表结构
|
||||
|
||||
#### 用户相关表
|
||||
```sql
|
||||
-- 用户基础信息表
|
||||
CREATE TABLE users (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
openid VARCHAR(100) UNIQUE NOT NULL COMMENT '微信openid',
|
||||
nickname VARCHAR(50) NOT NULL COMMENT '用户昵称',
|
||||
avatar VARCHAR(255) COMMENT '头像URL',
|
||||
gender ENUM('male', 'female', 'unknown') DEFAULT 'unknown',
|
||||
birthday DATE COMMENT '生日',
|
||||
phone VARCHAR(20) COMMENT '手机号',
|
||||
email VARCHAR(100) COMMENT '邮箱',
|
||||
travel_count INT DEFAULT 0 COMMENT '旅行次数',
|
||||
animal_claim_count INT DEFAULT 0 COMMENT '认领动物数量',
|
||||
status ENUM('active', 'inactive', 'banned') DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_openid (openid),
|
||||
INDEX idx_phone (phone),
|
||||
INDEX idx_status (status)
|
||||
);
|
||||
```
|
||||
|
||||
#### 旅行相关表
|
||||
```sql
|
||||
-- 旅行计划表
|
||||
CREATE TABLE travel_plans (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id INT NOT NULL,
|
||||
destination VARCHAR(100) NOT NULL COMMENT '目的地',
|
||||
start_date DATE NOT NULL COMMENT '开始日期',
|
||||
end_date DATE NOT NULL COMMENT '结束日期',
|
||||
budget DECIMAL(10,2) COMMENT '预算',
|
||||
interests TEXT COMMENT '兴趣偏好',
|
||||
description TEXT COMMENT '行程描述',
|
||||
visibility ENUM('public', 'friends', 'private') DEFAULT 'public',
|
||||
max_participants INT DEFAULT 4 COMMENT '最大参与人数',
|
||||
current_participants INT DEFAULT 1 COMMENT '当前参与人数',
|
||||
status ENUM('active', 'completed', 'cancelled') DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id),
|
||||
INDEX idx_destination (destination),
|
||||
INDEX idx_date_range (start_date, end_date),
|
||||
INDEX idx_status (status)
|
||||
);
|
||||
```
|
||||
|
||||
#### 动物认领表
|
||||
```sql
|
||||
-- 动物信息表
|
||||
CREATE TABLE animals (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
merchant_id INT NOT NULL,
|
||||
name VARCHAR(50) NOT NULL COMMENT '动物名称',
|
||||
type ENUM('cow', 'sheep', 'pig', 'chicken') NOT NULL COMMENT '动物类型',
|
||||
breed VARCHAR(50) COMMENT '品种',
|
||||
age INT COMMENT '年龄(月)',
|
||||
gender ENUM('male', 'female') COMMENT '性别',
|
||||
description TEXT COMMENT '动物描述',
|
||||
images JSON COMMENT '动物图片',
|
||||
price DECIMAL(10,2) NOT NULL COMMENT '认领价格',
|
||||
farm_location VARCHAR(100) COMMENT '农场位置',
|
||||
status ENUM('available', 'claimed', 'unavailable') DEFAULT 'available',
|
||||
claim_count INT DEFAULT 0 COMMENT '被认领次数',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (merchant_id) REFERENCES merchants(id),
|
||||
INDEX idx_type (type),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_price (price)
|
||||
);
|
||||
```
|
||||
|
||||
## 🔐 安全架构
|
||||
|
||||
### 认证授权机制
|
||||
|
||||
#### JWT Token认证
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant C as 客户端
|
||||
participant A as 认证服务
|
||||
participant S as 业务服务
|
||||
participant D as 数据库
|
||||
|
||||
C->>A: 微信登录请求
|
||||
A->>D: 验证用户信息
|
||||
D-->>A: 返回用户数据
|
||||
A-->>C: 返回JWT Token
|
||||
C->>S: 携带Token请求业务接口
|
||||
S->>S: 验证Token有效性
|
||||
S->>D: 查询业务数据
|
||||
D-->>S: 返回业务数据
|
||||
S-->>C: 返回业务响应
|
||||
```
|
||||
|
||||
#### 权限控制
|
||||
- **角色定义**:普通用户、商家用户、管理员
|
||||
- **权限粒度**:接口级权限控制
|
||||
- **权限验证**:中间件统一验证
|
||||
|
||||
### 数据安全
|
||||
|
||||
#### 数据加密
|
||||
- **传输加密**:HTTPS/TLS 1.3
|
||||
- **存储加密**:敏感数据AES-256加密
|
||||
- **密码加密**:bcrypt哈希算法
|
||||
|
||||
#### 数据脱敏
|
||||
- **手机号脱敏**:中间4位显示为*
|
||||
- **身份证脱敏**:中间部分显示为*
|
||||
- **银行卡脱敏**:只显示后4位
|
||||
|
||||
## 🚀 性能优化
|
||||
|
||||
### 缓存策略
|
||||
|
||||
#### Redis缓存设计
|
||||
```mermaid
|
||||
graph TB
|
||||
A[客户端请求] --> B{缓存命中?}
|
||||
B -->|是| C[返回缓存数据]
|
||||
B -->|否| D[查询数据库]
|
||||
D --> E[更新缓存]
|
||||
E --> F[返回数据]
|
||||
```
|
||||
|
||||
#### 缓存层级
|
||||
- **L1缓存**:应用内存缓存(Node.js内存)
|
||||
- **L2缓存**:Redis分布式缓存
|
||||
- **L3缓存**:CDN边缘缓存
|
||||
|
||||
### 数据库优化
|
||||
|
||||
#### 索引策略
|
||||
- **主键索引**:所有表必须有主键
|
||||
- **唯一索引**:唯一字段建立唯一索引
|
||||
- **复合索引**:多字段查询建立复合索引
|
||||
- **覆盖索引**:高频查询建立覆盖索引
|
||||
|
||||
#### 查询优化
|
||||
- **分页查询**:使用LIMIT + OFFSET
|
||||
- **批量操作**:使用批量插入/更新
|
||||
- **读写分离**:读操作走从库,写操作走主库
|
||||
|
||||
## 📊 监控运维
|
||||
|
||||
### 系统监控
|
||||
|
||||
#### 监控指标
|
||||
- **系统指标**:CPU、内存、磁盘、网络
|
||||
- **应用指标**:QPS、响应时间、错误率
|
||||
- **业务指标**:用户活跃度、订单量、收入
|
||||
|
||||
#### 监控工具
|
||||
- **系统监控**:Prometheus + Grafana
|
||||
- **应用监控**:APM工具
|
||||
- **日志监控**:ELK Stack
|
||||
|
||||
### 日志管理
|
||||
|
||||
#### 日志分类
|
||||
- **访问日志**:记录所有API请求
|
||||
- **错误日志**:记录系统异常和错误
|
||||
- **业务日志**:记录关键业务操作
|
||||
- **审计日志**:记录敏感操作
|
||||
|
||||
#### 日志格式
|
||||
```json
|
||||
{
|
||||
"timestamp": "2025-01-01T12:00:00.000Z",
|
||||
"level": "info",
|
||||
"service": "user-service",
|
||||
"traceId": "abc123",
|
||||
"userId": 1001,
|
||||
"action": "login",
|
||||
"message": "用户登录成功",
|
||||
"duration": 150,
|
||||
"ip": "192.168.1.100"
|
||||
}
|
||||
```
|
||||
|
||||
## 🔄 部署架构
|
||||
|
||||
### 容器化部署
|
||||
|
||||
#### Docker容器设计
|
||||
```dockerfile
|
||||
# Node.js应用容器
|
||||
FROM node:16-alpine
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN npm ci --only=production
|
||||
COPY . .
|
||||
EXPOSE 3000
|
||||
CMD ["npm", "start"]
|
||||
```
|
||||
|
||||
#### Docker Compose编排
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
|
||||
redis:
|
||||
image: redis:6-alpine
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
```
|
||||
|
||||
### 负载均衡
|
||||
|
||||
#### Nginx配置
|
||||
```nginx
|
||||
upstream backend {
|
||||
server app1:3000 weight=1;
|
||||
server app2:3000 weight=1;
|
||||
server app3:3000 weight=1;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name api.jiebanke.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://backend;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 📈 扩展性设计
|
||||
|
||||
### 水平扩展
|
||||
|
||||
#### 应用层扩展
|
||||
- **无状态设计**:应用服务无状态,支持水平扩展
|
||||
- **负载均衡**:通过负载均衡器分发请求
|
||||
- **自动扩缩容**:基于CPU/内存使用率自动扩缩容
|
||||
|
||||
#### 数据层扩展
|
||||
- **读写分离**:主库写入,从库读取
|
||||
- **分库分表**:按业务或数据量分库分表
|
||||
- **缓存集群**:Redis集群模式
|
||||
|
||||
### 垂直扩展
|
||||
|
||||
#### 服务拆分
|
||||
- **按业务拆分**:用户服务、订单服务、支付服务
|
||||
- **按功能拆分**:认证服务、通知服务、文件服务
|
||||
- **按数据拆分**:用户数据、业务数据、日志数据
|
||||
|
||||
## 🔮 技术演进规划
|
||||
|
||||
### 短期规划(3-6个月)
|
||||
- 完善监控告警系统
|
||||
- 优化数据库性能
|
||||
- 增强安全防护机制
|
||||
|
||||
### 中期规划(6-12个月)
|
||||
- 微服务架构改造
|
||||
- 引入消息队列
|
||||
- 实现服务治理
|
||||
|
||||
### 长期规划(1-2年)
|
||||
- 云原生架构转型
|
||||
- 大数据分析平台
|
||||
- AI智能推荐系统
|
||||
|
||||
---
|
||||
|
||||
*文档版本:v1.0*
|
||||
*最后更新:2025年1月*
|
||||
Reference in New Issue
Block a user