posts
《互联网产品的客户端架构·规模化与架构演进》 · 已发布章节索引(45 篇)
《互联网产品的客户端架构·规模化与架构演进》全 45 篇:13 章覆盖多端一致性、设计系统、插件化、性能治理、稳定性、构建交付、可观测性、安全隐私、国际化、无障碍、架构治理、迁移与平台化收口;附序、前言、目录与三篇附录,配可运行 TypeScript 实验工程。
全卷 45 篇:13 章正文 + 序、前言、目录 + 附录 A/B/C。每节配可运行的 TypeScript 代码,代码块用 // file: / // tier: / // verify: 标注,可在实验工程中逐字节还原。
本页是卷四的完整索引。可以从目录与学习路径
按顺序通读,也可以按问题跳读。
全书概览
| 项目 | 内容 |
|---|
| 书稿 | 《互联网产品的客户端架构》卷四 |
| 已发布篇数 | 45 篇(含目录与附录) |
| 主线语言 | TypeScript(Node 26 原生类型剥离,零第三方依赖) |
| 贯穿案例 | 内容社区「回声」的五个端:Web、iOS、Android、小程序、桌面 |
| 阅读方式 | 目录篇顺序通读,或按章节表跳读 |
| 上级专题 | 书稿专题 |
前置
| 篇 | 文章 | 核心内容 |
|---|
| 序 | 序 | 从「五端各自发布」写起,交代前三卷的三笔债、卷四的四条判断与十三章收束方式。 |
| 前言 | 前言 | 每章四段写法、evolve-lab 模块地图、代码约定、团队用法与三个动手练习。 |
| 目录 | 目录 | 13 章 39 节的结构、章节依赖、三条阅读路径与读完应能回答的六个问题。 |
第 1 章 多端一致性与平台边界
| 节 | 文章 | 核心内容 |
|---|
| 1.1 | 1.1 五类端形态与一致性承诺 | 多端架构的第一步不是共享代码,而是定义哪些行为必须一致、哪些可以等价、哪些允许不同。本节给出 Web、iOS、A… |
| 1.2 | 1.2 共享内核与端上适配层 | 共享内核不是把所有代码塞进一个包,而是把可共享的判断放在 core、把端差异隔离在 adapter,并用依赖规则… |
| 1.3 | 1.3 能力探测与渐进增强 | 端能力不是布尔值:同一个支付能力可能是原生、polyfill 或完全缺失,同一个功能可能是必需或可选。本节用能力… |
第 2 章 设计系统与组件平台
| 节 | 文章 | 核心内容 |
|---|
| 2.1 | 2.1 设计 token 与主题化 | 同一条按钮 token 在暗色主题下解析成透明文字,往往不是样式写错,而是三层 token 的解析链断了。本节用… |
| 2.2 | 2.2 组件契约与版本化 | 按钮组件从 1.4 升到 1.5,发布说明写着「只加了可选属性」,四十多个业务包却在编译期报错。问题不在版本号,… |
| 2.3 | 2.3 多品牌与多业务复用 | 四个品牌共用一套组件库,一次全量合并后,A 品牌的结算主色出现在 B 品牌的收银台,排查发现是品牌包被当成全局配… |
第 3 章 插件化与动态化
| 节 | 文章 | 核心内容 |
|---|
| 3.1 | 3.1 插件协议与宿主边界 | 插件化不是把代码拆出去,而是先定义宿主与插件的契约边界。本节从三个宿主版本同时在线、插件清单失控的现场出发,给出… |
| 3.2 | 3.2 沙箱、权限与失败隔离 | 插件沙箱的目标不是让插件跑不起来,而是让它在越权时被拒绝、在崩溃时被隔离。本节从一次插件读取全盘文件、拖垮首页的… |
| 3.3 | 3.3 动态配置与热更新的停止条件 | 热更新的难点不是把配置推下去,而是知道什么时候必须停下来。本节从一次凌晨配置推送引发的崩溃出发,给出默认、环境、… |
第 4 章 性能治理体系
| 节 | 文章 | 核心内容 |
|---|
| 4.1 | 4.1 性能预算与分端指标 | 性能预算不能只有一条全局阈值。本节把启动、首屏、交互、内存四类指标按 Web、iOS、Android、小程序、桌… |
| 4.2 | 4.2 归因:从慢到哪一行 | 只知道首屏慢没有用,必须回答慢在哪个阶段、哪条路径、哪一行。本节把一次加载拆成网络、解析、渲染、脚本四个阶段,用… |
| 4.3 | 4.3 优化闭环与回归防护 | 性能优化没有闭环,就等于把成果交给下一次发版碰运气。本节把优化项登记、基线对比、阈值与显著性、回归门禁串成一条可… |
第 5 章 稳定性与容错架构
| 节 | 文章 | 核心内容 |
|---|
| 5.1 | 5.1 故障域与爆炸半径 | 端上故障很少只坏一个按钮:一个共享依赖失效,可能同时带走首页、下单与通知。本节把依赖图、故障域、单点与爆炸半径写… |
| 5.2 | 5.2 降级、开关与兜底 | 开关越多,事故时越容易互相打架:用户级、实验级、端级与全局规则同时命中时,必须有一个确定的赢家。本节把开关层级、… |
| 5.3 | 5.3 故障演练与恢复验证 | 演练最容易通过的部分是注入,最容易造假的部分是恢复。若没有恢复断言与未通过项记录,「演练成功」只是一句口号。本节… |
第 6 章 构建与交付工程
| 节 | 文章 | 核心内容 |
|---|
| 6.1 | 6.1 Monorepo 与包边界 | Monorepo 的难点不是把代码放进一个仓库,而是让包边界可执行。本节把包声明、依赖、公开与内部可见性、子路径… |
| 6.2 | 6.2 产物治理与缓存 | 缓存命中率低,原因往往不是缓存没有生效,而是缓存键没有覆盖真正的输入。本节把内容哈希、工具链、环境变量与依赖产物… |
| 6.3 | 6.3 发布流水线与灰度回滚 | 发布流水线的价值不在自动化,而在每一步都能给出可解释的放行或阻断。本节把阶段门禁、灰度比例、健康阈值与回滚触发写… |
第 7 章 端上可观测性
| 节 | 文章 | 核心内容 |
|---|
| 7.1 | 7.1 日志、指标与追踪的最小契约 | 一次支付故障排查花掉三小时,根因不是代码,而是四个团队的上报字段各说各话。本节把日志、指标、追踪收敛成一份可校验… |
| 7.2 | 7.2 采样、脱敏与成本 | 日志量一周涨二十倍,账单和合规风险同时到来。本节给出端上采样的三张策略表:按等级采样、按字段脱敏、按等级保留;用… |
| 7.3 | 7.3 从告警到定位的闭环 | 一次故障刷出三百条告警,值班同学先花二十分钟分辨哪些是同一件事。本节把告警做成状态机与可计算对象:规则字段、指纹… |
第 8 章 安全、隐私与合规
| 节 | 文章 | 核心内容 |
|---|
| 8.1 | 8.1 数据分级与最小权限 | 数据分级只有落到字段、用途与流向上才可执行。本节把公开、内部、敏感、极敏感四级数据写成可测试的纯函数,演示字段级… |
| 8.2 | 8.2 第三方 SDK 治理 | 第三方 SDK 的风险不该靠印象打分。本节用可解释的权重表计算风险分,覆盖权限差异、初始化时机、治理问题清单与下… |
| 8.3 | 8.3 隐私合规的工程落地 | 同意不是一个布尔值,而是一台有状态、有版本、可撤回的机器。本节实现未询问、已同意、已拒绝、已撤回四态状态机,演示… |
第 9 章 国际化与本地化
| 节 | 文章 | 核心内容 |
|---|
| 9.1 | 9.1 文案、时区与货币 | 同一笔订单在圣保罗下单、在莫斯科退款时,文案复数、时区换算和货币最小单位会同时出错,三类故障常常互相掩盖。本节把… |
| 9.2 | 9.2 RTL、排版与本地内容 | 阿拉伯语用户打开同一张订单页,返回箭头仍指向左边,订单号在双向文本里跳到句子另一端。本节把方向传播、逻辑属性映射… |
| 9.3 | 9.3 区域能力差异与降级 | 同一版本在德国能刷卡、在巴西只能货到付款、在阿联酋没有在线客服。区域能力不是布尔开关,而是有优先级的矩阵与降级链… |
第 10 章 无障碍与包容性
| 节 | 文章 | 核心内容 |
|---|
| 10.1 | 10.1 语义结构与焦点顺序 | 读屏用户听到一连串「按钮」,键盘用户按 Tab 从页头直接跳到页脚,弹窗打开后焦点再也出不去。本节把角色、名称、… |
| 10.2 | 10.2 读屏、键盘与动效偏好 | 下单失败时错误条只在视觉上出现,读屏用户什么也没听到;优惠券排序只能拖动,键盘用户无法完成;系统开了「减少动效」… |
| 10.3 | 10.3 无障碍测试与验收 | 发布前扫描器报告零错误,上线后仍收到「弹窗关不掉」「读屏走不通」的投诉:自动规则测不到焦点陷阱,也没有严重级别来… |
第 11 章 团队协作与架构治理
| 节 | 文章 | 核心内容 |
|---|
| 11.1 | 11.1 架构决策记录与契约 | 从一次没人记得的架构决策出发,把 ADR 拆成九个必填字段、四态生命周期、集合级完整性校验与契约变更登记,并给出… |
| 11.2 | 11.2 代码所有权与评审 | 从一次合并后三周无人认领的线上问题出发,把代码所有权拆成路径规则、owner 映射、覆盖度、评审路由与无人负责路… |
| 11.3 | 11.3 技术债台账与治理节奏 | 从一份永远排不上期的技术债清单出发,把债务治理拆成条目字段、严重度与影响面、偿还排期、逾期标记与季度节奏五部分,… |
第 12 章 架构演进与迁移
| 节 | 文章 | 核心内容 |
|---|
| 12.1 | 12.1 绞杀者与渐进式替换 | 绞杀者替换的关键不是一次删掉旧代码,而是让新旧路径同时存在,并按用户、端与功能分桶逐步放量。本节把路由比例、白名… |
| 12.2 | 12.2 双写双读与兼容窗口 | 双写不是把同一份数据写两遍就结束,真正决定成败的是写入顺序、次写失败后的降级、双读比对口径,以及兼容窗口何时关闭… |
| 12.3 | 12.3 迁移的退出条件与回滚 | 迁移的终点不是新路径上线,而是旧路径被安全删除。本节给出流量、错误、数据一致与观察期四类退出判据,把回滚资产检查… |
第 13 章 卷四收口:从应用到平台
附录
| 篇 | 文章 | 核心内容 |
|---|
| 附录 A | 附录 A | 十二组核心术语与判据速查:承诺、边界、能力、性能、稳定性、交付、观测、安全、国际化、无障碍、治理、迁移。 |
| 附录 B | 附录 B | 按十类症状组织的多端排查手册:先查什么、常见根因、验证与预防。 |
| 附录 C | 附录 C | 六十五题架构评审清单、快速十问、记录模板与常见分歧处理。 |
怎么读这一卷
- 顺序读:从序
开始,按 1.1 到 13.3 推进;第 1 章与第 11 章建议先读,它们分别定义问题与责任。
- 按问题读:先看目录
的三条路径,再跳到对应章节。
- 按角色读:架构师读第 1、2、11、12 章;平台工程师读第 2、6、7 章;产品与设计读第 1、9、10 章与附录 C。
配套实验
全部代码位于 evolve-lab,按章分目录:src/platform、src/design、src/plugin、src/perf、src/stability、src/build、src/observability、src/security、src/i18n、src/a11y、src/governance、src/migration、src/summary。
运行方式:node --test test/<目录>/*.test.ts。Node 26 原生类型剥离,无 package.json、无第三方依赖。
三篇附录