# 第二部分:整体系统架构设计 ## 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 │ │ └─────────┘ └─────────┘ │ └──→ 本地存储加密Token(Keychain/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); } ```