§10 技术方案
Technical Architecture
系统架构、技术选型与接口设计
10.1 架构设计
10.1.1 整体架构
系统架构图
graph TB
subgraph 客户端层
A[Web端
React/Vue]
B[App端
Flutter/RN]
C[小程序
原生]
end
subgraph 网关层
D[负载均衡
Nginx/ALB]
E[API网关
Kong/Spring Gateway]
F[CDN
阿里云/腾讯云]
end
subgraph 服务层
G[用户服务]
H[内容服务]
I[订单服务]
J[消息服务]
K[搜索服务]
end
subgraph 数据层
L[MySQL
主从集群]
M[Redis
缓存集群]
N[Elasticsearch
搜索引擎]
O[OSS
对象存储]
end
A --> D
B --> D
C --> D
D --> E
E --> G
E --> H
E --> I
E --> J
E --> K
G --> L
G --> M
H --> L
H --> N
I --> L
J --> M
K --> N
G --> O
10.1.2 技术选型
| 层级 |
技术 |
版本 |
选型理由 |
| 前端框架 |
【React/Vue】 |
【v18/v3】 |
【生态成熟,团队熟悉】 |
| 移动端 |
【Flutter/RN/原生】 |
【-】 |
【跨平台/性能需求】 |
| 后端框架 |
【Spring Boot/Go】 |
【v3.x】 |
【成熟稳定,性能优秀】 |
| 数据库 |
MySQL |
8.0 |
关系型数据,事务支持 |
| 缓存 |
Redis |
7.x |
高性能缓存,支持多种数据结构 |
| 消息队列 |
RabbitMQ/RocketMQ |
【-】 |
异步解耦,削峰填谷 |
| 搜索引擎 |
Elasticsearch |
8.x |
全文搜索,聚合分析 |
| 对象存储 |
阿里云OSS/AWS S3 |
- |
海量存储,CDN加速 |
10.2 接口设计
10.2.1 接口规范
- 协议:HTTPS
- 格式:JSON
- 编码:UTF-8
- 版本:v1(路径中体现,如 /api/v1/)
- 认证:JWT Token(Header: Authorization: Bearer {token})
- 时间戳:毫秒级时间戳
10.2.2 统一响应格式
{
"code": 0, // 业务码,0表示成功
"message": "success", // 提示信息
"data": {}, // 业务数据
"timestamp": 1234567890123, // 时间戳
"requestId": "uuid" // 请求追踪ID
}
10.2.3 核心接口清单
| 接口 |
方法 |
路径 |
说明 |
| 用户注册 |
POST |
/api/v1/auth/register |
手机号+验证码注册 |
| 用户登录 |
POST |
/api/v1/auth/login |
密码/验证码登录 |
| 获取用户信息 |
GET |
/api/v1/user/profile |
获取当前登录用户信息 |
| 更新用户信息 |
PUT |
/api/v1/user/profile |
更新用户资料 |
| 内容列表 |
GET |
/api/v1/content/list |
分页获取内容列表 |
| 内容详情 |
GET |
/api/v1/content/{id} |
获取内容详情 |
| 文件上传 |
POST |
/api/v1/file/upload |
通用文件上传接口 |
10.2.4 接口示例
用户登录接口
| 属性 |
说明 |
| 接口路径 |
POST /api/v1/auth/login |
| 请求参数 |
{
"account": "13800138000",
"password": "xxxxxx",
"captcha": "1234"
}
|
| 成功响应 |
{
"code": 0,
"message": "success",
"data": {
"accessToken": "eyJhbG...",
"refreshToken": "eyJhbG...",
"expiresIn": 604800,
"user": {
"id": 12345,
"nickname": "张三",
"avatar": "https://..."
}
}
}
|
| 错误响应 |
{
"code": 1001,
"message": "账号或密码错误"
}
|
10.3 部署方案
10.3.1 环境规划
| 环境 |
用途 |
配置 |
域名 |
| 开发环境 |
日常开发调试 |
单机部署 |
dev-api.example.com |
| 测试环境 |
功能/集成测试 |
与生产同构 |
test-api.example.com |
| 预发布 |
上线前验证 |
与生产同构 |
staging-api.example.com |
| 生产环境 |
正式服务 |
高可用集群 |
api.example.com |
10.3.2 服务器配置
| 角色 |
配置 |
数量 |
说明 |
| Web服务器 |
4C8G |
2 |
Nginx反向代理 |
| 应用服务器 |
8C16G |
4 |
业务服务部署 |
| 数据库 |
8C32G |
2 |
主从架构 |
| 缓存 |
4C8G |
3 |
Redis集群 |
10.3.3 CI/CD流程
发布流程
flowchart LR
A[代码提交] --> B[单元测试]
B --> C[代码扫描]
C --> D[构建镜像]
D --> E[部署测试]
E --> F[集成测试]
F --> G[人工审核]
G --> H[部署生产]
H --> I[健康检查]
I --> J[流量切换]
10.4 安全设计
10.4.1 认证授权
- JWT Token:包含用户ID、角色、过期时间
- Token有效期:Access Token 7天,Refresh Token 30天
- 权限控制:RBAC模型,接口级别鉴权
10.4.2 防护措施
| 威胁 |
防护措施 |
| SQL注入 |
参数化查询,ORM框架 |
| XSS攻击 |
输入过滤,输出编码 |
| CSRF攻击 |
Token验证,SameSite Cookie |
| 重放攻击 |
请求签名+时间戳 |
| 暴力破解 |
登录失败锁定+验证码 |
| 敏感数据 |
加密存储,脱敏展示 |