Apollo 技术文档Apollo 技术文档
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
  • MMORPG 架构 QA

Q117: 如果已经掌握 MMO 基础问题,接下来还应该继续思考哪些深入问题?

核心结论

掌握基础概念并不等于真正掌握 MMO 架构。

继续深入时,重点通常不在“再背更多名词”,而在于把基础概念推进到四个更高层次:

  • 能讲完整时序
  • 能讲清故障收敛
  • 能说明工程取舍
  • 能落到线上运维和容量判断

如果前面的基础文档更多回答的是“这是什么”,那这一篇更关注“系统在真实环境里到底怎么跑、怎么坏、怎么恢复、为什么这样取舍”。

一、从概念理解走向系统时序

很多架构讨论停留在组件职责层面,例如:

  • Login 做登录
  • Gateway 管连接
  • Base 管会话
  • Cell 管场景

这类理解只能算第一层。

继续深入时,应该能把完整链路讲成时序:

  • 玩家登录时 token 在哪一跳生成和校验
  • 玩家进入场景时 Base 和 Cell 谁先建立关联
  • 地图切换时哪些状态迁移、哪些状态重建
  • 重连时客户端恢复到哪个权威状态

真正成熟的理解,不是知道“有哪些组件”,而是知道“消息如何流转,状态在哪一步变更,异常在哪一步会出问题”。

二、从正常路径走向故障路径

系统设计真正拉开差距的,往往不是正常链路,而是异常链路。

例如:

  • 某个 CellApp 宕机时,战斗态、交易态、背包态怎么分别处理
  • 交易做到一半,扣款成功但日志失败,系统如何收敛
  • 跨服流程部分成功时,旧状态和新状态谁是权威
  • 数据已经推给客户端,但数据库还没提交,之后失败了怎么办

这些问题的本质都是:

  • 谁是权威源
  • 哪些操作必须幂等
  • 哪些副作用可以补偿
  • 哪些状态必须回滚,哪些只能向前修复

如果只能讲正常路径,说明理解还停留在“功能设计”层,而没有进入“线上系统”层。

三、从方案罗列走向取舍判断

很多技术讨论容易陷入“为什么不用更高级的方案”。

继续深入时,真正需要具备的是取舍能力,例如:

  • 为什么大世界主体通常不用全局帧同步
  • 为什么有些模块适合 Actor,有些模块不适合
  • 为什么某些链路选择最终一致而不是强一致
  • 为什么有些高频链路必须同步校验,有些链路可以异步落库

这里最重要的不是答案站队,而是能不能讲出:

  • 方案收益
  • 方案代价
  • 适用边界
  • 规模扩大后是否仍成立

如果回答永远只有“这个方案性能更高”“那个方案更先进”,通常说明还没有真正建立工程判断框架。

四、从功能实现走向线上观测

真正成熟的系统设计,不能只停在“功能能跑通”。

还需要继续思考:

  • 线上应该监控哪些核心业务指标
  • 如何判断系统瓶颈先出在哪
  • 技能延迟、广播堆积、锁竞争、数据库抖动如何定位
  • 压测应该如何构造真实负载,而不是只压空连接

例如一个 MMO 服务端,真正有价值的指标往往不只是 CPU 和内存,还包括:

  • 在线人数分布
  • 场景人数分布
  • 平均 AOI 邻居数
  • 单条消息广播扇出
  • 技能处理延迟
  • 交易失败率
  • 副本创建成功率

这些指标比单纯机器指标更能说明系统是否健康。

五、从单模块理解走向跨模块联动

基础阶段往往按模块学习:

  • AOI
  • 同步
  • 交易
  • 拍卖
  • 副本

但真正深入时,需要开始思考它们是如何互相影响的。

例如:

  • 延迟补偿会影响战斗和技能表现边界
  • Ghost / Shadow 会影响 AOI 和迁移设计
  • 交易和背包共享同一套资产一致性要求
  • 副本、匹配和场景管理本质上是同一条会话调度链的不同阶段

如果模块之间还是彼此孤立,就说明理解还没有从“知识点集合”升级成“系统整体”。

六、继续深入时最值得补的几个方向

1. 时序图能力

至少能把这些流程画完整:

  • 登录到进场景
  • 地图切换
  • 断线重连
  • 交易提交流程
  • 副本创建与结算

2. 故障收敛能力

至少能回答:

  • 某节点宕机会丢什么
  • 哪些状态可恢复,哪些只能放弃
  • 超时、重试、重复执行如何防双写

3. 一致性边界能力

至少能区分:

  • 权威状态
  • 缓存状态
  • 显示状态
  • 可补偿状态

4. 容量与观测能力

至少能回答:

  • 为什么单服 5000 人不是一个纯网络问题
  • 哪类场景最容易先爆
  • 压测如何贴近真实行为
  • 指标应该怎么设计

七、如果要把深入理解落成一套自检清单

可以用下面四组问题检查自己是否真的掌握了系统:

1. 我能不能画出完整时序

如果只能说组件职责,不能画状态变化和消息顺序,说明理解还不够深入。

2. 我能不能说明异常路径

如果只能讲“成功时怎样”,但讲不清“中途失败怎么办”,说明还没有进入线上系统视角。

3. 我能不能说明为什么这样选

如果只能说“这个方案常见”或“这个方案高级”,而不能说明代价和边界,说明还缺少工程取舍能力。

4. 我能不能说明怎么观测和怎么查问题

如果设计讲得很好,但一问线上怎么看、故障怎么排,就答不上来,说明还停留在设计图层面。

八、总结

基础知识更多解决的是“知道这是什么”,而继续深入要解决的是:

  • 系统如何按时序运转
  • 异常时如何收敛
  • 方案为什么这样取舍
  • 线上如何观测、验证和扩展

如果这些问题都能讲清楚,通常才算从“理解架构名词”走到了“真正能驾驭线上 MMO 系统”。

在 GitHub 上编辑此页
最后更新: 3/20/26, 6:06 AM
贡献者: cuihairu