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

本文档是 MMORPG 服务器架构相关问题的索引目录,每个问题都有独立的详细解答文档。

一、架构设计篇

#问题状态链接
1请画出你熟悉的 MMORPG 服务器架构图,说明各组件的职责和通信方式✅q1-server-architecture.md
2BigWorld 架构中的 CellApp 和 BaseApp 分别负责什么?为什么这样分离?✅q2-bigworld-cell-base.md
3什么是 AOI(Area of Interest)?有哪些实现方式?各有什么优缺点?✅q3-aoi-implementation.md
4如何实现大地图的无缝切换?如何处理跨服务器的玩家移动?✅q4-seamless-world.md
5服务端如何设计才能支持动态扩容?✅q5-dynamic-scaling.md
6单服架构 vs 分布式架构,如何选择?✅q6-single-vs-distributed.md
7进程内架构 vs 多进程架构,各有什么优劣?✅q7-process-architecture.md
8如何设计才能避免单点故障?✅q8-avoid-spof.md
9CellAppMgr 如果宕机了怎么办?有哪些解决方案?✅q9-cellappmgr-failure.md
10如何实现跨服功能(如跨服战场、跨服聊天)?✅q10-cross-server.md

二、网络通信篇

#问题状态链接
11TCP vs UDP vs KCP,MMO 中各自的使用场景是什么?✅q11-transport-protocol.md
12如何处理网络抖动和丢包?✅q12-network-jitter.md
13什么是可靠 UDP?如何实现?✅q13-reliable-udp.md
14如何设计消息协议?Protobuf vs JSON vs 自定义协议?✅q14-message-protocol.md
15如何实现消息压缩?✅q15-message-compression.md
16什么是同步问题?客户端和服务端的状态如何同步?✅q16-state-sync.md
17如何处理延迟补偿和预测?✅q17-latency-compensation.md
18什么是 Ghost/Shadow 机制?✅q18-ghost-mechanism.md
19如何防止消息重放攻击?✅q19-replay-attack.md
20长连接如何保持心跳?断线重连如何设计?✅q20-heartbeat-reconnect.md
21WebSocket 在 MMO 中有什么应用场景?✅q21-websocket-mmo.md
22如何处理网络消息的乱序问题?✅q22-out-of-order.md
23如何实现 RPC 调用?✅q23-rpc-implementation.md
24如何设计广播机制?如何优化大规模广播?✅q24-broadcast-optimization.md
25连接数上限由什么决定?如何突破 C10K 问题?✅q25-c10k-problem.md
26KBEngine 消息路由机制:Gateway、Proxy、CellApp 之间如何高效转发?✅q26-kbengine-message-routing.md
27Real、Ghost、Shadow Entity 之间如何转换?如何高效同步?✅q27-entity-ghost-shadow-relationship.md
28KBEngine 是否存在注册中心?CellApp 如何部署和通信?Actor 模型适用吗?✅q28-kbengine-registry-actor-transport.md
29CellApp 之间如何通信?如何发现自己的空间位置?✅q29-cellapp-communication-space-discovery.md
30KBEngine 的 Space 是什么?与物理空间划分有什么区别?✅q30-kbengine-space-concept.md
31KBEngine 如何高效广播?如何保证消息不重复?✅q31-kbengine-broadcast-dedup.md
32KBEngine CellApp 同机/跨机如何通信?有什么源码证据?✅q32-kbengine-cellapp-communication.md
33KBEngine 为何不做极致性能优化?如果要做该如何改进?✅q33-kbengine-performance-optimization.md

三、数据存储篇

#问题状态链接
26玩家数据什么时候存数据库?全量保存 vs 增量保存?✅q26-data-persistence.md
27如何设计数据库表结构?✅q27-database-schema.md
28如何解决数据一致性问题?✅q28-data-consistency.md
29Redis 在 MMO 中有哪些应用场景?✅q29-redis-in-mmo.md
30如何设计排行榜系统?✅q30-leaderboard-system.md
31如何设计好友系统?✅q31-friend-system.md
32如何设计邮件系统?✅q32-mail-system.md
33如何处理热点数据?✅q33-hot-data.md
34数据库连接池如何设计?✅q34-connection-pool.md
35如何实现数据库分片?✅q35-database-sharding.md
36如何处理数据库事务?✅q36-database-transaction.md
37如何实现数据的缓存淘汰策略?✅q37-cache-eviction.md
38如何防止数据被篡改?✅q38-data-integrity.md

四、游戏逻辑篇

#问题状态链接
39如何设计战斗系统?✅q39-combat-system.md
40ECS 架构是什么?在游戏中有什么优势?✅q40-ecs-architecture.md
41如何设计技能系统?✅q41-skill-system.md
42如何设计 Buff/Debuff 系统?✅q42-buff-system.md
43如何设计属性系统?✅q43-attribute-system.md
44如何设计背包系统?✅q44-inventory-system.md
45如何设计交易系统?✅q45-trading-system.md
46如何设计拍卖行?✅q46-auction-house.md
47如何设计公会系统?✅q47-guild-system.md
48如何设计任务系统?✅q48-quest-system.md
49如何设计副本系统?✅q49-instance-system.md
50如何设计匹配系统?✅q50-matchmaking.md
51如何设计 AI 系统?✅q51-ai-system.md
52如何设计寻路系统?✅q52-pathfinding.md
53如何设计场景管理?✅q53-scene-management.md
54如何处理多人同时抢怪/抢资源?✅q54-loot-contention.md
55如何设计伤害计算?✅q55-damage-calculation.md

五、性能优化篇

#问题状态链接
56如何进行性能分析?有哪些工具?✅q56-profiling-tools.md
57如何优化内存使用?✅q57-memory-optimization.md
58对象池是什么?如何设计?✅q58-object-pool.md
59如何减少锁竞争?✅q59-reduce-lock-contention.md
60如何设计定时器系统?✅q60-timer-system.md
61如何优化日志系统?✅q61-log-optimization.md
62如何进行压力测试?✅q62-stress-testing.md
63如何优化数据库查询?✅q63-database-optimization.md
64如何优化网络带宽?✅q64-bandwidth-optimization.md
65如何减少 CPU 缓存未命中?✅q65-cache-miss.md
66SIMD 在游戏中有哪些应用?✅q66-simd-gaming.md
67如何进行热点代码优化?✅q67-hotspot-optimization.md
68如何设计内存监控?✅q68-memory-monitoring.md
69单服承载 5000 人需要考虑哪些问题?✅q69-5000-ccu.md
70如何设计高性能的消息队列?✅q70-message-queue.md

六、并发与多线程篇

#问题状态链接
71多线程 vs 多进程,如何选择?✅q71-thread-vs-process.md
72如何避免死锁?✅q72-avoid-deadlock.md
73Actor 模型是什么?有什么优势?✅q73-actor-model.md
74如何设计无锁数据结构?✅q74-lock-free.md
75线程池如何设计?任务如何调度?✅q75-thread-pool.md
76如何实现异步 IO?✅q76-async-io.md
77IOCP vs Epoll 有什么区别?✅q77-iocp-epoll.md
78如何处理竞态条件?✅q78-race-condition.md
79如何设计线程安全的容器?✅q79-thread-safe-container.md
80协程在游戏服务器中的应用场景?✅q80-coroutine.md

七、安全篇

#问题状态链接
81如何防止外挂?✅q81-anti-cheat.md
82如何防止刷物品?✅q82-item-duping.md
83如何防止加速挂?✅q83-speed-hack.md
84如何防止内存修改?✅q84-memory-hack.md
85如何防止封包伪造?✅q85-packet-forgery.md
86如何设计权限系统?✅q86-permission-system.md
87敏感数据如何加密传输?✅q87-encryption.md
88如何防止 SQL 注入?✅q88-sql-injection.md
89如何设计限流和防刷机制?✅q89-rate-limiting.md
90如何应对 DDoS 攻击?✅q90-ddos-protection.md

八、运维与监控篇

#问题状态链接
91如何监控服务器状态?✅q91-server-monitoring.md
92如何设计日志系统?✅q92-log-system.md
93如何快速定位线上问题?✅q93-troubleshooting.md
94如何实现热更新?✅q94-hot-reload.md
95如何实现灰度发布?✅q95-canary-deployment.md
96如何设计配置管理?✅q96-config-management.md
97如何实现服务器重启不丢数据?✅q97-graceful-shutdown.md
98如何设计 GM 命令系统?✅q98-gm-command-system.md
99如何实现服务器集群管理?✅q99-cluster-management.md
100如何进行容量规划?✅q100-capacity-planning.md

九、脚本系统篇

#问题状态链接
101为什么要嵌入脚本语言?Lua vs Python 如何选择?✅q101-script-language.md
102C++ 如何调用 Lua?Lua 如何调用 C++?✅q102-cpp-lua-binding.md
103如何实现脚本热更新?✅q103-script-hot-reload.md
104如何限制脚本的执行时间?✅q104-script-timeout.md
105如何调试脚本?✅q105-script-debug.md

十、实战经验篇

#问题状态链接
106你遇到过最难的技术问题是什么?如何解决的?✅q106-toughest-problem.md
107线上出过什么严重事故?如何处理的?✅q107-production-incident.md
108从 0 到 1 搭建一个 MMO 服务器,你的思路是什么?✅q108-mmo-from-scratch.md
109如何评估服务器承载能力?✅q109-capacity-assessment.md
110你认为 MMORPG 服务器最难的部分是什么?✅q110-hardest-part.md
111如何与客户端同学协作?✅q111-client-collab.md
112如何与策划同学沟通技术方案?✅q112-designer-comm.md
113如何平衡代码质量和开发速度?✅q113-quality-vs-speed.md
114你对哪些开源游戏服务器框架有了解?各有什么特点?✅q114-open-source-frameworks.md
115如果让你重新设计,你会如何改进当前框架?✅q115-framework-redesign.md
116C++ 设计模式在 KBEngine 中有哪些实践?为什么这样设计?✅q116-cpp-design-patterns-in-kbengine.md

十一、深入问题篇

#问题状态链接
117如果你已经回答了 MMO 基础题,接下来还应该继续思考哪些深入问题?✅q117-interviewer-follow-up.md

进度: 117/117 完成 ✅

共 117 题,覆盖 MMO 框架开发的核心领域

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