这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《互联网产品的客户端架构·交易、增长与平台化》目录与学习路径
卷三《交易、增长与平台化》的完整目录与学习路径:13 章 39 节,从交易端四条链路与 trade-lab 开始,依次覆盖商品库存、购物车、下单、支付、对账、优惠、会员、增长、实验、客服、埋点,最后以端到端收口;附章节依赖、三条阅读路径与读完应能回答的六个问题。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
卷三《交易、增长与平台化》的完整目录与学习路径:13 章 39 节,从交易端四条链路与 trade-lab 开始,依次覆盖商品库存、购物车、下单、支付、对账、优惠、会员、增长、实验、客服、埋点,最后以端到端收口;附章节依赖、三条阅读路径与读完应能回答的六个问题。
站内已经有一套从零实现 MMO 服务端的书,为什么还要再写一套架构书?这篇序说明两者的分工:前者回答怎么实现,后者回答为什么这样选、代价是什么;并交代本书的品类视角、北辰三款产品的贯穿案例、四卷结构与对代码和数字的诚实承诺。
卷三前言:交代四卷分工与本卷十三章的结构、写作顺序、贯穿案例「回声」的轻交易、trade-lab 的目录与三级可运行性、代码与命名约定、错误处理口径、读者对象与自检方法;附三个动手练习与勘误反馈渠道,说明为什么用 Node 26 与零第三方依赖。
卷三的序:从卷一的结构、卷二的流动,走到交易端的「可信」。交代为什么交易不能沿用内容的容错策略,四条核心判断、判断之间的互相约束、贯穿案例「回声」的轻交易场景与一笔订单的完整路径,以及本卷边界、与十三章的关系和为什么把「不确定」当成一等状态。
实现 arch-lab 的功能开关:默认值、客户名单、百分比灰度、kill switch 与不可变评估快照,并用测试覆盖开关翻转时的在途请求、同一次请求内多次求值一致,以及关闭开关后旧读取器仍能读新数据,最后说明工具链与平台化为什么留给卷四。
以 arch-lab 订单状态从字符串迁移到整数码为样本,实现 expand/contract 检查器:新代码读旧数据、旧代码读新数据、双写窗口与删除旧列前的守卫,用 Go 测试覆盖三种兼容、回滚后仍可读和迁移未完成禁止 contract,并给出完整时间线与回滚点。
发现页不是换皮的信息流:运营位、榜单、专题与普通内容来自不同契约。本节用纯函数组合器实现固定槽位、跨源去重、占位与曝光 key,讲清位置为什么不能塌陷、去重优先级如何显式表达,给出可复用的布局校验规则,并复盘一次运营位为空导致整页错位的事故。
以 arch-lab 订单系统为对象,实现按客户与请求哈希的确定性金丝雀分流器和基于错误率、P99 的发布守卫,用 10 万客户真实跑出 1% 到 50% 五档权重的分布误差与自动中止判定,并给出滚动、蓝绿、金丝雀的定位差异、回滚边界和可复现的 Go 测试。
开发者工具的渠道逻辑和消费级插件不同:强调使用场景、信任、发布与付费闭环。本篇对比 VS Code Marketplace 与 JetBrains Marketplace 的发布与变现机制,拆解赞助、外部许可证、配套 SaaS、企业支持四条路径,并给出遥测与兼容性清单。
搜索结果页最容易丢的不是数据,而是状态:本节用纯函数 reducer 管理查询词、筛选条件、游标与版本号,讲清条件变化为什么必须重置游标、筛选如何安全放进 URL、返回时恢复什么,以及空结果与「没有更多」的区别,并复盘一次筛选后仍用旧游标翻页的事故。
在 arch-lab 订单服务上实现存活与就绪分离、在途请求计数、优雅停机与摘流状态机,用 httptest 真跑摘流后新请求被拒、在途请求完成、超时强制退出的端到端测试,并给出可校准的探针参数、失败阈值、宽限期与误摘流的容量代价和恢复条件。
领域层抛 LibraryException,持久层抛 SQLException,web 层只认识 Problem Details。本节把三层翻译串起来:SQLState 怎么变成错误码,错误码怎么决定 HTTP 状态,异常处理器为什么按最具体类型匹配,以及 404、405 和处理器自己抛异常时会发生什么。
联想框的难点在输入与响应之间:本节用可注入调度器的 TypeScript 控制器实现防抖、输入法组合抑制、取消在途请求与 latest-wins 版本号,解释缓存 key 为什么必须包含完整查询词,并复盘一次慢请求后到覆盖新结果的线上故障。
同样是 400,有的接口返回字符串,有的返回对象,客户端只能按状态码猜。本节按 RFC 9457 把 libraryd 的错误响应固定成 application/problem+json,讲清 type、title、status、detail 与扩展成员 code、requestId、errors,并用真实响应说明媒体类型被覆盖的坑。
Chrome Web Store 不代收扩展交易款,钱必须自己收。本篇拆解买断、订阅、LTD、按量四种模型,给出许可证状态机、设备绑定、离线宽限、退款与拒付处理,以及一张可直接填的定价测算表,帮你在上架前把收款闭环设计好。
举报不是把一段文字发给服务端。本节用内存队列和假时钟实现举报负载、离线排队、去重、退避与成功回执,把举报时的内容快照冻结成不可覆盖的证据,给出快照、去重与退避共 8 条测试,并复盘一次作者编辑后证据被悄悄改写、举报被驳回的真实申诉失败事故。
libraryd 的 bodyAsClass 只负责解析,不负责判断字段是否为空、超长或越界。本节用 Jakarta Validation 3.1.1 与 Hibernate Validator 9.1.5 把约束写在 record 上,把 ConstraintViolation 收成字段错误 Map,并用真实输出说明 Expressly 缺失、null 与空白、消息语言和领域校验的分工。
在 arch-lab 订单系统上实现带租约和单调 fencing token 的主备接管模型,用测试覆盖主失联、租约过期、旧主恢复后写入被拒与双主脑裂,说明接管门槛为何必须包含回放位点,并给出切换窗口内订单写入的可用性与一致性取舍的具体做法。
《互联网产品的 AI 架构·模型接入与能力边界》的完整目录与学习路径:13 章 39 节从能力契约、模型选型、网关、路由、流式、提示、结构化输出,讲到延迟成本、缓存、降级、安全、观测与卷一收口;附三卷分工、三条阅读路径、实验工程与读完应能回答的十二个问题。
进程收到 SIGTERM 时,libraryd 正在处理的借阅请求会不会被切断,连接池和定时任务会不会来不及收尾。本节用两次真实停机实验对比 stopTimeout=0 与 10 秒的差别,再给出 LibraryApplication 的关闭顺序、幂等关闭、启动失败回滚和 shutdown hook 的完整写法。