📄 docs: 添加游戏加速器完整技术方案(14部分)

This commit is contained in:
大海
2026-06-06 11:46:01 +08:00
parent a188ee1426
commit b87cac57ce
14 changed files with 5422 additions and 0 deletions
@@ -0,0 +1,673 @@
# 第二部分:整体系统架构设计
## 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服务定义
```protobuf
// 用户服务
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);
}
```