这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《移动游戏产品的架构·客户端与移动运行时》8.3 平板、折叠屏与异形屏
平板、折叠屏与异形屏不能用宽高比一个数判断。本节把尺寸、折叠状态与窗口模式拆成三个输入,给出 600/840dp 断点、折叠动画的稳定窗口、安全区换算与重排判据,并用无头模型列出矩阵缺口,明确哪些结论必须回到真机矩阵验证,不能由无头模型替代。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
平板、折叠屏与异形屏不能用宽高比一个数判断。本节把尺寸、折叠状态与窗口模式拆成三个输入,给出 600/840dp 断点、折叠动画的稳定窗口、安全区换算与重排判据,并用无头模型列出矩阵缺口,明确哪些结论必须回到真机矩阵验证,不能由无头模型替代。
日志量一周涨二十倍,账单和合规风险同时到来。本节给出端上采样的三张策略表:按等级采样、按字段脱敏、按等级保留;用确定性哈希保证同一会话的决策稳定,用字节数、放大倍数与单价把成本算成可复核的算式,并说明 PII 脱敏的边界与离线补传的处理规则。
区分冲正与补偿:冲正用反向分录修正错误记账,补偿是新的正向业务动作。给出只追加、借贷平衡的 Go 账本与幂等冲正实现,用悬挂户从 -1999 分回到 0、重复冲正被拒、128 并发过账后总额仍为零的本机测试输出,说明资金类最终一致依赖的四条不变量。
以订单支付流水与渠道账单对账为例,对比 T+1 全量与实时流式对账在覆盖、时效和成本上的取舍,给出按订单号与方向匹配、再按金额和状态分类的 Go 对账器,用九组表驱动用例展示漏单、单边、金额、重复和宽限期状态差异如何进入不同处置队列,并说明自动与人工处置的退出条件。
从支付回调重试导致重复下单的具体场景出发,拆解幂等键的租户、操作与请求三段作用域、指纹绑定和租约生命周期,给出带 fencing token 的 Go 内存实现,并用 64 并发同键、租约过期接管与保留期过期三组测试输出说明何时能安全重放、何时必须拒绝。
一次支付故障排查花掉三小时,根因不是代码,而是四个团队的上报字段各说各话。本节把日志、指标、追踪收敛成一份可校验的最小契约:三类事件的必填字段、三类错误码、缺失字段报告,以及 span 的父子关联、断链检测与链路深度,并给出契约评审时的判据与反例。
从「回声」一次查不到模型的线上投诉出发,说明一次 AI 请求必须记录哪些字段、耗时如何拆段、用量与错误类别如何统一,以及内容脱敏与分层采样如何让观测既够用又不越界;文中给出可逐条断言的 TypeScript 字段契约、脱敏规则、采样分桶与真实测试输出,帮助团队把一次请求追到模型、租户与错误类别。
从 arch-lab 订单服务在滚动发布中直接加非空列、旧实例写入失败的事故切入,说明 expand、migrate、contract 三阶段各自的门禁与退出条件,给出检查阶段顺序、旧代码兼容、回填完成、版本下限与安静期的 Go 实现,并附本机测试输出与边界。
《群岛纪元》的一次全服活动把平台数据库打满,另外两款游戏的登录同时抖动;渠道服又要求按渠道隔离存档。本文比较逻辑隔离、schema 隔离与库隔离的代价,给出 game/channel/env 三元组、跨租户拒绝与按租户配额的 Go 实现,并说明平台升级时旧版本游戏如何不被破坏。
机型分档不是一张机型名单,而是 RAM、GPU、刷新率与 OS 版本的评分,加上不可被高分覆盖的硬门槛。本节把分档、画质预设、灰度桶、护栏回滚与 35% 低端机占比放进同一套可校验策略,并给出可回滚的版本注册表、可运行模型与真实设备验收边界。
北辰三款产品共用 northstar-platform 后,最先吵起来的不是技术选型,而是边界:哪些能力该收进平台、平台交付的是能力还是数据、玩法规则能不能顺手放进去。本文用复用度、合规、故障影响面和团队归属四条判据划边界,并给出能力注册表与依赖方向校验的可运行实现,解释平台为什么会退化成第二个游戏服。
从 arch-lab 订单服务金丝雀仅凭 18 个请求就晋级、库存超时被总错误率掩盖的事故切入,拆开样本量、窗口时长、可用性、延迟与业务守卫五层判据,给出带状态机、连续窗口与自动回滚的 Go 实现,并附本机测试输出、状态迁移序列、可复现命令与回滚边界。
《泡泡工坊》一名未成年人用家长账号充值后,家长要求退款;同一时间实名服务超时,三款游戏各自判断,出现了“这个服能玩、那个服不能玩”。本节区分合规判定与执行,说明实名年龄带、可玩时段、单笔与月度限额的输入与可信度,给出数据最小化、留存与删除传导的边界,并附可运行的 Go 判定服务片段。
触控与陀螺仪的差别不在事件名,而在采样节奏、缺失处理与噪声。本节把触点、长按、滑动、缩放和视角统一成意图事件,用死区、平滑与步长上限处理传感器数据,并给出陀螺仪缺失或被拒绝时的拖拽降级,以及消消与方舟各自的输入策略边界、验收口径与提示差异。
从 arch-lab 订单服务按标签回滚却加载了另一份字节的事故切入,拆开标签、制品摘要与环境声明的职责差异,给出不可变注册表、按摘要部署、晋级烘焙时间与运行态漂移检测的 Go 实现,并附本机测试输出、可复现命令、四条判据、边界、取舍与回退。
《群岛纪元》一名玩家被渠道强制退款时,游戏内金币早已转给其他角色;财务对账又发现三笔渠道已扣款、内部却没有订单。本节说明退款状态机、资产回收顺序、渠道账单与内部订单的匹配键,给出漏单、重复、金额不符、状态不同步的分类与冲正/复核/挂账边界,并附可运行的 Go 对账分类片段。
从订单事件乱序导致状态回退或重复发货出发,说明分区内顺序、跨分区无序与业务因果的区别,用版本号把乱序变成可重试的冲突,区分可重试错误与毒消息,给出死信分类、重放位点与对账修复的 Go 实现,并实测乱序重试收敛、重试预算耗尽进死信、重放幂等与对账修复被死信吞掉的状态,附原始输出与判据。
发布流水线的价值不在自动化,而在每一步都能给出可解释的放行或阻断。本节把阶段门禁、灰度比例、健康阈值与回滚触发写成纯函数:前置阶段未通过则后续阻塞,样本不足时保持不动,指标越界立即回滚,并把每次决策追加成可追溯的版本记录。灰度不是按比例放量,而是按证据放量。
从支付回调重复导致余额加两次的故障出发,拆开“副作用已发生、确认未发出”的窗口,说明去重表必须与副作用同库同事务、键要带生产者作用域、保留期要覆盖重放窗口;给出可运行的 Go 实现,并实测确认丢失后的重投、朴素处理的双倍入账、去重记录过期后的重复应用,以及先标记后副作用导致的丢消息。
从订单支付后先提交数据库再发消息的崩溃窗口出发,把 outbox 行与业务行放进同一本地事务,用轮询 relay、持久位点与至少一次投递保证不丢消息;给出可运行的 Go 实现,并实测提交后崩溃恢复投递、投递后崩溃导致重复两个窗口,附原始输出与选型判据。