这个目录是 2021 年 8 月的游戏服务端架构笔记合集,10 篇,本月的统一开场是「架构问题通常藏在正常路径之外」。作者用这一批笔记说明:技能、分区、通知、排行榜这些系统在主流程跑通之后都还能工作,真正的问题出现在压力、边界与并发同时出现的时候。
具体到本月,几条主线分别是:技能效果流水线与实时指令整形处理「战斗主循环的可维护性与流量治理」,副本恢复与批量领奖处理「断线后与一键操作下的一致性」,排行榜、空间索引与分片缓存处理「读写的规模问题」,好友邀请、通知投递与分区交接则处理「多服务之间的边界」。
它适合正在做战斗技能、开放世界、排行榜与社交系统的服务端工程师,也适合需要给团队定「读缓存与写缓冲」规范的主程。使用方式:先看速览确定系统归属,再按四个主题小节跳转;每篇都从一个真实边界讲起,落到数据模型、缓冲策略与交接协议。
需要说明的是,本页只做导航,不重复文章内容。所有链接都指向文章的真实根级 slug,四个分组按「读者要解决的系统问题」划分,同一篇只归入最贴近的一组,以免导航膨胀成重复列表。
专题速览
| 项目 | 内容 |
|---|---|
| 本目录直接文章 | 10 篇 |
| 时间跨度 | 2021-08-03 至 2021-08-29 |
| 主题分组 | 4 个(技能结算与实时指令、副本恢复与奖励领取、排行榜与分片缓存、社交通知与世界分区) |
| 内容形态 | 问题驱动型架构笔记,先给压力或边界场景,再给流水线、缓冲与交接协议 |
| 覆盖方向 | 技能结算、指令整形、进度恢复、批量领奖、排名写入、缓存协同 |
| 适用读者 | 游戏后端工程师、服务端主程、负责战斗与开放世界的技术负责人 |
| 前置知识 | 了解基本的流水线设计、写缓冲、缓存失效与所有权交接概念即可 |
| 阅读建议 | 按主题跳转,四组相互独立;技能与分区两组建议优先阅读 |
| 单篇篇幅 | 每篇约 3000 至 5000 字,含流水线结构、缓冲策略与交接协议 |
| 复用价值 | 写缓冲、缓存协同与所有权交接三类模式可迁移到任何高并发系统 |
| 相关月份 | 前接 2021 年 7 月的旁路计算与租约主题,后续为 9 月的确定性输入与熔断主题 |
| 维护方式 | 新增文章时只补主题小节与速查表,不移动既有文件,保证公开 URL 稳定 |
技能结算与实时指令
这一组处理「战斗主循环的可维护性与流量治理」。技能系统很容易从一段简单代码长成一团条件分支,护盾、免控、反伤、元素克制、套装触发与活动加成会不断叠加,因此需要把伤害、控制与触发器拆成流水线;实时指令则需要按价值处理流量,低价值合并、高价值保留,而不是超过阈值就简单丢包。
两篇的共同结论是:战斗侧的复杂度要靠结构化解,而不是靠更快的机器。
| 文章 | 一句话核心内容 |
|---|---|
| 技能效果结算流水线架构:让伤害、控制与触发器各走其位 | 把技能拆成伤害、控制与触发三段流水线,避免条件分支无限膨胀 |
| 实时指令整形架构:限频不是把玩家操作简单丢掉 | 按指令价值合并或保留流量,兼顾手感与房间线程保护 |
副本恢复与奖励领取
这一组处理「断线后与一键操作下的一致性」。副本玩法处在「时间长、状态多、奖励重」的交叉点,玩家打到最后一个 Boss 断线、实例被回收后,系统要能恢复进度又防止重复领奖;批量领奖则要在十几个任务、邮件与通行证节点之间处理幂等、背包容量与货币上限。
两篇合起来说明:可恢复状态、不可恢复过程与奖励边界必须分开定义。
| 文章 | 一句话核心内容 |
|---|---|
| 副本进度保存与恢复架构:断线、重登和跨服失败后的继续游戏 | 区分可恢复状态与不可恢复过程,处理断线重登与重复领奖防护 |
| 批量奖励领取架构:一键领取背后的幂等、容量和补偿 | 处理多来源奖励的幂等、容量、上限与失败补偿,避免跨系统事务 |
排行榜与分片缓存
这一组处理「读写的规模问题」。排行榜看起来只是按分数排序,实际承受很高的写入压力,每次结算都可能触发排名更新,因此需要写缓冲与批量刷新;空间事件索引要把触发器、采集点与区域效果组织成可高效查询的结构,避免每帧全表扫描;分片本地缓存则要在快读、脏读与失效风暴之间找平衡,避免所有实例同时回源。
三篇的共同点是:把高频写入与热点查询从数据库和全表扫描里解放出来。
| 文章 | 一句话核心内容 |
|---|---|
| 排行榜写缓冲架构:高频积分变化如何不打垮排名服务 | 用写缓冲与批量刷新吸收高频积分变化,保护结算链路与排名服务 |
| 空间事件索引架构:地图上的触发器、采集点和区域效果如何高效查询 | 为空间事件建立索引,避免每帧全表扫描并支撑区域效果查询 |
| 分片本地缓存协同架构:快读、脏读和失效风暴之间的平衡 | 设计本地缓存的失效与回源策略,避免脏读与同时失效打爆数据库 |
社交通知与世界分区
这一组处理「多服务之间的边界」。好友系统在真实环境里有很多交叉动作,A 发申请后撤回、B 同时同意、B 拉黑的同时 A 又发组队邀请,都需要一致性处理;通知如果都走同一条实时推送链路,关键消息会被低价值红点挤掉,因此要按优先级投递;开放世界最怕玩家走到分区边界,因为位置连续但所有权必须离散转移,交接内容必须明确。
三篇合起来说明:跨服务协作要先把「谁负责什么」写清楚,再谈消息如何传递。
| 文章 | 一句话核心内容 |
|---|---|
| 好友邀请一致性架构:申请、同意、拉黑和撤回如何不打架 | 处理并发申请、撤回、拉黑与重试,保证关系状态收敛且可解释 |
| 游戏通知优先级投递架构:红点、弹窗和系统消息不能抢同一条路 | 按优先级与渠道分发通知,避免关键消息被低价值提示淹没 |
| 开放世界分区切换架构:玩家跨边界时服务端到底交接什么 | 明确分区交接的所有权、订阅与状态同步内容,保证跨边界连续 |
本月主题脉络
8 月的十篇笔记有一条共同主线:用结构而不是用性能解决问题。技能拆成流水线,副本恢复拆成可恢复与不可恢复,排行榜拆成写入缓冲与查询视图,空间事件拆成索引与查询,缓存拆成读取路径与失效路径。本月几乎每一篇都在做同一件事:把一个混合了多种关注点的模块切开。
第二条主线是「把高频写入与热点读取隔离」。排行榜写缓冲、分片本地缓存、空间事件索引,都在回答「当写入量或查询量超过数据库能力时该怎么办」,答案是引入中间结构并明确其一致性边界。
第三条主线是「跨服务边界要有协议」。好友关系、通知投递与分区交接都涉及两个以上服务,本月把它们统一处理为「先定义所有权与状态,再定义消息与重试」,这与 7 月的租约原则形成呼应。
本月文章速查
按发布时间排列,便于对照当月写作节奏与主题推进顺序。表格里的分组与本页上面的四个主题小节一一对应。
| 日期 | 文章 | 所属分组 |
|---|---|---|
| 2021-08-03 | 技能效果结算流水线架构 | 技能结算与实时指令 |
| 2021-08-06 | 开放世界分区切换架构 | 社交通知与世界分区 |
| 2021-08-08 | 游戏通知优先级投递架构 | 社交通知与世界分区 |
| 2021-08-11 | 排行榜写缓冲架构 | 排行榜与分片缓存 |
| 2021-08-14 | 好友邀请一致性架构 | 社交通知与世界分区 |
| 2021-08-17 | 副本进度保存与恢复架构 | 副本恢复与奖励领取 |
| 2021-08-20 | 批量奖励领取架构 | 副本恢复与奖励领取 |
| 2021-08-23 | 实时指令整形架构 | 技能结算与实时指令 |
| 2021-08-26 | 空间事件索引架构 | 排行榜与分片缓存 |
| 2021-08-29 | 分片本地缓存协同架构 | 排行榜与分片缓存 |
推荐阅读路径
路径一 做战斗与技能系统的同学
先读技能效果结算流水线与实时指令整形,建立「结构化拆分」与「按价值治理流量」两个认知。再读 2021 年 5 月的临时属性快照与 2021 年 12 月的技能施放与打断,把技能链路的边界补全。
路径二 做开放世界与分区的同学
从开放世界分区交接进入,理解所有权离散转移的含义;再读空间事件索引,掌握热点查询的索引化方式。最后读 2021 年 7 月的世界对象租约与 2021 年 11 月的场景物件持久化,覆盖动态对象的完整生命周期。
路径三 做社交与运营系统的同学
先读好友邀请一致性与通知优先级投递,把关系状态与消息分级固定下来。再读批量奖励领取与 2021 年 5 月的奖励预览契约,覆盖预览到到账的全过程;最后读 2021 年 11 月的社交在线隐私,补齐可见性边界。
交叉阅读提示
- 副本进度恢复与 2021 年 12 月的副本锁定存档是同一主题的两个阶段,建议连续阅读。
- 分片本地缓存与 2021 年 6 月的在线状态对账都涉及多实例视图收敛,建议对照阅读。
- 实时指令整形与 2021 年 9 月的消息乱序缓冲同属实时链路治理,建议一起看。
相关专题
- 游戏服务器专题总览,本目录所在的上层专题,可按框架、工程与月度三条主线查找
- 2021 年 7 月服务器笔记,本月的上一期,聚焦旁路计算与资产预占
- 2021 年 9 月服务器笔记,本月的下一期,转向确定性输入与运营熔断
- 游戏服务器实战工程,更偏工程落地的同主题笔记合集
- Pitaya 分布式框架,从分布式框架角度理解分区与路由的实现方式
- 游戏引擎专题,从运行时原理理解空间索引与同步的底层背景