本卷要解决什么
卷一回答了“服务怎么摆”,卷二回答“系统之间怎么约定”。拓扑定下来之后,真正决定项目能否稳定交付的,是账号、登录、匹配、房间、战斗、结算、经济、社交、榜单、邮件、支付这些系统之间的边界与契约。
本卷拆成四件事:
- 把每个核心系统的数据所有权写清楚:谁唯一写入、谁只能读、删除由谁负责;
- 把写操作的幂等语义写清楚:重复回调、超时重试、任务重跑分别会怎样;
- 把失败语义写清楚:超时、部分成功、依赖不可用时返回什么、谁兜底;
- 用三款产品对照,说明同一系统在不同品类下的契约强度为什么不同。
卷三处理规模化、全球化与成本,卷四处理平台化与架构治理。本卷只划系统边界,不展开容量规划与多地域部署。
贯穿案例:北辰工作室
| 产品 | 品类 | 卷二重点 | 首要矛盾 |
|---|---|---|---|
| 《裂隙战场》 | 5v5 竞技 | 登录重连、匹配、房间、战斗结算、赛季榜单 | 实时性与公平性 |
| 《群岛纪元》 | SLG | 渠道账号、跨区分片、异步战报、资源账本、联盟 | 持久性与结算一致性 |
| 《泡泡工坊》 | 休闲小游戏 | 游客账号、轻量登录、快速开局、邮件补偿、小额支付 | 上线速度与成本上限 |
平台侧统一为 northstar-platform。同一项能力在三款产品里的使用方式,会在第 13 章的契约矩阵中收口。
全书结构:13 章分六段
| 段落 | 章节 | 回答的问题 | 本段产出 |
|---|---|---|---|
| 一、接入与身份 | 第 1–2 章 | 账号怎么分层?登录态与连接归属怎么定? | 身份模型、票据状态机、网关归属表 |
| 二、对局与战斗 | 第 3–5 章 | 匹配、房间、场景、战斗与结算怎么约定? | 匹配判据、房间状态机、结算幂等契约 |
| 三、经济与成长 | 第 6–7 章 | 钱与成长怎么记账、怎么防重? | 双分录账本、交易托管、重置窗口 |
| 四、社交与运营 | 第 8–10 章 | 关系、公会、聊天、榜单、邮件怎么保证一致性? | 权限矩阵、榜单读写模型、投递去重 |
| 五、支付与平台 | 第 11–12 章 | 钱怎么进来、平台能力怎么收放? | 支付状态机、对账差异分类、租户隔离 |
| 六、收口 | 第 13 章 | 三款产品怎么共用平台?边界如何交接? | 契约矩阵、所有权总表、就绪检查点 |
全书目录
前置与附录
| 篇 | 文章 | 核心内容 |
|---|---|---|
| 序 | 序:拓扑定下来之后,真正难的是系统之间怎么约定 | 卷一与卷二的分工、三个反复出现的问题、四个写作立场 |
| 前言 | 前言:系统契约怎么写成可验证的东西 | 技术基线、13 章验证包、L1–L4 口径、按角色阅读 |
| 目录 | 目录与学习路径 | 本页:十三章结构、三条阅读路径与可运行性说明 |
| 附录 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 网关路由与连接归属 | 网关职责、rendezvous 路由、节点摘除与归属对账 |
| 2.3 | 2.3 登录排队、限流与开服洪峰 | 排队语义、公平性与等待估算、拒绝与退避、重试放大 |
本章主线:从登录态到连接归属再到洪峰,划清接入层与业务层的责任。
第 3 章 匹配与房间
| 节 | 文章 | 核心内容 |
|---|---|---|
| 3.1 | 3.1 匹配算法与公平性 | 分段与窗口扩展、队伍与延迟、匹配质量与等待取舍 |
| 3.2 | 3.2 房间生命周期与幽灵房间 | 房间状态机、租约与心跳、幽灵检测、结算交接 |
| 3.3 | 3.3 实例分配、暖池与回收 | 租约分配、暖池与冷启动、故障回收、资源碎片 |
本章主线:匹配决定“和谁玩”,房间与分配器决定“在哪玩、玩完怎么收”。
第 4 章 场景与世界
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 4.1 AOI 选型:九宫格、十字链表与空间索引 | 先算消息量、三种方案对照、同步模型与切换触发 |
| 4.2 | 4.2 分线、副本与主城/野外 | 分线代价、迁移一致性、副本与共享世界边界、容量滞回 |
| 4.3 | 4.3 世界事件与全服广播 | 扇出估算、事件分级、分区订阅、去重与补发 |
本章主线:先算清消息量,再选 AOI、分线与广播方案。
第 5 章 战斗与结算
| 节 | 文章 | 核心内容 |
|---|---|---|
| 5.1 | 5.1 战斗服模型:房间内、旁路与托管 | 三种模型、tick 与故障域、崩溃恢复语义、选型判据 |
| 5.2 | 5.2 结算契约与防重复发奖 | 结算单状态机、幂等键、先落单再发奖、改判与冲正 |
| 5.3 | 5.3 战斗日志、回放与审计 | 日志分级、确定性回放 vs 记录回放、审计查询 |
本章主线:战斗跑在哪、结算怎么不重不漏、日志怎么支撑申诉。
第 6 章 经济与交易
| 节 | 文章 | 核心内容 |
|---|---|---|
| 6.1 | 6.1 货币、产出与消耗 | 货币分层、来源标签、双分录账本、对账频率 |
| 6.2 | 6.2 交易托管、冻结与回滚 | 托管状态机、冻结与可用余额、并发与跨服交易 |
| 6.3 | 6.3 经济风控与价格指数 | 异常信号、价格指数的局限、处置手段与申诉 |
本章主线:账本可审计、交易可回滚、风控有边界。
第 7 章 成长与任务
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 7.1 属性、成长与状态机 | 属性来源分层、计算顺序、成长状态机与非法迁移 |
| 7.2 | 7.2 任务事件与进度服务 | 上报 vs 订阅、进度去重、跨天补算、并发完成 |
| 7.3 | 7.3 每日重置、时区与赛季 | 重置边界、幂等与补做、赛季切换与未领奖励 |
本章主线:成长要可解释,进度要可去重,重置要可补做。
第 8 章 社交与公会
| 节 | 文章 | 核心内容 |
|---|---|---|
| 8.1 | 8.1 好友、黑名单与关系一致性 | 有向关系模型、双向一致性、删除清理、跨服边界 |
| 8.2 | 8.2 公会、权限与仓库 | RBAC、权限版本、仓库并发、解散与合并清算 |
| 8.3 | 8.3 聊天频道、审核与限速 | 频道扇出、限速与刷屏、审核位置、误封申诉 |
本章主线:关系要对称、权限要及时失效、聊天要能治理。
第 9 章 排行榜与赛季
| 节 | 文章 | 核心内容 |
|---|---|---|
| 9.1 | 9.1 榜单模型与分段 | 榜单类型、分段与同分规则、写模型选择 |
| 9.2 | 9.2 写缓冲、结算与赛季边界 | 批量刷榜、截止快照、幂等结算、赛季切换读一致性 |
| 9.3 | 9.3 榜单的读模型与缓存 | 整榜/分页/个人名次缓存、偏差窗口、热点降级 |
本章主线:榜单不是数据库查询,写入、结算与读取要分别设计。
第 10 章 邮件与奖励
| 节 | 文章 | 核心内容 |
|---|---|---|
| 10.1 | 10.1 邮件投递与去重 | 投递模型、去重键、全服扇出、重试与死信 |
| 10.2 | 10.2 附件、过期与流拍结算 | 附件状态机、过期策略、背包满处理、资产归属 |
| 10.3 | 10.3 批量领取、补偿与红点 | 批量领取语义、补偿批次、红点计数一致性 |
本章主线:邮件是可靠投递系统,也是补偿通道,两者都要幂等。
第 11 章 支付与合规
| 节 | 文章 | 核心内容 |
|---|---|---|
| 11.1 | 11.1 支付渠道与发货幂等 | 订单状态机、验签、回调去重、发货幂等 |
| 11.2 | 11.2 退款、对账与差异处理 | 退款状态机、差异分类、自动冲正与人工挂账 |
| 11.3 | 11.3 防沉迷、实名与未成年人保护 | 判定与执行分离、数据最小化、留存与删除传导 |
本章主线:支付状态与发货状态分开,合规判定与游戏执行分开。
第 12 章 平台服务化
| 节 | 文章 | 核心内容 |
|---|---|---|
| 12.1 | 12.1 账号、支付、社交、数据平台的职责 | 能力清单、收进平台的判据、平台与游戏的边界 |
| 12.2 | 12.2 多游戏复用与租户隔离 | 租户模型、隔离维度、配额与 noisy neighbor、版本兼容 |
| 12.3 | 12.3 平台 SLA 与产品团队的契约 | 分能力 SLA、变更与回滚承诺、责任边界与联合响应 |
本章主线:平台收什么、怎么隔离、用什么 SLA 对产品负责。
第 13 章 卷二收口
| 节 | 文章 | 核心内容 |
|---|---|---|
| 13.1 | 13.1 三款产品共用平台的契约矩阵 | 十项能力的共用方式、SLA 与降级责任、矩阵读法 |
| 13.2 | 13.2 系统边界与数据所有权总表 | 数据所有权、越权写入清单、与卷一拓扑基线对照 |
| 13.3 | 13.3 进入卷三:规模与全球化 | 未决问题、就绪检查点、进入规模化前的测量要求 |
本章主线:把前十二章固化成一张契约矩阵、一张所有权总表和一份交接清单。
三条阅读路径
路径 A:顺序通读。 从第 1 章开始,按“接入 → 对局 → 经济 → 社交 → 平台”的顺序读。适合第一次系统梳理游戏服务端核心系统的读者。
路径 B:带着系统来。 先看第 13 章的契约矩阵定位自己关心的能力,再跳到对应章节:账号登录读第 1–2 章,对局读第 3–5 章,经济读第 6 章,运营读第 8–10 章,支付合规读第 11 章,平台读第 12 章。
路径 C:只关心评审。 读 13.1、13.2、附录 B 与附录 C。适合正在做系统接入评审或事故复盘的团队。
可运行性口径
本卷代码统一放在 gsarch-lab(Go 1.26.0)中,按三级标注:
| 级别 | 判定 | 验收 |
|---|---|---|
| L1 | 纯逻辑/单包 | gofmt -l . 无输出、go vet ./...、go test ./... |
| L2 | 进程内端到端 | 内存适配器或本地端口,脚本完成主流程 |
| L3 | 真依赖 | Docker Compose,PostgreSQL 17 等 |
卷二以 L1 为主:每个系统至少有一个状态机或契约夹具;涉及唯一约束、支付回调的场景会说明 L3 应该验证什么,但不声称已经跑过。未实跑的数字只写“示例值/预期值”。
相关阅读
- 《游戏服务端架构·品类、状态与拓扑》 :卷一,拓扑、状态、连接与权威。
- 《MMO 服务器开发·网络与并发内核》 :网络、协议、同步与系统实现细节。
- 《后端架构设计·架构基础与边界》 :通用后端的边界、契约与演进方法。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。