《MMO 服务器开发》卷三《分布式与跨服》全 34 篇,是把单服推成集群的一卷。卷二结束时,
aegis已经是一个能登录、能移动、能打怪、能交易、能组队进副本的单服服务端;但真实的 MMO 不是一台机器——它有分区、有分服、有跨服战场、有全球同服的排行榜,它的网关是一群、场景服是一群、战斗服是临时开出来的。这一卷就是让这些进程彼此发现、互相调用、跨服组队、跨服打仗,并且保证数据还能对得上。
这一卷第一次大量依赖真实中间件。etcd、NATS、Consul、Redis、Postgres 全部以独立容器在本机运行,端口与用户自己的实例完全错开,每一节的代码都真的连上去跑过。
本页是《分布式与跨服》的全书目录:按章节顺序列出全部 34 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的学习路径与验收清单。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《MMO 服务器开发》卷三《分布式与跨服》 |
| 篇数 | 34 篇(正文 11 章 33 节 + 目录篇) |
| 领域 | MMO 集群、服务治理与跨服玩法 |
| 贯穿项目 | 《晨曦大陆》——跨服战场 |
| 从零服务端 | aegis——Go 主线,Java 21 对照 |
| 承接 | 复用卷一《网络与并发内核》 与卷二《单服架构与玩法系统》 的帧格式、命令号与状态归属约定 |
| 中间件 | etcd 3.6.4、NATS 2、Consul 1.20、Redis 7、Postgres 17(均为本机独立容器) |
| 阅读方式 | 从目录篇 进入按顺序通读,或按查漏场景跳读 |
| 实测环境 | Go 1.26.0、JDK 21(经 Docker)、macOS Darwin 25.3.0 |
| 可运行性 | L1 纯逻辑 + L2 真连中间件 + L2J Java 对照 + B 基准,全部本机实跑 |
全书目录
前置
| 篇目 | 核心内容 |
|---|---|
| 目录 | 本卷定位、三条阅读路径、跨服战场验收清单与可运行性口径 |
第一部分:为什么拆、怎么找到彼此(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 分区分服与集群拓扑 | 分区 / 分服 / 全球同服;五类节点职责 |
| 1.2 | 什么时候该拆、什么时候不该 | 拆分成本清单与阈值判断 |
| 1.3 | 本书范围与站内服务治理文章的分工 | 与既有架构文的分工总纲 |
| 2.1 | 注册与健康检查 | 节点注册、TTL 租约、健康三态 |
| 2.2 | Leader 选举与服务所有权 | 租约、fencing token、脑裂防护 |
| 2.3 | 对照:etcd / NATS / Consul 本机真跑选型 | 三套中间件的实测对照与选型结论 |
| 3.1 | 协议与超时预算 | 超时预算分配与成败判定 |
| 3.2 | 重试、熔断与背压 | 幂等前提、熔断阈值、背压防雪崩 |
| 3.3 | 双栈对照:gRPC-Go vs gRPC-Java | 同一份载荷在两种栈上的实现与对照 |
第二部分:连接落在哪、实例开在哪(第 4–5 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 连接位置与路由目录 | 连接归属与路由目录维护 |
| 4.2 | 粘性策略与发布期行为 | 会话粘性的三种实现与代价 |
| 4.3 | 连接排空(draining) | 优雅下线与客户端通知 |
| 5.1 | 实例调度器 | 场景 / 战斗 / 世界服的调度模型 |
| 5.2 | 分配 Broker 与容量评估 | 实例落点、容量评估与排队 |
| 5.3 | 崩溃恢复与状态重建 | 进程崩溃后的状态重建 |
第三部分:跨服与全局唯一(第 6–7 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 6.1 | 跨服报名与匹配 | 报名队列与匹配结果归属 |
| 6.2 | 跨服聊天与消息路由 | 跨服频道订阅与消息寻址 |
| 6.3 | 资产归属与跨服结算 | 奖励归属、回传与失败处理 |
| 7.1 | 雪花算法从零实现 | 位布局、worker id 与生成吞吐 |
| 7.2 | 号段模式 | 号段预取与双 buffer 切换 |
| 7.3 | 时钟回拨与容错 | 回拨成因与三种应对策略 |
第四部分:状态、缓存与一致性(第 8–10 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 8.1 | Redis 使用与失效策略 | 缓存键设计、失效时机与顺序 |
| 8.2 | 缓存预热与击穿防护 | 预热、单飞、逻辑过期与热点 key |
| 8.3 | 读写分离与读模型 | 读写延迟与可见性问题 |
| 9.1 | 角色数据模型 | 主表与扩展表的拆分 |
| 9.2 | 落库与脏写防护 | 版本号、乐观锁与落库时机 |
| 9.3 | 分片与再均衡 | 分片键、一致性哈希与搬迁 |
| 10.1 | 跨服务事务与补偿 | Saga 与 TCC 的取舍 |
| 10.2 | 对账与数据修复工单 | 对账口径、差异分级与留痕 |
| 10.3 | 事件溯源与审计 | 事件流、快照与审计查询 |
第五部分:综合(第 11 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 11.1 | 跨服战场端到端 | 两服组队到结算回传的完整链路 |
| 11.2 | 多进程编排与验收 | 一次拉起全部节点并验收 |
| 11.3 | 集群承载数字 | 节点数、连接数与跨服吞吐基准 |
怎么用这份索引
- 系统学习:从目录篇 进入,按路径 A 顺序通读 11 章。
- 抓重点:先看第一部分(发现与调用)和第四部分(状态与一致性),这两块是集群最容易出事的部分。
- 查问题:用目录篇 末尾的「常见问题速查」表,或按上表标题跳读。
- 配代码:每篇正文的代码块都标了层级与来源文件;L2 的代码需要本机中间件容器,容器地址见目录篇 的「可运行性口径」。
相关阅读
- 卷一《网络与并发内核》 :协议、KCP、会话、路由、定时器、Actor、同步模型与安全底座
- 卷二《单服架构与玩法系统》 :实体运行时、AOI、战斗、背包、任务、社交、交易与匹配
- 游戏服务端专题 :网络模型、同步方案与分布式架构
- 游戏服务端实战专题导航 :架构设计与取舍文章,本卷每章分工表的来源
- 书稿书架 :全部电子书与创作手记