posts

《MMO 服务器开发》分布式与跨服 · 全书目录与章节索引(34 篇)

《MMO 服务器开发》卷三《分布式与跨服》全 34 篇,把卷二那个能单服可玩的 aegis 推成一群机器上的集群:从分区分服与集群拓扑、什么时候该拆什么时候不该,到服务注册与健康检查、Leader 选举与服务所有权、etcd / NATS / Consul 三套中间件的本机真跑选型、RPC 超时预算与重试熔断背压、gRPC-Go 与 gRPC-Java 双栈对照、网关集群与会话粘性、连接排空、实例调度器与分配 Broker、崩溃恢复与状态重建、跨服报名匹配与跨服聊天路由、跨服资产归属与结算、雪花算法与号段模式、时钟回拨容错、Redis 缓存失效与击穿防护、读写分离与读模型、角色数据模型与脏写防护、分片与再均衡、跨服务事务补偿、对账与数据修复工单、事件溯源与审计,最后把跨服战场端到端跑通并给出集群承载数字。

《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.2Leader 选举与服务所有权租约、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.1Redis 使用与失效策略缓存键设计、失效时机与顺序
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集群承载数字节点数、连接数与跨服吞吐基准

怎么用这份索引

相关阅读

全部文章 Golang Game Saas Rust Python Java 游戏开发 客户端开发 GameDev Typescript
mmo

《MMO 服务器开发》10.3 事件溯源与审计

玩家申诉「我昨天明明有 3 件装备,今天只剩 1 件」,光看当前背包答不出来——因为没有历史。本节给资产系统装上事件溯源:append-only 的事件流、定期快照、以及从零重放,并写一个可跑的审计查询,回答「某玩家某天的资产为什么变了」。断言重放结果与快照一致、窗口解释能列出当天每一笔增减及其来源,并指出快照与重放如何互为校验。

7 分钟阅读
MMO 游戏服务端 分布式
mmo

《MMO 服务器开发》10.2 对账与数据修复工单

跨服结算和本服流水对不上,差在哪、谁来修、修完谁签字?本节先把对账口径钉死——谁对谁、按什么周期、比哪些字段;再给差异分级:金额类必须逐笔一致、展示类可以容忍;然后用 aegis 的 recon 包写一个可跑的对账器,造出若干差异样本,断言分级正确、可镜像的被自动修复、金额冲突的生成带审批留痕的修复工单。

7 分钟阅读
MMO 游戏服务端 分布式
mmo

《MMO 服务器开发》10.1 跨服务事务与补偿

跨服发奖发到一半崩了怎么办:点券扣了奖励没到、奖励到了流水没记。本节把跨服务事务的三种方案摆开——2PC 为什么不适合游戏服、TCC 的冻结确认撤销、Saga 的编排式与编舞式——并用 aegis 的 saga 包实现一套可跑的 Saga 状态机与补偿动作,断言正向全成功状态一致、中途失败逐个补偿回到一致态、补偿自身失败时重试并打上人工介入标记。

8 分钟阅读
MMO 游戏服务端 分布式
mmo

《MMO 服务器开发》1.3 本书范围与站内服务治理文章的分工

站内已经有一大批游戏服务器架构文章,卷一写了网络内核、卷二写了单服玩法,那这一卷《分布式与跨服》到底写什么、不写什么?本节把三份内容的分工摊开讲清楚:站内架构文负责「应该怎么设计」,卷一与卷二负责「底座与单服怎么写」,本卷负责「集群与跨服从零实现并跑出数字」,并把这条边界编码成一张可查询、可测试的表。

11 分钟阅读
MMO 游戏服务端 分布式
mmo

《MMO 服务器开发》1.2 什么时候该拆、什么时候不该

上一节定下了集群拓扑,但拆不拆是另一回事——拆分从来不是免费的。这一节先列出一份拆分成本清单:一次 RPC 换来多少容量、又付出多少延迟与运维面,再把「单服能扛到多少 CCU 才值得拆」拆成三道可判定的闸门,最后用一个能跑的容量-拆分决策函数把这三道闸门编码成代码。

7 分钟阅读
MMO 游戏服务端 分布式
mmo

《MMO 服务器开发》1.1 分区分服与集群拓扑

卷一造出了单机的网络内核,卷二装上了单服的玩法系统,可一旦在线人数上来,一台机器就扛不住了。这一节先把集群的三条路线——分区、分服、全球同服——摊开对比,再把网关、场景、战斗、世界、目录五类节点的职责边界定清楚,最后用一份能跑的 Go 代码把「哪个节点持有什么状态」钉成断言。

9 分钟阅读
MMO 游戏服务端 分布式