§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 接口规范

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 认证授权

10.4.2 防护措施

威胁 防护措施
SQL注入 参数化查询,ORM框架
XSS攻击 输入过滤,输出编码
CSRF攻击 Token验证,SameSite Cookie
重放攻击 请求签名+时间戳
暴力破解 登录失败锁定+验证码
敏感数据 加密存储,脱敏展示