Files
16gagent/game-accelerator-tech-plan/02-整体系统架构设计.md

48 KiB
Raw Permalink Blame History

第二部分:整体系统架构设计

2.1 全局架构总览

┌─────────────────────────────────────────────────────────────────────────────────┐
│                              加速器系统全局架构                                   │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  ┌─────────────────────── 客户端层 ───────────────────────┐                     │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐  │                     │
│  │  │ Windows  │ │   Mac    │ │ Android  │ │   iOS    │  │                     │
│  │  │ Client   │ │ Client   │ │ Client   │ │ Client   │  │                     │
│  │  └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘  │                     │
│  │       └─────────────┴─────────────┴─────────────┘       │                     │
│  │                         │ HTTPS/WSS                     │                     │
│  └─────────────────────────┼───────────────────────────────┘                     │
│                            │                                                    │
│  ┌─────────────────────────┼──── API Gateway层 ───────────┐                     │
│  │                    ┌────┴────┐                          │                     │
│  │                    │ Nginx   │  (负载均衡/限流/WAF)      │                     │
│  │                    │ OpenResty│                         │                     │
│  │                    └────┬────┘                          │                     │
│  └─────────────────────────┼───────────────────────────────┘                     │
│                            │                                                    │
│  ┌─────────────────────────┼──── 微服务层 ────────────────┐                     │
│  │  ┌──────────┐ ┌────────┴───┐ ┌──────────┐ ┌────────┐  │                     │
│  │  │ 用户中心 │ │  订单中心   │ │ 会员中心 │ │ 风控   │  │                     │
│  │  │ User     │ │  Order     │ │ VIP      │ │ Risk   │  │                     │
│  │  └──────────┘ └────────────┘ └──────────┘ └────────┘  │                     │
│  │  ┌──────────┐ ┌────────────┐ ┌──────────┐ ┌────────┐  │                     │
│  │  │ 节点管理 │ │  调度中心   │ │ 游戏配置 │ │ 监控   │  │                     │
│  │  │ Node     │ │  Dispatch  │ │ Game     │ │ Monitor│  │                     │
│  │  └──────────┘ └────────────┘ └──────────┘ └────────┘  │                     │
│  │  ┌──────────┐ ┌────────────┐ ┌──────────┐             │                     │
│  │  │ 日志中心 │ │  通知中心   │ │ 配置中心 │             │                     │
│  │  │ Log      │ │  Notify    │ │ Config   │             │                     │
│  │  └──────────┘ └────────────┘ └──────────┘             │                     │
│  └────────────────────────────────────────────────────────┘                     │
│                            │                                                    │
│  ┌─────────────────────────┼──── 数据层 ──────────────────┐                     │
│  │  ┌──────┐ ┌──────┐ ┌───┴───┐ ┌──────┐ ┌──────────┐   │                     │
│  │  │MySQL │ │Redis │ │MongoDB│ │Kafka │ │ClickHouse│   │                     │
│  │  │主数据 │ │缓存  │ │日志   │ │消息  │ │分析      │   │                     │
│  │  └──────┘ └──────┘ └───────┘ └──────┘ └──────────┘   │                     │
│  └────────────────────────────────────────────────────────┘                     │
│                            │                                                    │
│  ┌─────────────────────────┼──── 加速网络层 ──────────────┐                     │
│  │  ┌──────────┐ ┌────────┴───┐ ┌──────────┐             │                     │
│  │  │ 接入节点 │ │  中转节点   │ │ 出口节点 │             │                     │
│  │  │ Access   │ │  Relay     │ │ Exit     │             │                     │
│  │  │ (200+)   │ │  (50+)     │ │ (100+)   │             │                     │
│  │  └──────────┘ └────────────┘ └──────────┘             │                     │
│  └────────────────────────────────────────────────────────┘                     │
│                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────┘

2.2 客户端模块设计

2.2.1 模块总览

┌─────────────────────────────────────────────────────────────────┐
│                      Windows 客户端架构                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    UI 层 (Electron/Tauri)                │   │
│  │  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐         │   │
│  │  │ 登录 │ │ 主页 │ │ 游戏 │ │ 加速 │ │ 设置 │         │   │
│  │  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘         │   │
│  └───────────────────────────┬─────────────────────────────┘   │
│                              │                                  │
│  ┌───────────────────────────┼──── 业务层 ─────────────────┐   │
│  │  ┌──────────┐ ┌──────────┼──────────┐ ┌──────────┐     │   │
│  │  │ 登录模块 │ │ 游戏识别 ││ 测速模块 │ │ 诊断模块 │     │   │
│  │  │ Auth     │ │ GameDetect│ SpeedTest │ │ Diagnose │     │   │
│  │  └──────────┘ └──────────┴──────────┘ └──────────┘     │   │
│  │  ┌──────────┐ ┌──────────────┐ ┌──────────┐           │   │
│  │  │ 自动更新 │ │ 崩溃上报     │ │ 数据统计 │           │   │
│  │  │ Updater  │ │ CrashReport  │ │ Analytics│           │   │
│  │  └──────────┘ └──────────────┘ └──────────┘           │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│  ┌───────────────────────────┼──── 核心层 ─────────────────┐   │
│  │  ┌──────────────────┐ ┌──┴────────────┐ ┌───────────┐  │   │
│  │  │ 流量捕获模块     │ │ 隧道模块      │ │ 路由模块  │  │   │
│  │  │ TrafficCapture   │ │ Tunnel        │ │ Router    │  │   │
│  │  │ (WFP/WinDivert)  │ │ (UDP/QUIC)   │ │ (Smart)   │  │   │
│  │  └──────────────────┘ └───────────────┘ └───────────┘  │   │
│  │  ┌──────────────────┐ ┌───────────────┐ ┌───────────┐  │   │
│  │  │ 协议识别模块     │ │ 加密模块      │ │ 压缩模块  │  │   │
│  │  │ ProtocolDetect   │ │ Crypto        │ │ Compress  │  │   │
│  │  └──────────────────┘ └───────────────┘ └───────────┘  │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│  ┌───────────────────────────┼──── 驱动层 ─────────────────┐   │
│  │  ┌──────────────────────────────────────────────────┐   │   │
│  │  │              WFP Callout Driver                   │   │   │
│  │  │         (Windows Filtering Platform)              │   │   │
│  │  └──────────────────────────────────────────────────┘   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

2.2.2 各模块详细设计

模块1:登录模块(Auth Module

职责:
- 用户注册/登录(手机号/邮箱/第三方OAuth
- Token管理(JWT Access Token + Refresh Token
- 设备绑定与管理
- 多设备限制(防共享账号)
- 自动登录与Token刷新

技术实现:
┌──────────┐     ┌──────────┐     ┌──────────┐
│ 登录页面 │────→│ Auth API │────→│ 用户中心 │
└──────────┘     └──────────┘     └──────────┘
     │                │                 │
     │           ┌────┴────┐      ┌────┴────┐
     │           │ JWT签发 │      │ Redis   │
     │           │ RS256   │      │ Session │
     │           └─────────┘      └─────────┘
     │
     └──→ 本地存储加密TokenKeychain/DPAPI

数据流:
1. 用户输入凭证 → HTTPS POST /api/v1/auth/login
2. 服务端验证 → 签发JWT(有效期2h+ Refresh Token(有效期30d
3. 客户端存储Token → 后续请求自动携带Authorization头
4. Token过期 → 使用Refresh Token自动刷新
5. Refresh Token过期 → 重新登录

模块2:游戏识别模块(Game Detection Module

职责:
- 自动识别已安装游戏
- 匹配游戏配置(服务器地址、端口、协议)
- 支持手动添加游戏
- 游戏版本检测

技术实现:
┌──────────────────────────────────────────────────────────┐
│                    游戏识别流程                            │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  方式1:进程名匹配                                        │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐           │
│  │ 进程快照 │───→│ 进程名   │───→│ 匹配游戏 │           │
│  │ CreateTool│    │ 比对     │    │ 配置库   │           │
│  │ Snapshot  │    │          │    │          │           │
│  └──────────┘    └──────────┘    └──────────┘           │
│                                                          │
│  方式2:注册表扫描                                        │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐           │
│  │ 注册表   │───→│ 安装路径 │───→│ EXE信息  │           │
│  │ HKLM\...\│    │ 提取     │    │ 匹配     │           │
│  │ Uninstall │    │          │    │          │           │
│  └──────────┘    └──────────┘    └──────────┘           │
│                                                          │
│  方式3:Steam库扫描                                       │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐           │
│  │ Steam    │───→│ appinfo  │───→│ 游戏列表 │           │
│  │ library  │    │ .vdf解析 │    │ 匹配     │           │
│  │folders   │    │          │    │          │           │
│  └──────────┘    └──────────┘    └──────────┘           │
│                                                          │
│  游戏配置数据库结构 (GameConfig):                         │
│  {                                                       │
│    "game_id": "genshin_impact",                          │
│    "name": "原神",                                        │
│    "process_names": ["GenshinImpact.exe", "YuanShen.exe"],│
│    "servers": [                                          │
│      {                                                   │
│        "name": "亚服",                                    │
│        "ip_ranges": ["47.245.0.0/16"],                   │
│        "ports": [443, 80, 22102],                        │
│        "protocol": "tcp+udp",                            │
│        "region": "asia"                                  │
│      }                                                   │
│    ],                                                    │
│    "capture_mode": "process",                            │
│    "tunnel_mode": "udp_relay"                            │
│  }                                                       │
│                                                          │
└──────────────────────────────────────────────────────────┘

模块3:流量捕获模块(Traffic Capture Module

职责:
- 捕获指定游戏进程的网络流量
- 区分游戏流量和非游戏流量
- 支持TCP和UDP流量
- 零拷贝转发(性能优化)

技术实现(Windows):

方案对比:
┌──────────────┬────────────┬────────────┬───────────┬──────────┐
│ 方案         │ 兼容性     │ 性能       │ 稳定性    │ 推荐度   │
├──────────────┼────────────┼────────────┼───────────┼──────────┤
│ WFP          │ Win7+      │ 高         │ 高        │ ★★★★★   │
│ WinDivert    │ Win7+      │ 中高       │ 中高      │ ★★★★    │
│ TUN/TAP      │ 全平台     │ 中         │ 中        │ ★★★     │
│ NDIS Filter  │ Win7+      │ 高         │ 中        │ ★★★     │
│ LSP/WFP      │ Win7+      │ 中         │ 低        │ ★★      │
└──────────────┴────────────┴────────────┴───────────┴──────────┘

推荐方案:WFP (Windows Filtering Platform)
原因:
1. 微软官方支持,稳定性最高
2. 内核态过滤,性能最好
3. 支持按进程过滤
4. 支持Win7-Win11全系列

WFP架构:
┌─────────────────────────────────────────────────────────┐
│                    用户态 (Ring 3)                        │
│  ┌─────────────────────────────────────────────────┐    │
│  │              加速器客户端进程                     │    │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐      │    │
│  │  │ 流量管理 │  │ 隧道封装 │  │ 策略引擎 │      │    │
│  │  └──────────┘  └──────────┘  └──────────┘      │    │
│  └──────────────────────────┬──────────────────────┘    │
│                             │ IOCTL                     │
├─────────────────────────────┼───────────────────────────┤
│                    内核态 (Ring 0)                        │
│  ┌──────────────────────────┴──────────────────────┐    │
│  │              WFP Callout Driver                  │    │
│  │  ┌──────────────────────────────────────────┐   │    │
│  │  │  ALE Layer (Application Layer Enforcement)│   │    │
│  │  │  - ALE_AUTH_CONNECT_V4                    │   │    │
│  │  │  - ALE_AUTH_RECV_ACCEPT_V4                │   │    │
│  │  │  ↓ 按进程PID过滤                          │   │    │
│  │  │  ↓ 按目标IP/端口过滤                      │   │    │
│  │  │  ↓ 决定:放行/拦截/重定向                  │   │    │
│  │  └──────────────────────────────────────────┘   │    │
│  │  ┌──────────────────────────────────────────┐   │    │
│  │  │  Transport Layer                          │   │    │
│  │  │  - FWPM_LAYER_OUTBOUND_TRANSPORT_V4      │   │    │
│  │  │  - FWPM_LAYER_INBOUND_TRANSPORT_V4       │   │    │
│  │  │  ↓ 数据包级别的过滤和修改                  │   │    │
│  │  └──────────────────────────────────────────┘   │    │
│  └─────────────────────────────────────────────────┘    │
│                                                         │
└─────────────────────────────────────────────────────────┘

模块4:隧道模块(Tunnel Module

职责:
- 封装游戏流量为隧道协议
- 加密传输(防止DPI检测和中间人攻击)
- 多节点间中转
- 协议自适应(根据网络状况选择最优协议)

技术实现:
┌──────────────────────────────────────────────────────────┐
│                    隧道协议栈                              │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  ┌────────────────────────────────────────────────────┐  │
│  │  Layer 5: 应用层                                    │  │
│  │  ┌──────────────────────────────────────────────┐  │  │
│  │  │  游戏原始数据                                  │  │  │
│  │  └──────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────┘  │
│                         ↓                                │
│  ┌────────────────────────────────────────────────────┐  │
│  │  Layer 4: 隧道封装层                                │  │
│  │  ┌──────────────────────────────────────────────┐  │  │
│  │  │  隧道头 | 序列号 | 时间戳 | 校验和 | 原始数据 │  │  │
│  │  └──────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────┘  │
│                         ↓                                │
│  ┌────────────────────────────────────────────────────┐  │
│  │  Layer 3: 加密层                                    │  │
│  │  ┌──────────────────────────────────────────────┐  │  │
│  │  │  AES-256-GCM / ChaCha20-Poly1305            │  │  │
│  │  └──────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────┘  │
│                         ↓                                │
│  ┌────────────────────────────────────────────────────┐  │
│  │  Layer 2: 传输层                                    │  │
│  │  ┌──────────────────────────────────────────────┐  │  │
│  │  │  UDP Relay / QUIC / KCP / 自定义协议          │  │  │
│  │  └──────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────┘  │
│                         ↓                                │
│  ┌────────────────────────────────────────────────────┐  │
│  │  Layer 1: 网络层                                    │  │
│  │  ┌──────────────────────────────────────────────┐  │  │
│  │  │  IP / IPv4 / IPv6                             │  │  │
│  │  └──────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────┘  │
│                                                          │
└──────────────────────────────────────────────────────────┘

模块5:测速模块(Speed Test Module

职责:
- 测试到各节点的延迟、丢包、抖动
- 测试带宽
- 节点评分
- 历史数据存储

技术实现:
┌──────────────────────────────────────────────────────────┐
│                    测速算法设计                            │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  1. 延迟测试(RTT)                                       │
│     - 发送UDP探测包,记录往返时间                         │
│     - 连续发送10个包,取中位数(去除异常值)              │
│     - 每30秒更新一次                                      │
│                                                          │
│  2. 丢包率测试                                            │
│     - 发送20个UDP包,统计未收到回复的数量                 │
│     - 丢包率 = 未回复数 / 总发送数                        │
│     - 连续3轮测试取平均值                                 │
│                                                          │
│  3. 抖动测试(Jitter                                    │
│     - Jitter = Σ|RTTi - RTTi-1| / (N-1)                  │
│     - 连续10个包的RTT标准差                               │
│                                                          │
│  4. 带宽测试                                              │
│     - 发送递增大小的数据包                                │
│     - 测量吞吐量上限                                      │
│     - TCP + UDP分别测试                                   │
│                                                          │
│  5. 综合评分公式                                          │
│     Score = 100                                           │
│     - RTT扣分:   max(0, (RTT - 30) × 0.5)                │
│     - Loss扣分:  Loss × 200                              │
│     - Jitter扣分: Jitter × 2                             │
│     Score = max(0, Score)                                │
│                                                          │
│  评分等级:                                                │
│  90-100: 极佳(绿色)                                     │
│  70-89:  良好(黄色)                                     │
│  50-69:  一般(橙色)                                     │
│  <50:    较差(红色)                                     │
│                                                          │
└──────────────────────────────────────────────────────────┘

模块6:诊断模块(Diagnostic Module

职责:
- 网络环境诊断
- 加速效果诊断
- 问题排查与上报
- 一键诊断报告生成

诊断项:
┌────────────────┬──────────────────────────────────────┐
│ 诊断项         │ 说明                                  │
├────────────────┼──────────────────────────────────────┤
│ DNS解析        │ 检测DNS是否正常,是否被污染           │
│ 网络连通性     │ Ping测试各节点可达性                  │
│ 路由追踪       │ Traceroute分析路由路径                │
│ 端口检测       │ 检测游戏所需端口是否可达              │
│ MTU检测        │ 检测最大传输单元,避免分片            │
│ NAT类型        │ 检测NAT类型(影响P2P游戏)            │
│ 防火墙         │ 检测防火墙是否阻止游戏流量            │
│ 驱动状态       │ 检测WFP驱动是否正常加载              │
│ 系统兼容性     │ 检测操作系统版本兼容性                │
└────────────────┴──────────────────────────────────────┘

模块7:自动更新模块(Updater Module

职责:
- 增量更新(只下载变化的部分)
- 静默更新(后台自动完成)
- 回滚机制(更新失败可回退)
- 灰度发布

技术实现:
┌──────────────────────────────────────────────────────────┐
│                    自动更新流程                            │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐           │
│  │ 检查更新 │───→│ 下载差异 │───→│ 校验文件 │           │
│  │ GET /api │    │ bsdiff   │    │ SHA256   │           │
│  │ /version │    │ 增量包   │    │ 签名验证 │           │
│  └──────────┘    └──────────┘    └──────────┘           │
│       │                                  │               │
│       │              ┌───────────────────┘               │
│       │              ↓                                   │
│       │         ┌──────────┐    ┌──────────┐            │
│       │         │ 备份当前 │───→│ 应用更新 │            │
│       │         │ 版本     │    │ 替换文件 │            │
│       │         └──────────┘    └──────────┘            │
│       │                              │                   │
│       │              ┌───────────────┘                   │
│       │              ↓                                   │
│       │         ┌──────────┐    ┌──────────┐            │
│       │         │ 验证更新 │───→│ 重启应用 │            │
│       │         │ 启动测试 │    │ 完成更新 │            │
│       │         └──────────┘    └──────────┘            │
│       │                                                  │
│       │         更新失败?→ 回滚到备份版本               │
│                                                          │
└──────────────────────────────────────────────────────────┘

模块8:崩溃上报模块(Crash Report Module

职责:
- 捕获未处理异常
- 生成MiniDump文件
- 收集系统环境信息
- 上传崩溃报告

技术实现:
- Windows: SetUnhandledExceptionFilter + MiniDumpWriteDump
- 收集信息:CPU/内存/磁盘/网络/驱动版本/系统版本
- 上传:压缩后HTTPS上传到崩溃收集服务
- 分析:服务端自动符号解析,生成可读堆栈

2.3 服务端微服务架构

2.3.1 服务关系图

┌─────────────────────────────────────────────────────────────────────────┐
│                        微服务架构关系图                                   │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│                         ┌──────────────┐                                │
│                         │ API Gateway  │                                │
│                         │ (OpenResty)  │                                │
│                         └──────┬───────┘                                │
│                                │                                        │
│         ┌──────────┬──────────┼──────────┬──────────┐                  │
│         ↓          ↓          ↓          ↓          ↓                  │
│  ┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐        │
│  │ 用户中心 ││ 订单中心 ││ 节点管理 ││ 调度中心 ││ 游戏配置 │        │
│  │          ││          ││          ││          ││          │        │
│  │ - 注册   ││ - 创建   ││ - 节点   ││ - 路由   ││ - 游戏   │        │
│  │ - 登录   ││  订单    ││  注册    ││  决策    ││  列表    │        │
│  │ - Token  ││ - 支付   ││ - 健康   ││ - 负载   ││ - 服务器 │        │
│  │ - 设备   ││ - 退款   ││  检查    ││  均衡    ││  配置    │        │
│  │ - 会员   ││ - 续费   ││ - 节点   ││ - 智能   ││ - 版本   │        │
│  │          ││          ││  发现    ││  选路    ││  更新    │        │
│  └────┬─────┘└────┬─────┘└────┬─────┘└────┬─────┘└────┬─────┘        │
│       │           │           │           │           │                │
│       └───────────┴───────────┴─────┬─────┴───────────┘                │
│                                     │                                  │
│         ┌──────────┬────────────────┼──────────┬──────────┐           │
│         ↓          ↓                ↓          ↓          ↓           │
│  ┌──────────┐┌──────────┐   ┌──────────┐┌──────────┐┌──────────┐    │
│  │ 监控中心 ││ 风控中心 │   │ 日志中心 ││ 通知中心 ││ 配置中心 │    │
│  │          ││          │   │          ││          ││          │    │
│  │ - 指标   ││ - 异常   │   │ - 日志   ││ - 推送   ││ - 动态   │    │
│  │  采集   ││  检测    │   │  收集    ││ - 短信   ││  配置    │    │
│  │ - 告警   ││ - 频控   │   │ - 分析   ││ - 邮件   ││ - 灰度   │    │
│  │ - 面板   ││ - 黑名单 │   │ - 存储   ││ - 站内信 ││ - 版本   │    │
│  └──────────┘└──────────┘   └──────────┘└──────────┘└──────────┘    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

2.3.2 各服务详细设计

用户中心(User Service

职责:
- 用户注册、登录、注销
- Token签发与验证
- 设备绑定与管理
- 会员状态管理
- 用户信息CRUD

接口设计:
POST   /api/v1/auth/register          # 注册
POST   /api/v1/auth/login             # 登录
POST   /api/v1/auth/logout            # 登出
POST   /api/v1/auth/refresh           # 刷新Token
GET    /api/v1/user/profile           # 获取用户信息
PUT    /api/v1/user/profile           # 更新用户信息
POST   /api/v1/user/bindDevice        # 绑定设备
DELETE /api/v1/user/unbindDevice      # 解绑设备
GET    /api/v1/user/devices           # 设备列表
POST   /api/v1/user/changePassword    # 修改密码
POST   /api/v1/user/resetPassword     # 重置密码

技术栈:
- Go (Gin框架)
- MySQL (用户数据)
- Redis (Session/Token缓存)
- gRPC (服务间通信)

订单中心(Order Service

职责:
- 订单创建与管理
- 支付对接(支付宝/微信/Apple Pay)
- 退款处理
- 订单统计

接口设计:
POST   /api/v1/order/create           # 创建订单
GET    /api/v1/order/{id}             # 查询订单
GET    /api/v1/order/list             # 订单列表
POST   /api/v1/order/pay              # 发起支付
POST   /api/v1/order/callback         # 支付回调
POST   /api/v1/order/refund           # 申请退款
GET    /api/v1/order/statistics       # 订单统计

支付流程:
┌────────┐    ┌────────┐    ┌────────┐    ┌────────┐
│ 创建   │───→│ 支付   │───→│ 回调   │───→│ 激活   │
│ 订单   │    │ 请求   │    │ 验签   │    │ 会员   │
└────────┘    └────────┘    └────────┘    └────────┘
     │              │              │              │
  MySQL         支付宝/        异步通知        更新用户
  订单表        微信支付       验证签名        会员状态

节点管理(Node Service

职责:
- 节点注册与发现
- 节点健康检查
- 节点配置下发
- 节点状态监控

节点数据结构:
{
  "node_id": "cn-bj-01",
  "name": "北京BGP节点01",
  "region": "china",
  "city": "beijing",
  "isp": ["unicom", "telecom", "mobile"],
  "ip": "103.x.x.1",
  "port": 8000,
  "capacity": 10000,
  "current_load": 3500,
  "status": "online",
  "quality_score": 95,
  "bandwidth_mbps": 10000,
  "location": {"lat": 39.9042, "lng": 116.4074}
}

健康检查机制:
┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│ 心跳上报 │───→│ 状态检查 │───→│ 质量探测 │───→│ 告警决策 │
│ 每10秒   │    │ CPU/内存 │    │ Ping/丢包│    │ 自动摘除 │
│ UDP心跳  │    │ 带宽/连接│    │ 延迟/抖动│    │ 通知运维 │
└──────────┘    └──────────┘    └──────────┘    └──────────┘

调度中心(Dispatch Service

职责:
- 智能选路(为用户选择最优节点)
- 负载均衡
- 链路质量监控
- 路由策略管理

调度流程:
┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│ 用户请求 │───→│ 节点筛选 │───→│ 质量评分 │───→│ 最优选择 │
│ 加速游戏 │    │ 区域匹配 │    │ 多维权重 │    │ 返回节点 │
│          │    │ 负载过滤 │    │ 计算排序 │    │          │
└──────────┘    └──────────┘    └──────────┘    └──────────┘

评分算法:
Score(i) = α × (1 / RTT_i) + β × (1 - Loss_i) + γ × (1 / Jitter_i) + δ × (1 - Load_i)

其中:
- α = 0.4(延迟权重)
- β = 0.3(丢包权重)
- γ = 0.2(抖动权重)
- δ = 0.1(负载权重)

约束条件:
- RTT_i < 100ms
- Loss_i < 5%
- Load_i < 80%
- 节点支持该游戏

2.4 API设计规范

2.4.1 RESTful API规范

基础规范:
- 基础URL: https://api.accelerator.com/v1
- 认证方式: Bearer Token (JWT)
- 数据格式: JSON
- 编码: UTF-8
- 时间格式: ISO 8601 (UTC)

响应格式:
{
  "code": 0,           // 0=成功, 非0=错误码
  "message": "success", // 错误描述
  "data": {},           // 业务数据
  "timestamp": 1717651200, // 时间戳
  "request_id": "uuid"  // 请求追踪ID
}

错误码设计:
┌──────────┬────────────────────────────────┐
│ 错误码   │ 说明                           │
├──────────┼────────────────────────────────┤
│ 0        │ 成功                           │
│ 1001     │ 参数错误                       │
│ 1002     │ 未登录                         │
│ 1003     │ Token过期                      │
│ 1004     │ 无权限                         │
│ 2001     │ 用户不存在                     │
│ 2002     │ 密码错误                       │
│ 2003     │ 设备已达上限                   │
│ 3001     │ 订单不存在                     │
│ 3002     │ 支付失败                       │
│ 4001     │ 节点不可用                     │
│ 4002     │ 无可用节点                     │
│ 5001     │ 服务器内部错误                 │
└──────────┴────────────────────────────────┘

2.4.2 gRPC服务定义

// 用户服务
service UserService {
  rpc Login(LoginRequest) returns (LoginResponse);
  rpc GetProfile(GetProfileRequest) returns (UserProfile);
  rpc UpdateProfile(UpdateProfileRequest) returns (UserProfile);
  rpc BindDevice(BindDeviceRequest) returns (BindDeviceResponse);
}

// 调度服务
service DispatchService {
  rpc GetBestNode(DispatchRequest) returns (NodeInfo);
  rpc ReportQuality(QualityReport) returns (QualityReportResponse);
  rpc GetNodeList(NodeListRequest) returns (NodeListResponse);
}

// 节点服务
service NodeService {
  rpc RegisterNode(NodeRegisterRequest) returns (NodeRegisterResponse);
  rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse);
  rpc GetNodeStatus(NodeStatusRequest) returns (NodeStatus);
}