posts

2021 年 12 月游戏服务器架构笔记导航:货币托管、副本锁定与跨分片邮件的 10 篇索引

本页是 content/posts/game/server/202112 目录下 10 篇游戏服务器架构笔记的主题导航,覆盖 RPC 超时预算、实体兴趣订阅、副本锁定与存档点、货币预占与托管、技能施放与打断、公会战报名与锁定、NPC 刷新租约、玩家举报证据流水线、赛季商店库存、跨分片邮件路由十个方向。每篇给出真实 slug 链接与一句话核心内容,并按「战斗与副本状态、货币托管与商店库存、邮件路由与 RPC 预算、兴趣订阅与租约」四组重新编排。

这个目录是 2021 年 12 月的游戏服务端架构笔记合集,10 篇,也是这条月度笔记线的收官。本月把前面十个月反复出现的模式做了收敛:托管、租约、订阅、预算、锁定,这些词背后其实是同一类问题的不同命名——一件资源在同一时间只能由一个明确的角色负责。

具体到本月,几条主线分别是:技能施放与副本锁定处理「战斗与进度的边界」,货币托管与商店库存处理「扣减与发货的一致性」,邮件路由与 RPC 预算处理「跨分片与跨服务的可靠性」,兴趣订阅、NPC 租约、公会战报名与举报证据则处理「谁能看到什么、谁能动什么、谁留下了什么记录」。

它适合正在做交易与货币、副本与公会战、跨服通信与风控的服务端工程师,也适合需要给团队定「托管与租约」规范的架构师。使用方式:先看速览确定系统归属,再按四个主题小节跳转;每篇都从一个真实争议讲起,落到托管模型、锁定窗口与预算口径。

需要说明的是,本页只做导航,不重复文章内容。所有链接都指向文章的真实根级 slug,四个分组按「读者要解决的系统问题」划分,同一篇只归入最贴近的一组,以免导航膨胀成重复列表。

专题速览

项目内容
本目录直接文章10 篇
时间跨度2021-12-02 至 2021-12-29
主题分组4 个(战斗与副本状态、货币托管与商店库存、邮件路由与 RPC 预算、兴趣订阅与租约)
内容形态问题驱动型架构笔记,先给争议场景,再给托管模型、锁定窗口与预算口径
覆盖方向技能打断、副本锁定、货币托管、商店库存、邮件路由、超时预算
适用读者游戏后端工程师、服务端主程、负责交易与跨服系统的技术负责人
前置知识了解基本的托管/两阶段提交、租约与超时预算概念即可
阅读建议按主题跳转,四组相互独立;托管与副本两组建议优先阅读
单篇篇幅每篇约 3000 至 5000 字,含托管模型、锁定窗口与预算口径
复用价值托管、租约与超时预算三类模式可迁移到任何涉及资产与跨服务调用的系统
相关月份前接 2021 年 11 月的战场计分与转服预检主题,也是 2021 年全年月度笔记的收尾
维护方式新增文章时只补主题小节与速查表,不移动既有文件,保证公开 URL 稳定

战斗与副本状态

这一组处理「战斗与进度的边界」。技能系统最容易积累债务,若只把技能当成「收到请求后立即扣蓝并造成伤害」的函数,后续每加一个打断规则都会变成条件分支,因此需要把前摇、后摇、霸体、沉默与取消窗口显式建模;多人副本最怕进度说不清,队长掉线、成员换人、服务器重启与故意卡点都需要锁定与存档点来界定。

两篇的共同结论是:战斗与副本都需要把「阶段」和「资格」写成显式状态,而不是靠内存里的临时字段。

文章一句话核心内容
游戏服务器技能施放与打断架构设计显式建模前摇、后摇、霸体与取消窗口,避免打断规则变成条件分支
游戏服务器副本锁定与存档点架构设计用锁定与存档点界定进度与奖励资格,处理掉线、换人与重启

货币托管与商店库存

这一组处理「扣减与发货的一致性」。货币扣减比发奖更敏感,玩家买东西、挂拍卖、竞拍与抽卡时一旦出现扣了钱没拿到东西,信任会迅速崩塌,因此需要预占与托管而不是先扣再补;赛季商店则从几件商品逐渐长出个人限购、全服库存、每日刷新、阶梯解锁与跨赛季继承,规则如果都写在购买接口里,补货与回滚时会非常被动。

两篇合起来说明:把「钱」和「货」都当成需要流水与余额两条记录的对象。

文章一句话核心内容
游戏服务器货币预占与托管架构设计用预占与托管替代先扣再补,保证扣减与发货两侧都说得清
游戏服务器赛季商店库存架构设计把限购、库存、刷新与继承从购买接口中拆出,支撑补货与回滚

邮件路由与 RPC 预算

这一组处理「跨分片与跨服务的可靠性」。邮件在单区单服很容易实现,但跨服活动、合区、玩家迁移与全服补偿之后,发送方不一定知道玩家在哪个分片,重复投递会造成附件重复领取;跨服务调用如果凭经验设置超时,会出现重试风暴与级联失败,因此需要超时预算与降级边界。

两篇的共同点是:跨服务可靠性要靠预算与幂等,而不是靠重试次数堆出来。

文章一句话核心内容
游戏服务器跨分片邮件路由架构设计处理跨服、合区与迁移下的邮件投递,避免重复投递与丢失
游戏服务器 RPC 超时预算架构设计用超时预算、降级边界与重试策略治理跨服务调用,避免级联失败

兴趣订阅与租约

这一组处理「谁能看到什么、谁能动什么、谁留下了什么记录」。实体兴趣订阅不只是 AOI,玩家可能离世界 Boss 很远却需要持续看到血量,商会成员不在同一地图也要看到仓库变动,观战者需要订阅双方技能与比分;NPC 刷新需要租约避免两个地图服同时刷新同一只精英;公会战报名则要在成员频繁进出公会与临近截止调整阵容的情况下确定资格;举报证据流水线要在正确时间采样、关联与留存。

四篇的共性是把「关系、所有权、资格、证据」四类信息显式建模。

文章一句话核心内容
游戏服务器实体兴趣订阅架构设计把兴趣订阅从距离扩展到关系与玩法,处理跨图与观战场景
游戏服务器 NPC 刷新租约架构设计用租约避免重复刷新,处理地图分线、热区迁移与重启接管
游戏服务器公会战报名与锁定架构设计明确报名资格、锁定窗口与阵容变更规则,减少赛季争议
游戏服务器玩家举报证据流水线架构设计在正确时间采样与关联证据,让处罚有依据且可追溯

本月主题脉络

12 月的十篇笔记有一条共同主线:资源必须有唯一的负责角色。货币要托管,商店库存要有流水,邮件要有幂等键,NPC 要有租约,副本要有锁定,公会战报名要有资格状态。这其实就是前面十个月反复出现的租约、预占与账本模式在本月的集中收束。

第二条主线是「跨服务调用要可预算」。RPC 超时预算、跨分片邮件路由,都在回答「当调用对方不确定、可能慢、可能重复时,调用方该如何自保」,答案是把超时、降级、重试与幂等写成显式预算而不是默认值。

第三条主线是「记录本身就是能力」。举报证据流水线、商店库存流水、副本存档点、公会战报名状态,本月几乎每一篇都在强调:能留下可复核的记录,系统才能在争议中站得住。

本月文章速查

按发布时间排列,便于对照当月写作节奏与主题推进顺序。表格里的分组与本页上面的四个主题小节一一对应。

日期文章所属分组
2021-12-02游戏服务器 RPC 超时预算架构设计邮件路由与 RPC 预算
2021-12-05游戏服务器实体兴趣订阅架构设计兴趣订阅与租约
2021-12-08游戏服务器副本锁定与存档点架构设计战斗与副本状态
2021-12-11游戏服务器货币预占与托管架构设计货币托管与商店库存
2021-12-14游戏服务器技能施放与打断架构设计战斗与副本状态
2021-12-17游戏服务器公会战报名与锁定架构设计兴趣订阅与租约
2021-12-20游戏服务器 NPC 刷新租约架构设计兴趣订阅与租约
2021-12-23游戏服务器玩家举报证据流水线架构设计兴趣订阅与租约
2021-12-26游戏服务器赛季商店库存架构设计货币托管与商店库存
2021-12-29游戏服务器跨分片邮件路由架构设计邮件路由与 RPC 预算

推荐阅读路径

路径一 做交易与货币系统的同学

先读货币预占与托管与赛季商店库存,建立「钱货两清要有流水与余额」的认知。再读 2021 年 3 月的拍卖冻结与 2021 年 7 月的库存预占,把预占模式扩展到交易与背包;最后读跨分片邮件路由,覆盖补偿发放。

路径二 做副本与公会战的同学

从副本锁定与存档点进入,掌握进度与资格的界定方式;再读公会战报名与锁定,理解报名资格与阵容变更的规则设计。最后读 2021 年 8 月的副本进度恢复,把断线恢复与锁定补齐。

路径三 做跨服通信与风控的同学

先读 RPC 超时预算与跨分片邮件路由,建立「跨服务调用要有预算与幂等」的认知。再读实体兴趣订阅与 NPC 刷新租约,理解跨服务所有权处理;最后读玩家举报证据流水线,把风控闭环收口。

交叉阅读提示

相关专题

全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev Products Lua 写作

游戏服务器赛季商店库存架构设计

赛季商店往往一开始只是配置几件商品,后来逐渐加入个人限购、全服库存、每日刷新、阶梯解锁、会员折扣、补偿兑换和跨赛季继承。最危险的是把这些规则都写在购买接口里:检查配置、检查余额、检查限购、扣钱、扣库存、发货。等活动运营需要临时补货或回滚时,团队才发现没有库存流水,也解释不了玩家为什么买不了。

8 分钟阅读

游戏服务器公会战报名与锁定架构设计

公会战看起来像一个活动入口,实际是社交、赛程、奖励和公平性纠缠在一起的控制面。报名期间成员频繁进出公会,管理者可能临近截止时间调整阵容,服务器要生成对阵和战场实例,运营还希望支持延期、补偿和重赛。若报名只是一张 guild_war_signup 表,到了赛季中后期就会遇到各种争议:谁有资格参战,转会成员算不算,报...

8 分钟阅读