这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《后端架构设计·演进与治理》13.1 arch-lab 从模块化单体到两服务
从 arch-lab 订单系统把库存与支付拆成两个进程内服务的一次演练切入,对比共享库、单体事务与端口补偿三种方案,给出带状态机、幂等预占、崩溃恢复和跨服务审计的 Go 实现,并用固定时钟与失败注入跑通支付失败补偿和两处崩溃点恢复的完整测试。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
从 arch-lab 订单系统把库存与支付拆成两个进程内服务的一次演练切入,对比共享库、单体事务与端口补偿三种方案,给出带状态机、幂等预占、崩溃恢复和跨服务审计的 Go 实现,并用固定时钟与失败注入跑通支付失败补偿和两处崩溃点恢复的完整测试。
《群岛纪元》要全球同服,《裂隙战场》只能区域对局,《泡泡工坊》连房间都不需要全局状态。本文比较全球单世界、分区世界与混合三种形态,拆开玩家主数据、世界状态、联盟关系与排行榜的写归属,给出跨区可见性窗口和迁移状态机,并附 internal/globalstate 的 Go 实现与六组表驱动测试。
《潮汐方舟》七语言文本层的事故复盘:key 按语义设计而不是抄文案,语言包按完整目录加载并沿 zh-Hant→zh-Hans→en 回退,排版按 1.3 倍膨胀预留空间,字体按脚本子集化。给出 key 校验、回退链、宽度估算、RTL 与字体预算的可运行模型。
《群岛纪元》的全球客服与支付对账,把同一张玩家表里的身份、支付、日志和回放推到了不同区域的合规边界。本文按数据类别而不是按表定义驻留规则,比较区域内闭环、脱敏汇聚与授权传输三种机制,说明只读副本、跨区注销与墓碑保留的边界,并附 internal/dataregion 的 Go 实现与六组表驱动测试。
《裂隙战场》的跨区观战和《群岛纪元》的全球集结,把端到端延迟拆成接入、区域间与存储三段。本文给出三款产品的示例预算表、客户端测速与登录下发网关列表的组合方式,以及跨区组队把两个区域绑在一起时的降级边界,并附 internal/latencybudget 的 Go 实现与五组表驱动测试。
从 arch-lab 订单团队第 26 天用完整月预算的场景切入,说明预算预警、预测与耗尽日如何构成可解释的门禁,给出基于中位数绝对偏差的异常检测、责任团队解析的可运行 Go 实现,以及本机真实测试输出、评审判据与常见错误,全部附原始输出。
从《裂隙战场》凌晨缩容导致早场排队、结算前强制迁移的两次事故出发,比较直接关机、停止新开与排空后超时强制三种做法,给出对局、大厅与世界服的体验分级、缩容迟滞判定和预留加按需的分层成本估算,并附一个可运行、可测试的 Go 排空状态机与成本模型。
从一次只读降级后没人敢回切的订单故障出发,把 RTO 拆成依赖图上的关键路径、把 RPO 拆成已确认序号与副本序号的差,给出可运行的状态机、RPO 计算与 RTO 关键路径 Go 实现,附本机测试输出、演练脚本、验收表与回切前置条件,并明确跨机房数字必须由真实演练校准。
发布前扫描器报告零错误,上线后仍收到「弹窗关不掉」「读屏走不通」的投诉:自动规则测不到焦点陷阱,也没有严重级别来决定先修什么。本节把规则集、严重级别、加权覆盖度、验收门槛与人工走查清单写成一套可执行的审计模型,并说明为什么覆盖度与门槛必须一起看。
从订单支付状态在两个机房互相覆盖的具体故障出发,说明双向复制为什么必须先解决回环与归属,再谈冲突合并;给出带路径回环检测、归属校验和版本向量判定的 Go 副本实现,用本机测试覆盖 A 到 B 再回 A 的回环、重复投递、非归属写入、陈旧事件与并发版本,并附冲突处置决策表。
从一个单元故障却拖垮全局订单入口的场景出发,拆解单元化、同城双活与异地多活的隔离边界,给出带容量校验和故障影响计算的 Go 拓扑模型,用三组可运行测试对比单单元故障、双单元同时故障与仅备用单元故障时的写入阻塞、读到旧数据和冗余损失,并附拓扑选型决策表与退出条件。
从《泡泡工坊》开服洪峰房间创建 P99 从 4 秒涨到 38 秒的现场出发,拆解镜像拉取、进程启动、配置加载与预热四段冷启动成本,说明暖池水位、预热深度、租借超时与归还协议如何共同决定扩容速度,并给出带状态机、可运行、可测试的 Go 暖池实现。
改系统时间刷离线收益、改存档金币,是移动游戏最常见的两类作弊。本节先区分校验和与签名,再用服务端时间锚点、离线窗口与速率上限、服务端权威字段三道闸门拦截,最后按签名、时间、保留期与版本在候选档中选出上一个可用存档,并给出可运行的 migrate.ts 与 16 条测试。
下单失败时错误条只在视觉上出现,读屏用户什么也没听到;优惠券排序只能拖动,键盘用户无法完成;系统开了「减少动效」,页面仍在自动轮播。本节把播报内容、键盘绑定与减少动效、放大字体、高对比三类偏好映射写成可测试的纯函数,并说明去重与里程碑为什么必须进入模型。
从《裂隙战场》扩容后房间仍然创建失败的现场出发,比较物理机、虚拟机、容器与专用进程在 UDP 端口、CPU 绑定、大页和内核参数上的约束差异,说明端口唯一性、版本匹配、亲和与故障域打散应放进调度器还是留给服务,并给出带失败原因编码的可运行 Go 放置器。
用 60 条确定性样本跑完基线,得到成功率、P95 延迟、单次成本、缓存命中率与降级率,再按影响乘概率生成风险清单,并给出进入卷二的七项条件。文中数字来自 ai-lab 的示例样本运行结果,不是生产实测;同时说明样本量、阈值与风险分档为什么必须一起写清楚。
从 arch-lab 结算服务预留 100 台、实际峰值只剩 60 台、每月白付 2400 元的场景切入,对比全按量、部分预留与过量预留三种方案,给出覆盖率、闲置率与盈亏平衡利用率的 Go 计算模型、闲置回收排序、判据表与可复现的真实测试输出。
余量不是 30%,而是“掉一个可用区、来一次活动、发一次坏版本”时还能不能接住。本文对比自底向上与自顶向下两种容量模型,给出 CPU、内存、带宽、连接四层的估算方法,把 N+1、故障域、活动、发布四类余量写成可校验的故障场景,并用 Go 实现分层利用率、瓶颈定位、余量校验与扩容触发时间计算。
读屏用户听到一连串「按钮」,键盘用户按 Tab 从页头直接跳到页脚,弹窗打开后焦点再也出不去。本节把角色、名称、状态与语义节点树写成可校验模型,用 tabIndex 与 DOM 顺序计算焦点顺序,并把跳过、陷阱、丢失三类异常变成可执行的检测函数。
机器人压测最常见的结果是“通过了”,最常见的原因是机器人替服务器排了队。本文比较脚本化、录制回放、模型驱动三类行为模型的真实度与成本,讨论影子集群、只读副本与压测标记账号的隔离做法,并给出时间压缩、并发放大与依赖打桩的处理边界;最后用 Go 实现速率曲线、开放环到达与排队占比统计。