本卷要解决什么
卷一不教 Go 语法,也不教 Kubernetes 命令。它回答一个问题:同样是游戏服务端,为什么竞技、SLG、休闲、开放世界需要不同的拓扑,而架构师怎么证明自己的选择是对的。
具体拆成四件事:
- 把“低延迟”“高可用”“可扩展”还原成可测量、可取舍的质量属性;
- 用北辰工作室三款产品,对照竞技、SLG、休闲三类品类的拓扑差异;
- 把状态、时间、连接、权威四个基础问题讲清楚;
- 用 ADR、评审和风险台账,把架构决策变成团队可执行的共识。
卷二处理核心系统与契约,卷三处理规模化、全球化与成本,卷四处理平台化与架构治理。本卷遇到这些题目时只划边界,不展开实现。
贯穿案例:北辰工作室
| 产品 | 品类 | 拓扑 | 首要矛盾 |
|---|---|---|---|
| 《裂隙战场》 | 5v5 竞技 | 大厅 + 房间 | 帧稳定性与公平性 |
| 《群岛纪元》 | SLG | 全球同服 + 地域分片 | 全球延迟与结算一致性 |
| 《泡泡工坊》 | 休闲小游戏 | 模块化单体起步 | 登录与开房速度 |
平台侧统一为 northstar-platform:账号、支付、匹配、社交、排行榜、邮件、配置、数据、GM。
全书结构:13 章分四段
| 段落 | 章节 | 回答的问题 | 本段产出 |
|---|---|---|---|
| 一、问题与决策 | 第 1–2 章 | 为谁做架构?怎么把决策写清楚? | 三类预算、状态机、ADR、评审台账 |
| 二、基础与谱系 | 第 3–6 章 | 拓扑有哪些?状态、时间、连接、权威怎么放? | 拓扑决策矩阵、状态所有权表、会话模型 |
| 三、品类实战 | 第 7–10 章 | 竞技、SLG、休闲、开放世界分别怎么落? | 四组品类架构方案与失败模式 |
| 四、运行与收口 | 第 11–13 章 | 部署单元怎么切?整套方案怎么评审? | 故障域图、架构基线、决策矩阵 |
全书目录
前置与附录
| 篇 | 文章 | 核心内容 |
|---|---|---|
| 序 | 序:为什么还要写一套游戏服务端架构书 | 为什么还要写一套游戏服务端架构书;与《MMO 服务器开发》的分工 |
| 前言 | 前言:技术选型、案例与可运行性口径 | 技术基线、案例构造、代码组织与 L1/L2/L3 证据口径 |
| 目录 | 目录与学习路径 | 本页:十三章结构、三条阅读路径与可运行性说明 |
| 附录 A | 附录 A 术语表 | 六组术语与常见混淆对照 |
| 附录 B | 附录 B 北辰三款产品决策矩阵 | 三款产品事实、特征向量、基线卡与矩阵用法 |
| 附录 C | 附录 C 游戏服务端架构评审清单 | 评审十步清单、快速暂停条件与一页纸结论模板 |
正文十三章
第 1 章 游戏服务端的架构问题
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 游戏服务端到底在为谁做架构 | 三类读者、四个特殊性、房间状态机与状态所有权表 |
| 1.2 | 1.2 三类延迟预算:帧、操作、结算 | 帧/操作/结算三类预算、分位数口径、可执行预算检查 |
| 1.3 | 1.3 品类如何决定拓扑:北辰三款产品 | 六个产品事实、五种拓扑、三款产品的选择与退出条件 |
本章主线:把架构对象、三类延迟预算与品类约束落到房间状态机和状态所有权表。
第 2 章 架构决策方法
| 节 | 文章 | 核心内容 |
|---|---|---|
| 2.1 | 2.1 质量属性与无法回避的取舍 | 十二条质量属性场景、冲突矩阵、场景结构校验 |
| 2.2 | 2.2 ADR:把决策、备选与后果写下来 | ADR 最小结构、三份订单域 ADR、代码校验退出条件 |
| 2.3 | 2.3 一次真实的架构评审与风险台账 | 一次评审的三个争议、风险台账六字段与评分排序 |
本章主线:用质量属性场景、ADR 与风险台账把争论变成可评审的决策。
第 3 章 拓扑谱系
| 节 | 文章 | 核心内容 |
|---|---|---|
| 3.1 | 3.1 单体、分层与模块化单体 | 五个模块与允许依赖表、三色环检测、拆分触发条件 |
| 3.2 | 3.2 大厅、房间与战斗:竞技品类的标准形态 | 大厅/房间/分配器三层、暖池与租约、幽灵房间复盘 |
| 3.3 | 3.3 分区、分服与全球同服 | 赛区路由与闭区间、再均衡不丢格证明、数据驻留约束 |
本章主线:比较模块化单体、大厅 + 房间、分区/分服/全球同服的边界与代价。
第 4 章 状态与时间
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 4.1 内存态、持久态与快照 | 内存态/持久态/快照、频率与成本、恢复流程 |
| 4.2 | 4.2 tick、帧预算与世界时钟 | 世界时间与固定步长、补帧/丢弃/漂移、四个测试场景 |
| 4.3 | 4.3 离线推进与时间旅行:SLG 的补算 | 补算的四个边界、封顶与对账、时区与失败兜底 |
本章主线:讲清内存态、快照、tick 与离线补算,回答“重启会丢什么”。
第 5 章 连接与接入
| 节 | 文章 | 核心内容 |
|---|---|---|
| 5.1 | 5.1 长连接、短连接、WebSocket 与 QUIC 的取舍 | 四种连接形态的选型矩阵、握手/重连预算、团队规模约束 |
| 5.2 | 5.2 网关的职责边界与横向扩展 | 网关五项职责、rendezvous 路由、节点摘除重分配 |
| 5.3 | 5.3 会话、重连、顶号与连接迁移 | 会话状态机、epoch 顶号、迁移交接与幂等恢复 |
本章主线:从协议取舍到网关扩展再到会话迁移,划清接入层职责。
第 6 章 权威与信任
| 节 | 文章 | 核心内容 |
|---|---|---|
| 6.1 | 6.1 客户端预测与服务端裁决 | 输入缓冲与预测回滚、服务端确认、偏差阈值与降级 |
| 6.2 | 6.2 反作弊应该放在架构的哪一层 | 五层反作弊、规则评分、证据链与申诉边界 |
| 6.3 | 6.3 经济系统与随机数的可信边界 | commit-reveal 随机、掉落表版本、双分录账本校验 |
本章主线:确定客户端能预测什么、服务端裁决什么,以及证据放在哪一层。
第 7 章 品类架构 I:竞技
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 7.1 MOBA 的房间、tick 与帧同步 | 帧同步/状态同步判据、tick 屏障、缺帧与确定性哈希 |
| 7.2 | 7.2 FPS 的专用服、命中判定与延迟补偿 | 专用服池、快照回滚窗口、命中判定与延迟优势 |
| 7.3 | 7.3 观战、回放与赛事架构 | 观战延迟、事件日志与关键帧、回放体积与赛事隔离 |
本章主线:以《裂隙战场》为例,比较帧同步、专用服与观战回放。
第 8 章 品类架构 II:SLG 与 MMO
| 节 | 文章 | 核心内容 |
|---|---|---|
| 8.1 | 8.1 全球同服的大地图与分片 | 矩形分片路由、边界实体迁移、热区扩容与合规 |
| 8.2 | 8.2 分区分服、跨服与合服 | ID 重映射、重名消解、合服检查清单与跨服 |
| 8.3 | 8.3 异步结算、离线收益与补算 | 离线时长封顶、读时/定时结算、幂等补算与时区 |
本章主线:以《群岛纪元》为例,处理大地图分片、合服与异步结算。
第 9 章 品类架构 III:休闲、卡牌与小游戏
| 节 | 文章 | 核心内容 |
|---|---|---|
| 9.1 | 9.1 无状态大厅加有状态房间 | 大厅令牌与房间租约、过期回收、崩溃兜底 |
| 9.2 | 9.2 回合制卡牌的确定性与回放 | 种子洗牌、确定性结算、状态哈希与回放校验 |
| 9.3 | 9.3 小游戏后端的轻量化与快速上线 | 最小依赖组合、可裁剪清单、上线前检查与成本上限 |
本章主线:以《泡泡工坊》为例,给出轻后端的裁剪清单与确定性回放。
第 10 章 品类架构 IV:开放世界与 UGC
| 节 | 文章 | 核心内容 |
|---|---|---|
| 10.1 | 10.1 无缝世界的分片与边界 | 区块流式归属、边界交接、越界规则与热区 |
| 10.2 | 10.2 UGC 地图的隔离、审核与发布 | 不可变版本、校验状态机、灰度发布与回滚 |
| 10.3 | 10.3 玩家创造内容的服务端信任模型 | 信任分级、沙箱与配额、违规降级与平台账本 |
本章主线:开放世界与 UGC 的分片边界、发布管线与内容信任模型。
第 11 章 部署单元与故障域
| 节 | 文章 | 核心内容 |
|---|---|---|
| 11.1 | 11.1 部署单元怎么切 | 五维切分、部署单元表、循环依赖与状态归属校验 |
| 11.2 | 11.2 有状态服务的边界 | 状态外置/分区/租约、drain、双主拒绝 |
| 11.3 | 11.3 故障域与爆炸半径 | 故障域树、爆炸半径预算、隔离策略校验 |
本章主线:部署单元、有状态服务与故障域,量化一次故障的爆炸半径。
第 12 章 架构表达
| 节 | 文章 | 核心内容 |
|---|---|---|
| 12.1 | 12.1 C4、部署视图与数据流 | 四类视图、数据流与锚点、跨视图一致性 |
| 12.2 | 12.2 时序图、状态机与契约表 | 时序/状态机/契约表、同源生成、覆盖校验 |
| 12.3 | 12.3 架构决策的记录、评审与复盘 | 决策图与取代关系、复审触发、失效处理 |
本章主线:用 C4、时序、状态机与契约表把架构表达成可校验的材料。
第 13 章 卷一收口
| 节 | 文章 | 核心内容 |
|---|---|---|
| 13.1 | 13.1 三款产品的架构基线 | 三张基线卡、字段完整性、跨产品一致性 |
| 13.2 | 13.2 品类与拓扑决策矩阵 | 五特征四档、25 格矩阵、三产品回填与平局 |
| 13.3 | 13.3 进入卷二:把系统装进边界 | 五道未决问题、交接清单、阻塞判定 |
本章主线:把前十二章固化成三张基线卡、一张决策矩阵和一份交接清单。
三条阅读路径
路径 A:顺序通读。 从第 1 章开始,按章节顺序读。适合第一次系统补游戏服务端架构的读者。
路径 B:带着产品来。 先读 1.3 判断自己的品类落在哪种拓扑,再跳到对应品类章节。竞技读第 7 章,SLG/MMO 读第 8 章,休闲/小游戏读第 9 章,开放世界/UGC 读第 10 章。
路径 C:只关心决策。 读 1.2、1.3、2.2、2.3,配合附录 B 决策矩阵和附录 C 评审清单。适合正在做技术选型或评审的架构师。
可运行性口径
本卷代码统一放在 gsarch-lab(Go 1.26.0)中,按三级标注:
| 级别 | 判定 | 验收 |
|---|---|---|
| L1 | 纯逻辑/单包 | gofmt -l . 无输出、go vet ./...、go test ./... |
| L2 | 进程内端到端 | httptest 或本地端口,内存适配器 |
| L3 | 真依赖 | Docker Compose,PostgreSQL 17 等 |
卷一以 L1 为主,拓扑对照用 L2 跑通最小链路。未实跑的数字只写“示例值/预期值”。
相关阅读
- 《MMO 服务器开发·网络与并发内核》 :网络、协议、同步的实现细节。
- 《后端架构设计·架构基础与边界》 :通用后端的边界、契约与演进方法。
- 游戏服务端架构笔记 :单点问题的架构笔记合集。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。