posts

《游戏服务端架构·规模化、全球化与成本》 · 全书目录与章节索引(45 篇)

《游戏服务端架构》卷三索引:13 章 39 节正文加序、前言、目录与三个附录,讨论容量与弹性、多地域与全球同服、分片与再均衡、缓存与异步、跨服与容灾、成本与合规,并给出四条阅读路径、完整目录、导航约定、全卷验收标准与本地复现口径,便于按角色选择入口。

这一卷解决什么问题

卷二把每个核心系统的契约写清楚之后,规模、地域与成本会重新改写这些契约。卷三讨论的就是这次改写:

全卷 45 篇:39 节正文、序、前言、目录,以及容量估算表、合规检查表、全球化部署清单三个附录。

适合谁读

卷三假设读者已经了解卷一的拓扑选择与卷二的系统契约;没有读过的读者可以先看两卷的目录,再按需回补。

四条阅读路径

路径一:容量到弹性

1.1 承载指标 →
1.2 压测与回放 →
1.3 容量模型 →
2.1 调度器 →
2.2 暖池 →
2.3 缩容排空 。

读完应当能独立写出容量表、扩容触发线与排空流程。

路径二:地域到状态

3.1 延迟预算 →
3.2 数据驻留 →
3.3 状态归属 →
4.1 分片键 →
4.2 一致性哈希 →
4.3 再均衡读写 。

读完应当能回答“玩家数据放在哪、迁移时怎么不断服”。

路径三:数据到跨服

5.1 多级缓存 →
5.2 热 key →
5.3 读写分离 →
6.1 队列语义 →
6.2 积压与死信 →
6.3 对账补偿 →
7.1 跨服匹配 →
7.2 跨服结算 →
7.3 合服迁移 。

读完应当能画出跨服链路的幂等与对账闭环。

路径四:容灾、成本与合规

8.1 备份演练 →
8.2 故障切换 →
8.3 灾难恢复 →
9.1 成本归因 →
9.2 配额混部 →
9.3 成本体验 →
10.1 合规落点 →
10.2 隐私删除 →
10.3 日志审计 。

读完应当能填出容量表、成本表与合规表。

完整目录

第 1 章 容量与压测

第 2 章 弹性与调度

第 3 章 多地域与全球同服

第 4 章 数据分片与再均衡

第 5 章 缓存与读写分离

第 6 章 消息与异步

第 7 章 跨服与跨区

第 8 章 容灾与多活

第 9 章 成本架构

第 10 章 合规与数据治理

第 11 章 发布与灰度

第 12 章 全球化案例

第 13 章 卷三收口

附录

全卷验收标准

读完之后,用下面五条自检:

  1. 能否用一张表说明当前产品的峰值、单实例能力、实例数、余量与扩容触发线?
  2. 能否回答“玩家数据放在哪、跨区读写允许旧多久、迁移时怎么不断服”?
  3. 能否列出所有跨服链路,并说明每条链路的幂等键、超时与补偿?
  4. 能否算出每 DAU、每房间小时、每千次对局的成本,并指出成本拐点?
  5. 能否把每个合规要求映射到服务、字段、失败处理与证据?

五条里有两条答不上来,说明卷三对应的章节还需要重读一遍。

导航约定

本卷正文全部使用 relref 互链,序号从 1.1 到 13.3;序、前言、目录与附录不带阅读导航行。每节结尾的导航行指向前后相邻小节,13.3 的下一节指回本目录。

卷三讨论的是规模化阶段的架构取舍;具体实现细节(网络、AOI、战斗、技能)请参阅《MMO 服务器开发》系列。

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《游戏服务端架构·规模化、全球化与成本》8.1 备份、恢复与演练

《泡泡工坊》的支付订单曾被误删,《群岛纪元》的世界状态在赛季末回档过一次。本节按账号支付、玩家资产、世界状态、日志四级划分备份对象,推导 RPO 与备份频率的关系,给出恢复演练的校验项与确定性抽样方法,并用可运行的 Go 夹具演示计划评审、恢复报告判定与抽样复现。

10 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》7.3 合服、迁移与玩家可见性

《群岛纪元》两个服合并,公告发出十分钟就收到重名、公会名与排行榜投诉;《泡泡工坊》小服合并后邮件附件重复、好友列表指向不存在的角色。本节列出合服的全部冲突面,给出确定性 ID 映射、分批迁移、提交门禁与回滚边界,并讨论玩家在停服窗口里应当看到什么。

9 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》7.2 资产归属与跨服结算

《裂隙战场》跨服赛的结算单重复回传,玩家领到两份奖励;《群岛纪元》的活动积分带回时被上限截断,客服说不清差额去了哪里。本节划清主服与跨服的资产边界,给出只读、冻结、带回三种归属模式,以及幂等回传、补偿队列与对账差异的处理规则,并说明补偿队列为何必须按结算单去重。

8 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》7.1 跨服匹配与报名

《裂隙战场》跨区排位首周出现票据挂起、扩容失败与重复报名三起事故。本节把跨服报名拆成只读快照、冻结额度与有期限票据,给出赛区划分的硬软约束、票据四态机、失败补偿边界,并用可运行的 Go 夹具演示签发、锁定、消费、作废与过期扫描,解释扩容失败为何要快速失败而不是重试。

7 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》6.3 对账、补偿与定时任务

《泡泡工坊》一次支付回调超时,渠道扣了款、游戏侧却没发货;《群岛纪元》的跨服结算单与角色账本差了三笔。本节划出必须对账的四类异步结果,给出差异分类、补偿预算与转人工边界,并用可运行的 Go 夹具演示差异分类、批次断点续跑、单实例选主与幂等重放。

8 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》6.2 积压、顺序与死信

《群岛纪元》赛季结算夜,队列只有 12 万条、没到告警阈值,最老消息却已等了 47 分钟;《裂隙战场》把失败结算丢回队尾重试,后到的结算先执行,同一局被扣了两次分。本节比较条数、字节与最老消息年龄三个积压指标,拆开顺序与并发的取舍,并给出毒消息隔离与幂等重放的可运行夹具。

7 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》6.1 队列选型与投递语义

《群岛纪元》一次 broker 切换让庆典邮件重投,发奖服务没有幂等,同一份奖励发了两次。本节把 at-most-once、at-least-once 与“业务幂等换 exactly-once”放回北辰三款产品的具体链路,给出延迟、顺序、积压、运维四维选型判据,以及消息键、版本、重试头与死信地址的生产消费契约。

7 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》5.3 读写分离的可见性兜底

从《群岛纪元》攻城结算后立刻刷新仍看到旧战功的现象切入,拆解主从延迟窗口与读己之写的冲突,比较令牌、会话粘滞与强制读主三种手段的代价,给出资产、结算、支付、封禁等读的主库判定,以及从库故障、主库压力和复制中断时的降级顺序与可运行 Go 实现。

8 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》5.1 本地缓存、分布式缓存与多级缓存

从《群岛纪元》跨服榜单读到旧名次的事故切入,按配置表、玩家快照、榜单、社交关系四类对象划分本地与分布式缓存职责,比较两级缓存的失效路径与写入权归属,说明广播丢失后的版本水位、可疑标记与重同步兜底,并给出可运行 Go 实现、表驱动测试与失败模式清单。

8 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》4.3 再均衡期间的读写

《群岛纪元》在赛季中迁移公会数据时,玩家一次购买超时重试,第一次写入源分片、第二次落到目标分片,差点扣两次款。本节拆解源可读可写、双写、目标接管三态路由,给出读修复、版本冲突与幂等账本的规则,并用可运行的 Go 状态机验证,最后附切换门禁与回滚窗口检查项。

7 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》4.2 一致性哈希与迁移

《群岛纪元》赛季前要把 16 个分片扩到 24 个,按玩家 ID 取模会让大部分数据重排。本节比较取模、目录表与一致性哈希的搬迁成本,讨论按玩家、按公会、按分片段的迁移单位,给出可运行的哈希环、虚拟节点与迁移计划生成代码,并附限速、容量预留与回滚清单。

8 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》4.1 分片键与数据模型

《群岛纪元》的联盟名单按公会切、联盟仓库却按玩家切,一次跨服报名要扫 16 个分片。本节比较玩家、账号、区服、公会四种分片键的热点与共置后果,给出读扩散与写扩散的选择,并用可运行的 Go 目录表校验共置承诺、估算分片偏斜,最后给出热点分片的兜底手段。

9 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》3.3 全球同服的状态归属

《群岛纪元》要全球同服,《裂隙战场》只能区域对局,《泡泡工坊》连房间都不需要全局状态。本文比较全球单世界、分区世界与混合三种形态,拆开玩家主数据、世界状态、联盟关系与排行榜的写归属,给出跨区可见性窗口和迁移状态机,并附 internal/globalstate 的 Go 实现与六组表驱动测试。

9 分钟阅读
书稿 游戏服务端 分布式系统
books

《游戏服务端架构·规模化、全球化与成本》3.2 数据驻留与跨境合规

《群岛纪元》的全球客服与支付对账,把同一张玩家表里的身份、支付、日志和回放推到了不同区域的合规边界。本文按数据类别而不是按表定义驻留规则,比较区域内闭环、脱敏汇聚与授权传输三种机制,说明只读副本、跨区注销与墓碑保留的边界,并附 internal/dataregion 的 Go 实现与六组表驱动测试。

10 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》3.1 全球延迟预算与路由

《裂隙战场》的跨区观战和《群岛纪元》的全球集结,把端到端延迟拆成接入、区域间与存储三段。本文给出三款产品的示例预算表、客户端测速与登录下发网关列表的组合方式,以及跨区组队把两个区域绑在一起时的降级边界,并附 internal/latencybudget 的 Go 实现与五组表驱动测试。

9 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》2.3 缩容、排空与成本

从《裂隙战场》凌晨缩容导致早场排队、结算前强制迁移的两次事故出发,比较直接关机、停止新开与排空后超时强制三种做法,给出对局、大厅与世界服的体验分级、缩容迟滞判定和预留加按需的分层成本估算,并附一个可运行、可测试的 Go 排空状态机与成本模型。

7 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》2.1 专用服、容器与调度器

从《裂隙战场》扩容后房间仍然创建失败的现场出发,比较物理机、虚拟机、容器与专用进程在 UDP 端口、CPU 绑定、大页和内核参数上的约束差异,说明端口唯一性、版本匹配、亲和与故障域打散应放进调度器还是留给服务,并给出带失败原因编码的可运行 Go 放置器。

8 分钟阅读
书稿 游戏服务端 架构设计
books

《游戏服务端架构·规模化、全球化与成本》1.3 容量模型与余量

余量不是 30%,而是“掉一个可用区、来一次活动、发一次坏版本”时还能不能接住。本文对比自底向上与自顶向下两种容量模型,给出 CPU、内存、带宽、连接四层的估算方法,把 N+1、故障域、活动、发布四类余量写成可校验的故障场景,并用 Go 实现分层利用率、瓶颈定位、余量校验与扩容触发时间计算。

8 分钟阅读
书稿 游戏服务端 架构设计