这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《游戏服务端架构·规模化、全球化与成本》6.2 积压、顺序与死信
《群岛纪元》赛季结算夜,队列只有 12 万条、没到告警阈值,最老消息却已等了 47 分钟;《裂隙战场》把失败结算丢回队尾重试,后到的结算先执行,同一局被扣了两次分。本节比较条数、字节与最老消息年龄三个积压指标,拆开顺序与并发的取舍,并给出毒消息隔离与幂等重放的可运行夹具。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《群岛纪元》赛季结算夜,队列只有 12 万条、没到告警阈值,最老消息却已等了 47 分钟;《裂隙战场》把失败结算丢回队尾重试,后到的结算先执行,同一局被扣了两次分。本节比较条数、字节与最老消息年龄三个积压指标,拆开顺序与并发的取舍,并给出毒消息隔离与幂等重放的可运行夹具。
《群岛纪元》一次 broker 切换让庆典邮件重投,发奖服务没有幂等,同一份奖励发了两次。本节把 at-most-once、at-least-once 与“业务幂等换 exactly-once”放回北辰三款产品的具体链路,给出延迟、顺序、积压、运维四维选型判据,以及消息键、版本、重试头与死信地址的生产消费契约。
《潮汐方舟》多区域发行的事故复盘:商店区域、服务区域、内容分级与语言必须拆成四个轴,分级结论要驱动资源变体、概率披露与购买限制,区域覆盖包必须原子应用,语言选择不能靠设备推断。隐私与数据出境只给接口边界,不做法律判断,并给出可运行配置模型与工程边界。
把卷一十三轮的判断压缩成一份可打印的评审清单:能力与契约、网关职责、路由与模型组合、流式、提示与上下文、结构化输出、预算与成本、缓存、降级、安全边界、观测计量、演进入口共十二组六十问,每组附通过判据、常见驳回理由与整改建议,末页给出三十分钟评审流程与结论模板。
从一次合并后三周无人认领的线上问题出发,把代码所有权拆成路径规则、owner 映射、覆盖度、评审路由与无人负责路径识别五部分,给出可运行的 TypeScript 模块与测试。文中说明优先级覆盖、通配规则边界、兜底 owner 的取舍,以及所有权规则为什么会悄悄失效。
四卷收口篇把前三卷与卷四的能力整理成一张可校验的覆盖矩阵:用 L0 到 L3 的成熟度和文档、测试、演练、遥测四类证据约束声明,用依赖图与环检测排出路线顺序,并拒绝过期或越级的证据;给出可运行的 Go 校验器、跨四卷的示例矩阵与真实测试输出,最后说明这套治理如何持续运转。
把卷一反复使用的两类产物压缩成可直接抄用的速查:能力契约模板(六面承诺、请求响应形状、预算与降级字段)与错误模型速查(九类错误、可重试判定、HTTP 映射、用户可见文案、记录字段);另附五种能力的契约对照、流式事件与结构化输出失败表,以及预算算式与契约评审检查点。
从《群岛纪元》攻城结算后立刻刷新仍看到旧战功的现象切入,拆解主从延迟窗口与读己之写的冲突,比较令牌、会话粘滞与强制读主三种手段的代价,给出资产、结算、支付、封禁等读的主库判定,以及从库故障、主库压力和复制中断时的降级顺序与可运行 Go 实现。
卷三的 L2 实验只能证明状态机和故障处理,不能证明共识性能、跨单元冲突率、演练覆盖和组织成本。本节把四类未证明假设整理成带责任、指标、阈值、窗口和截止日期的交接表,并给出一个 Go 校验器,拒绝没有验收口径、缺少截止日期或把未证明项标成已接受的清单。
订单在 3 号分片、库存在 7 号分片时,本地事务失效。本节用进程内 L2 实验跑通 outbox + Saga 下单链路,注入重复投递、提交后超时、relay 崩溃和支付拒绝,断言库存不超卖、订单状态与预占一致、支付不重复,并让对账任务把差异收敛到零。
订单库从 4 个分片扩到 5 个时,按用户取模会让八成键搬家。本节用可运行的 Go 分片实验比较取模与 rendezvous 路由,给出按用户查询与跨分片查询的边界、全局 ID 的时钟回拨保护、双写迁移的 journal 与切换门,以及只允许在切换前执行的回滚条件。
从一次没人记得的架构决策出发,把 ADR 拆成九个必填字段、四态生命周期、集合级完整性校验与契约变更登记,并给出可运行的 TypeScript 模块与测试。文中说明哪些决策该接受、哪些该取代、契约变更如何绑定决策,以及校验失败时应该回退到哪一层。
把卷一的核心术语与判据压缩成速查表:能力契约、网关、路由、流式、提示、结构化输出、预算、缓存、降级、安全、观测与治理十二组,每组给出定义、判断条件、常见误用与对应章节;另附一页纸十二问与中英对照,可作为评审前的对齐材料,也适合新人快速上手。
从《裂隙战场》开赛瞬间单 key 被打爆的现象出发,说明游戏里热 key 的三种形态、按房间与分片识别的方法,区分穿透、击穿与雪崩的具体成因,比较本地化、拆 key、请求合并与逻辑过期的代价,并给出带空值缓存与旧值兜底的可运行 Go 实现。
从《群岛纪元》跨服榜单读到旧名次的事故切入,按配置表、玩家快照、榜单、社交关系四类对象划分本地与分布式缓存职责,比较两级缓存的失效路径与写入权归属,说明广播丢失后的版本水位、可疑标记与重同步兜底,并给出可运行 Go 实现、表驱动测试与失败模式清单。
从 arch-lab 周五晚一次被 SLO 燃尽率拦下的发布切入,说明单窗口阈值为什么会放过慢泄漏,给出快慢双窗口、冻结窗口、样本下限与预算余量的 Go 门禁,再用带稳态断言和止损边界的混沌计划编排发布前演练,并用真实测试输出验证门禁与中止路径。
《潮汐方舟》赛季结算的事故复盘:活动边界只认服务器 epoch,客户端时区只负责显示,每日重置按账号区域而不是设备时区。给出 RTT 半程同步、单调时钟锚点、设备回拨检测、DST 日界线、窗口判定与时间回拨观测的可运行模型以及客服排查口径。
《群岛纪元》在赛季中迁移公会数据时,玩家一次购买超时重试,第一次写入源分片、第二次落到目标分片,差点扣两次款。本节拆解源可读可写、双写、目标接管三态路由,给出读修复、版本冲突与幂等账本的规则,并用可运行的 Go 状态机验证,最后附切换门禁与回滚窗口检查项。
《群岛纪元》赛季前要把 16 个分片扩到 24 个,按玩家 ID 取模会让大部分数据重排。本节比较取模、目录表与一致性哈希的搬迁成本,讨论按玩家、按公会、按分片段的迁移单位,给出可运行的哈希环、虚拟节点与迁移计划生成代码,并附限速、容量预留与回滚清单。
《群岛纪元》的联盟名单按公会切、联盟仓库却按玩家切,一次跨服报名要扫 16 个分片。本节比较玩家、账号、区服、公会四种分片键的热点与共置后果,给出读扩散与写扩散的选择,并用可运行的 Go 目录表校验共置承诺、估算分片偏斜,最后给出热点分片的兜底手段。