Skip to content

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 框架开发的核心领域

基于 MIT 许可发布