这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《移动游戏产品的架构·客户端与移动运行时》9.3 功耗与发热的验收方法
手机发热后降频,平均帧率会掩盖最后十分钟的塌陷。本节以《潮汐消消》为主案例,给出长时间挂机与连续对局两套场景、四档温控曲线、帧率保持率与降频起点指标,并明确机内传感器只能建模:验收必须来自真机证据,模型输出不能签字,同时给出一套可复现的真机验收流程。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
手机发热后降频,平均帧率会掩盖最后十分钟的塌陷。本节以《潮汐消消》为主案例,给出长时间挂机与连续对局两套场景、四档温控曲线、帧率保持率与降频起点指标,并明确机内传感器只能建模:验收必须来自真机证据,模型输出不能签字,同时给出一套可复现的真机验收流程。
从 arch-lab 订单团队为一条部署流水线连开三张工单、却没有人对结果负责的场景切入,说明平台能力目录为什么必须先写非目标与退出条件,如何用五种需求路由处理新建、扩展、迁移与等待,并给出带依赖环和退役替换校验的 Go 实现与本机测试输出。
卷二收口不是把所有问题都回答完,而是把没回答的问题标出来。本节整理容量、跨区、成本、多地域四类未决项,给出进入卷三前必须有基线的检查点、measured 与 estimated 的判定规则,并附一个拒绝在无测量情况下放行全球化的可运行 Go 包。
一帧不是一整块时间,而是输入、逻辑、渲染、提交四段共享同一份预算。本节用《潮汐消消》一键收菜造成的 200ms 长帧,说明如何先归因再切片:输入与提交不切,渲染不跨帧,逻辑在安全点按批次让帧,并用可运行模拟器验证长帧归属与延迟,最后给出双案例的参数差异。
从一次密钥轮换把旧密文全部锁死、审计日志又无法证明完整性的双重事故切入,给出密钥版本重叠窗口、轮换状态机、SHA-256 审计哈希链与租户导出的 Go 实现,并附篡改、断号、尾部截断和轮换边界的本机测试输出与合规判据,说明哈希链挡不住尾部截断。
锁会过期、会丢、会被主从切换绕过,但库存不超卖、订单状态单向推进、支付回调只生效一次仍然可以成立。本节把这三条不变量写成可运行的 Go 条件更新与幂等代码,在完全不用分布式锁的 200 并发下实测成功预占恰好 50 次、库存不为负,并给出锁、版本号与幂等键的职责切分。
同意不是一个布尔值,而是一台有状态、有版本、可撤回的机器。本节实现未询问、已同意、已拒绝、已撤回四态状态机,演示采集前闸门、目的绑定、版本过期重问与撤回后的分目的清理,并给出可审计的判据与常见错误边界。同意管理不是弹窗文案问题,而是采集链路上的硬闸门。
结算任务在租约过期后仍继续写库存,是分布式锁最常见的生产事故。本节用可运行的 Go 租约管理器与 fencing token 存储复现两个持有者同时写入,实测陈旧 token 被拒绝、无 fencing 时迟到写入覆盖新值,并给出 Redis 主从切换、Redlock 与进程暂停下的安全边界。
订单号生成器看似只需时间戳加机器号,真实故障却来自时钟回拨、机器号重复和单毫秒序列溢出。本节用可运行的 Go 实现拆解 Snowflake 的位分配与回拨策略,再给出号段模式的双缓冲与数据库故障恢复,并用并发测试验证唯一性、单调性与重启后的续号行为。
第三方 SDK 的风险不该靠印象打分。本节用可解释的权重表计算风险分,覆盖权限差异、初始化时机、治理问题清单与下线证据检查,并讨论评分阈值、例外审批,以及「删依赖不等于下线」的工程边界,给出可复算的准入与退出判据。评分只是入口,能否上线与能否下线都要落到证据。
把账号、对局、经济、社交、榜单、支付等核心系统的数据归属收进一张总表:谁拥有、谁可读、保留多久、由谁删除;给出越权写入的禁止清单与事件、API、对账三种跨系统通道,讲解保留期起算与删除传导,并附一个检测直写、未登记通道和拓扑漂移的可运行 Go 包。
从「回声」一次采纳率 68% 的汇报被用户访谈推翻出发,说明线上质量信号为什么要以曝光为分母、点击率与采纳率差在哪里、重试与转人工如何补足,以及线上指标与离线评测对应的三个前提,附可运行的 TypeScript 采集实现、版本化指标定义与真实测试输出。
从订单服务凭一个共享密钥就能读取库存和支付数据的事故切入,拆开身份认证与授权两道门,给出 HMAC 服务令牌、受众与过期校验、拒绝优先的最小权限策略求值 Go 实现,并附篡改、过期、越租户和路径前缀边界的本机测试输出,强调令牌授权与策略规则必须同时通过。
帧率档位不是把 30 改成 60 就结束:60fps 的帧预算只有 16.7ms,切档必须带回滞,动态分辨率也只能救 GPU 瓶颈。本节以《潮汐消消》为主案例,给出 30/60fps 双档策略、先降分辨率再降帧率的降级顺序、升级判定、抖动抑制与最低档报警口径,并说明方舟为什么不能照搬。
数据分级只有落到字段、用途与流向上才可执行。本节把公开、内部、敏感、极敏感四级数据写成可测试的纯函数,演示字段级最大级别、用途绑定、流向上限、保留期审计与最小权限拒绝,并给出可复算的判据与常见反例,说明客户端判定与服务端复核的边界,让「能不能用、给谁用、留多久」在一次判定里同时回答。
把三款产品对十项平台能力的使用方式、SLA、降级策略和责任方收进一张矩阵,区分共用实现、共用接口与各自实现,并用差异原因把品类差异和历史包袱分开;附一个校验完整性、关系一致性、owner 冲突与统计口径的可运行 Go 包,让矩阵能在评审和 CI 里被检查。
一次故障刷出三百条告警,值班同学先花二十分钟分辨哪些是同一件事。本节把告警做成状态机与可计算对象:规则字段、指纹去重、窗口聚合、按具体度路由 owner、runbook 映射与未闭环标记,并用闭环报告把 MTTR、缺失手册与超时告警汇总出来。
从「回声」一次账单比预估高 30% 却无法归因的事故出发,说明用量事件如何设计、两层幂等键如何挡住重复投递、日切为什么是业务策略,以及日结对账如何逐行比较 token 与金额并处理差异,附可运行的 TypeScript 实现、配额窗口与真实测试输出。
从 arch-lab 一个大租户拖慢共享订单库的事故切入,对比共享表、独立 schema 与独立库三档隔离的代价,给出隔离级别推荐、带租户前缀的分区键、跨租户校验和带容量的分片分配 Go 实现,并附 7 个测试的本机输出与从共享库升级到独立库的迁移判据。
平台与产品团队真正会争吵的是事故之后:99.9% 的可用性按哪条链路算,平台发版造成的失败算谁的预算,延迟 SLA 的分母要不要包含失败请求。本文把可用性、延迟、吞吐与恢复时间拆成可计算条款,给出错误预算、燃烧率与违约判定的 Go 实现,并说明变更通知、灰度窗口和回滚承诺怎么写进契约。