Skip to content

Apollo 架构概述

当前定位

Apollo 当前应被理解为一套面向在线游戏的渐进式服务端引擎,而不是只服务重型 MMORPG 或 BigWorld 模式的固定进程框架。

近期优先目标是:

  • 轻量 MMO:分线、地图实例、副本、轻社交和常规运营系统。
  • 塔防 / 固定地图:波次、防守、建造、技能、怪物路径和局内状态同步。

BigWorld 风格的分布式世界能力仍然保留,但它是后续增强层,不是默认起步形态。

整体架构

Apollo 现在更合理的理解方式,不是旧的“按模块目录罗列层级”,而是:

  • 一套渐进式的代码分层
  • 一组可装配的业务域组件
  • 一层可选的 BigWorld 分布式增强能力
  • 最后才是进程和部署拓扑

如果按目标游戏类型整理,Apollo 当前应固定为三种 Profile:

  • Tower Defense Compact
    • Client -> Gateway -> CompactGameServer(Scene + AOI + Battle + Wave) -> Persistence
  • Lightweight MMO
    • Client -> Login -> Gateway -> BaseApp(PlayerAnchor) -> WorldApp
  • Distributed MMO
    • Client -> Login -> BaseApp(Proxy + PlayerAnchor) -> CellApp

这里也要明确:

  • BaseApp 不是数据库服务
  • GatewayApp 不是分布式世界默认必选核心
  • CellApp 不是轻量 MMO 和塔防默认需要的起步进程
  • CompactGameServer 是塔防和固定地图玩法的一等装配 Profile

按新思路,Apollo 更推荐采用 10 层分层:

L10 Assembly / Topology
L9 Distributed World Extension
L8 Domain Components
L7 Game Foundation
L6 Platform Foundation
L5 Runtime Ops Host
L4 Runtime Host
L3 Transport / Messaging / Protocol
L2 Core Kernel
L1 Base Infrastructure

层级说明

L1: Base Infrastructure

纯基础设施,无框架语义。

组件功能
Time时间工具、高精度计时
ThreadPool线程池、任务调度
IdPool唯一ID生成器
ObjectPool对象池、内存复用
String字符串处理工具
Memory内存池、Buffer管理
Terminal终端适配、ANSI彩色输出

L2: Core Kernel

框架内核,公共运行语义。

组件功能
Config配置管理、热更新
Log日志系统、分级输出
Lifecycle应用生命周期管理
Event事件总线
Timer定时器调度
Module模块注册与加载
ServiceDiscovery服务发现

L3: Transport / Messaging / Protocol

统一协议与消息边界。

子层功能
Client Protocol客户端请求/响应协议
Session Protocol登录、心跳、重连、接管
Internal Envelope进程间和实体间统一消息信封
Replication Protocol实体同步、可见集更新

L4: Runtime Host

宿主运行时,程序如何运行。

组件功能
ApplicationHost应用宿主
ProcessHost进程宿主
WorldHost世界宿主
ServiceHost服务宿主
Signal信号处理
ShutdownHook关闭钩子

L5: Runtime Ops Host

运行时治理、运维与调试层。

组件功能
Console本地控制台
ProcessGuardianpidfile、单实例、shutdown 协调
SupervisorAdaptersystemd/supervisor 交互
Watcher / Diagnostics观测、调试、状态查询
TelemetryBridgeOTel tracing/metrics 导出
Remote Control远程调试、远程控制

L6: Platform Foundation

平台基础能力层。

组件功能
Redis / KvStore键值存储与缓存基础能力
RelationalStoreMySQL/PostgreSQL/SQLite 统一访问
RepositoryBase统一数据访问抽象
Leaderboard排行榜组件
DistributedLock分布式锁
Queue / RateLimit通用平台组件

L7: Game Foundation

游戏框架基础语义层。

组件功能
EntitySchema统一实体定义
RemoteEntityCall统一远程实体调用
Replication Pipeline统一复制链路
Script ABI统一脚本宿主接口
Core Entity Runtime实体基类、属性、方法、生命周期

L8: Domain Components

可装配业务域组件层。

组件功能
Session登录、会话、玩家锚点
World地图、实例、AOI、世界运行
Battle技能、buff、战斗规则
Social聊天、好友、工会、邮件
Task/Activity任务、成就、活动
Platform Business支付、风控接入、运营业务能力

L9: Distributed World Extension

BigWorld 风格增强层。

组件功能
GhostReplica非权威实体投影
Witness客户端可见世界上下文
Authority Transfer权威迁移
Space Partition空间切片与拓扑
AppMgr分布式调度与控制

L10: Assembly / Topology

最终装配与部署层。

组件功能
Starter模块装配
Apps最终可执行进程
Topology部署拓扑与环境配置

依赖关系

L1 <- L2 <- L3 <- L4 <- L5 <- L6 <- L7 <- L8 <- L9 <- L10

硬约束

  • L2 不反向依赖 L6/L7/L8
  • L3 不直接承载业务域逻辑
  • L6 不依赖具体业务域实现
  • L9 是增强层,不反向污染 L7
  • L10 只做装配,不承载核心框架能力

Profile 映射

Tower Defense Compact

默认启用:

  • L1-L8
  • L10 中 Compact GameServer 对应的装配与部署拓扑

典型进程:

  • gateway-app
  • compact-game-app
  • persistence-app
  • 可选 platform-app

重点:

  • Scene、AOI、Battle、Wave Runtime 同进程运行
  • 通过统一 Session、Protocol、Persistence 复用 Apollo 底座
  • 不启用 Witness / Ghost / Authority Transfer

Lightweight MMO

默认启用:

  • L1-L8
  • L10 中 Standard MMO 对应的装配与部署拓扑

典型进程:

  • login-app
  • gateway-app
  • base-app,目标语义是 PlayerAnchor Host
  • world-app,当前 cell-app 可先演进为这个语义
  • 可选 persistence-app / platform-app

重点:

  • 有完整在线主链
  • 有 WorldHost、Zone、Instance、AOI 和 Battle
  • 不要求分布式空间切片

Distributed MMO / BigWorld

L1-L8 和普通 MMO 主链稳定后,再叠加:

  • L9
  • L10 中对应的大世界部署拓扑

当前仓库的直接含义

基于当前 Apollo 仓库状态,最需要优先收口的是:

  • modules/runtime
  • modules/runtime/ops
  • modules/platform
  • modules/game/core
  • modules/game/world
  • modules/script

语义上需要继续校正的是:

  • BaseApp 的目标语义应稳定为玩家锚点宿主,而不是持久化进程
  • cell-app 当前更接近 world runtime 原型,后续应按两种 topology 分化为 WorldApp 或真正的 CellApp
  • DBMgr / PersistenceService 应单独理解为持久化执行层

更完整的分层说明见:

相关阅读

基于 MIT 许可发布