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

Q1: 请画出你熟悉的 MMORPG 服务器架构图,说明各组件的职责和通信方式

问题分析

本题考察对 MMORPG 服务器整体架构的理解,需要:

  1. 画出完整的服务器架构图
  2. 说明各组件的职责
  3. 说明组件间的通信方式

参考架构:BigWorld/KBEngine 风格

说明:这里采用 BigWorld/KBEngine 的典型进程模型来回答,不混入通用 Gateway 前置网关架构。

整体架构图

登录流程图


各组件职责详解

1. 客户端层

组件说明
Unity客户端PC端主流游戏引擎
Web客户端H5小游戏、网页游戏
移动客户端iOS/Android原生或Unity导出

2. 接入层

LoginApp + BaseApp/Proxy(接入主链路)

职责:

  • LoginApp 负责首次接入、账号验证、分配目标 BaseApp
  • BaseApp 中的 Proxy 负责玩家的长期会话锚点
  • 处理客户端消息编解码、会话管理、断线重连
  • 将需要空间计算的消息转发到 CellApp

通信方式:

  • 与客户端:通常是 TCP 长连接 + 自定义二进制协议/Protobuf
  • 与内部服务:进程间 TCP + 内部消息/RPC

3. 登录服务

LoginApp(登录服务器)

职责:

  • 账号密码验证
  • 与 BaseAppMgr 协调分配目标 BaseApp
  • 创建登录票据或连接信息
  • 返回后续接入地址

通信方式:

  • 与DBMgr:RPC
  • 与BaseAppMgr:RPC

4. 管理服务层

BaseAppMgr(基础应用管理器)

职责:

  • 管理所有BaseApp实例
  • 负责新玩家连接分配
  • BaseApp负载均衡
  • 跟踪BaseApp状态

CellAppMgr(空间应用管理器)

职责:

  • 管理所有CellApp实例
  • 空间分区负载均衡
  • 动态调整Cell边界
  • Entity跨CellApp迁移调度

5. 基础服务层

BaseApp(基础应用)

职责:

  • 管理玩家的 Base / Proxy
  • 处理非空间相关逻辑:
    • 背包系统
    • 好友系统
    • 邮件系统
    • 任务系统
    • 商城交易
  • 作为客户端的通信锚点
  • 将空间相关请求转发给 CellApp
  • 负责玩家数据加载、保存和生命周期管理

通信方式:

  • 与客户端:长连接
  • 与CellApp:长连接RPC
  • 与DBMgr:异步RPC

6. 空间服务层

CellApp(空间应用)

职责:

  • 管理空间区域(Cell)
  • 处理空间相关逻辑:
    • 玩家移动
    • AOI系统
    • 战斗系统
    • NPC AI
    • 技能释放
    • 场景对象管理
  • Entity的位置管理

通信方式:

  • 与BaseApp:长连接RPC
  • 与相邻CellApp:Entity同步

7. 数据服务层

DBMgr(数据库管理器)

职责:

  • 数据库连接池管理
  • 异步数据存取
  • 玩家数据持久化
  • 账号数据管理

数据库划分:

  • AccountDB:账号信息、登录记录
  • CharacterDB:角色数据、属性、背包
  • WorldDB:世界数据、公会、排行

Redis(缓存集群)

职责:

  • 热点数据缓存(实现上通常由 BaseApp 等服务访问)
  • 排行榜实时计算
  • 会话/状态辅助存储
  • 分布式协调辅助能力

8. 其他服务

ChatApp(聊天服务)

职责:

  • 频道聊天(世界、公会、队伍)
  • 私聊
  • 系统广播
  • 敏感词过滤

MatchApp(匹配服务)

职责:

  • 玩家匹配(PVP、副本)
  • 队伍组建
  • 匹配算法(ELO、段位)

通信方式总结

通信协议栈

┌─────────────────────────────────────────────────────────────┐
│                      业务协议层                              │
│   Protobuf消息定义 + RPC接口定义                            │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│                      传输协议层                              │
│   客户端↔Login/Base: TCP长连接                               │
│   内部服务: TCP长连接                                        │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│                      网络层                                  │
│   IP + 路由                                                 │
└─────────────────────────────────────────────────────────────┘

消息格式

┌──────────────┬──────────────┬──────────────┬──────────────┐
│   PacketLen  │   MsgType    │   MsgID      │   Body       │
│   (4 bytes)  │   (2 bytes)  │   (4 bytes)  │   (Protobuf) │
└──────────────┴──────────────┴──────────────┴──────────────┘

RPC调用流程


架构特点总结

特性说明
分层设计客户端→LoginApp/BaseApp→CellApp/数据服务,职责清晰
空间分离BaseApp处理非空间逻辑,CellApp处理空间逻辑
水平扩展BaseApp/CellApp可动态增减
高可用潜力Cell/Base可横向扩展,但 LoginApp、Mgr、DBMgr 仍需额外HA方案
异步通信内部采用异步RPC,提高吞吐量

参考资料

  • KBEngine 技术概览 - 软件组件
  • BigWorld Cell 架构设计介绍
在 GitHub 上编辑此页
最后更新: 3/20/26, 6:06 AM
贡献者: cuihairu