posts

《互联网产品的服务端架构·产品、流量与基础能力》 · 已发布章节索引(45 篇)

《互联网产品的服务端架构·产品、流量与基础能力》全 45 篇:13 章正文覆盖产品约束与架构、账号身份、资料隐私、多端 BFF、产品化 API、流量入口、缓存、异步消息、发布灰度、可观测性、容量成本;附序、前言、目录与三篇附录,配可运行的 Go 实验工程。

全书 45 篇:13 章正文 + 序、前言、目录 + 附录 A/B/C。每节配可运行的 Go 代码,代码块用 // file: / // tier: / // verify: 标注,可在实验工程中逐字节还原。

本页是卷一的完整索引。可以从目录与学习路径 按顺序通读,也可以按问题跳读。

全书概览

项目内容
书稿《互联网产品的服务端架构》卷一
已发布篇数45 篇(含目录与附录)
主线语言Go 1.26.0(实验工程 module webapp)
贯穿案例内容社区 + IM + 轻交易「回声」
阅读方式目录篇顺序通读,或按章节表跳读
上级专题书稿专题

前置

篇文章核心内容
序序从一次没有结论的产品评审写起,说明这本书为什么要用一条连续线连接产品约束、基础能力、内容…
前言前言前言说明四卷的分工与顺序、为什么从产品约束写到规模化,交代 Go 1.26.0 与 we…
目录目录与学习路径卷一《产品、流量与基础能力》的阅读入口:13 章分四段的结构、章节依赖图、三条阅读路径、…

第 1 章 产品约束

节文章核心内容
1.11.1 产品形态如何决定服务端形状从「回声」的内容流、私信与下单三个产品事实出发,说明服务端分类为什么按实时、强一致、读写…
1.21.2 用户量、请求量与成本的三条曲线把用户量、请求量与成本拆成三条曲线,用 100 万和 1000 万 DAU 两个完整算例…
1.31.3 可用性、体验与合规的底线把 99.9%、99.95%、99.99% 换算成每月允许的不可用时长,讨论延迟、错误率…

第 2 章 从需求到架构

节文章核心内容
2.12.1 用例、用户旅程与系统边界从「回声」新用户看到内容、发私信到下单的一条完整旅程出发,把用户故事拆成 actor、触…
2.22.2 领域模型与数据所有权以一次账号注销后内容、私信和订单里仍残留用户信息的事故为引子,把用户、内容、关系、订单四…
2.32.3 一份可评审的架构决策记录以「回声」Feed 写扩散与读扩散的取舍为例,说明一份可评审的 ADR 必须同时写清背景…

第 3 章 账号与身份

节文章核心内容
3.13.1 注册登录与第三方身份从一个账号绑定手机号、微信和 Apple 的冲突讲起,区分账号与身份,给出合并策略、冲突…
3.23.2 会话、设备与多端互踢从「旧手机还能继续用」的线上问题讲起,说明会话不是 token,拆解设备上限、登录时间、…
3.33.3 账号安全:撞库、风控与找回从一次撞库事件讲起,说明账号维度、IP 维度和设备维度为什么要分别计数,给出滑动窗口、成…

第 4 章 资料与隐私

节文章核心内容
4.14.1 资料模型与可见性以「回声」个人主页上线三天后的一次手机号字段泄露为入口,拆解公开、好友、自己三档可见性,…
4.24.2 个人信息分级与最小化从「回声」注册页多收的一个手机号说起,说明公开、内部、敏感三级字段如何按注册、推荐、客服…
4.34.3 注销、导出与数据留存从「回声」用户注销后仍能在备份里找回账号的事故说起,说明 pending、deleted…

第 5 章 多端与 BFF

节文章核心内容
5.15.1 App、Web 与小程序的差异从「回声」小程序复用 App 未读模型的事故写起,把 iOS、Android、Web 与…
5.25.2 BFF 的聚合、裁剪与契约从「回声」首页一个下游超时导致整页空白的事故写起,说明 BFF 聚合为什么不是把接口拼成…
5.35.3 端上体验与服务端取舍从「回声」为省一次请求把 2MB 数据塞进首屏接口的事故写起,拆解首屏时间、流量、电量和…

第 6 章 产品化 API

节文章核心内容
6.16.1 资源、命令与产品语义从「回声」点赞按钮被预取和重试重复执行的事故写起,说明资源查询与命令的本质区别、命令自然…
6.26.2 错误码与用户可感知的失败从大促零点一条把 SQL 报错返回给用户的事故写起,说明错误码为什么是产品契约而不是异常…
6.36.3 版本演进与兼容窗口从服务端删掉一个字段导致三个月未升级的 App 白屏的事故写起,说明兼容窗口为什么由客户…

第 7 章 流量入口

节文章核心内容
7.17.1 静态与动态的分界从「回声」把个性化推荐错误地放进 CDN、A 用户看到 B 用户推荐的事故写起,说明静态…
7.27.2 网关的认证、路由与限流从「回声」网关用字符串前缀匹配,把 /api/user-admin 导流到用户服务、普通…
7.37.3 边缘缓存与回源保护从「回声」热点文章缓存 TTL 同时到期、98% 命中率仍把源站打挂的事故写起,说明边缘…

第 8 章 读写与缓存

节文章核心内容
8.18.1 读多写少的产品事实从一个社区首页按 DAU 估算缓存容量、结果命中率只有 22% 的事故写起,说明读多写少…
8.28.2 缓存位置与一致性窗口从头像改完八分钟仍显示旧图的事故写起,说明缓存位置决定一致性窗口,而不是加了缓存就快;拆…
8.38.3 热点与失效的产品表现从大 V 发帖打满单个分片、整点配置统一过期两次事故写起,说明热 key 与集中失效是两…

第 9 章 异步与消息

节文章核心内容
9.19.1 哪些事情不该阻塞用户从「回声」发帖按钮转圈八秒的事故写起,说明同步与异步的分界线不是操作快慢,而是用户此刻是…
9.29.2 事件、通知与最终一致点赞事件重复投递让计数先涨两次又掉回去,问题不在消息队列,而在消费者没有幂等账本。文章区…
9.39.3 重复、丢失与补偿的用户感知用户付了钱订单却三天待支付,暴露的是重试、死信与对账三层防线同时缺位。文章把重复、丢失、…

第 10 章 发布与灰度

节文章核心内容
10.110.1 功能上线的最小发布单元一次发布混进三个功能、一个索引重建和一份配置,出故障时没人说得清该回滚哪一段。文章把发布…
10.210.2 灰度、开关与回滚灰度 5% 时错误率已经从 0.4% 翻到 1.8%,却没人看指标,一路放到 100% …
10.310.3 数据兼容与双写窗口凌晨发布时直接 rename 列,老 Pod 还在跑,写入全部报未知列,订单创建失败十二…

第 11 章 可观测性

节文章核心内容
11.111.1 用户视角的 SLI监控面板全绿,用户却反馈首页打不开,问题出在 SLI 的采集口径。文章从用户动作出发,区…
11.211.2 日志、指标与追踪的最小集日志、指标与追踪都接上了,故障时仍然查不出原因,往往是因为采集没有边界。文章说明三种信号…
11.311.3 一次线上问题定位复盘复盘报告只写“数据库连接数打满”,解释不了为什么监控二十分钟后才报警。文章把线上问题拆成…

第 12 章 容量与成本

节文章核心内容
12.112.1 DAU 到 QPS 的估算从「回声」三次容量评审给出相差数倍的数字写起,拆解 DAU、每用户请求数、峰值系数与活跃…
12.212.2 存储、带宽与机器成本从「回声」只估了数据库、上线后被带宽与备份账单打回的事故写起,把存储、带宽与机器成本拆成…
12.312.3 容量余量与弹性策略从大促前自动扩容却因镜像拉取与预热耗时六分钟、流量提前到达的事故写起,讨论预留 30% …

第 13 章 收口

节文章核心内容
13.113.1 账号、资料与 BFF 的模块划分账号、资料和 BFF 三个模块共用一个 models 包时,边界只剩目录名。文章用一次越…
13.213.2 端到端用例与测试账号包和 BFF 的单测都绿,真实注册登录却在字段名上断掉。文章说明端到端用例为什么要从…
13.313.3 基线指标与进入卷二没有基线,三个月后没人说得清系统是变快还是变慢。文章把可用性、p95 与单请求成本写成可…

附录

篇文章核心内容
附录 A 术语与指标附录 A 术语与指标一份面向评审与复盘的术语和指标速查:解释 DAU、QPS、p95、并发、读写比、命中率、…
附录 B Go 实验工程与代码分级附录 B Go 实验工程与代码分级附录 B 记录 webapp-lab 的真实工程快照:Go 版本、go.mod、全部 G…
附录 C 容量估算速查附录 C 容量估算速查把 DAU、峰值系数、活跃秒数、保留天数、副本数与三项单价放进同一组速查表,用三个案例算…

怎么读这一卷

与其他书稿的边界

代码与可复现性

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《互联网产品的服务端架构·产品、流量与基础能力》附录 C 容量估算速查

把 DAU、峰值系数、活跃秒数、保留天数、副本数与三项单价放进同一组速查表,用三个案例算例跑出回声的峰值 QPS、图片存储的稳态占用和 200 核一个月的账单,并给出弹性扩缩容的初始参数、测试命令与八个常见估算错误;所有数字均标注为案例假设值并附可复现命令。

11 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》13.3 基线指标与进入卷二

没有基线,三个月后没人说得清系统是变快还是变慢。文章把可用性、p95 与单请求成本写成可比较的指标集,说明相对变化、零基线和发布闸门如何计算,并收口本卷交付的可运行产物,交代卷二为什么先从内容模型讲起,让每次发布都有可复核的对照,避免优化沦为口头争论。

9 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》13.2 端到端用例与测试

账号包和 BFF 的单测都绿,真实注册登录却在字段名上断掉。文章说明端到端用例为什么要从用户旅程而不是接口清单来,如何在断言状态码之外验证业务结果,并给出用 httptest 真跑请求、失败后继续执行且能收敛 panic 的场景运行器,同时划清它不覆盖的边界。

8 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》13.1 账号、资料与 BFF 的模块划分

账号、资料和 BFF 三个模块共用一个 models 包时,边界只剩目录名。文章用一次越权读取说明数据所有权、依赖方向和对外契约如何划分,并给出可校验重复、缺失依赖与循环依赖的模块图实现,让拓扑序在每次构建中都可重复,也让三个模块能各自独立发布。

9 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》12.3 容量余量与弹性策略

从大促前自动扩容却因镜像拉取与预热耗时六分钟、流量提前到达的事故写起,讨论预留 30% 与留两倍容量的判断依据,把目标利用率、步长与冷却时间写成 Decide 纯函数,给出夹紧边界、死区与冷却期的测试和真实输出,并说明缩容为何要比扩容更保守。

7 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》12.1 DAU 到 QPS 的估算

从「回声」三次容量评审给出相差数倍的数字写起,拆解 DAU、每用户请求数、峰值系数与活跃秒数各自的标定来源和常见偏差,用区间估算替代单点,给出可测试的 Bounds 实现、非法区间测试与一次真实 go test 输出,并解释按平均 QPS 买机器为何会在晚高峰排队。

10 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》11.3 一次线上问题定位复盘

复盘报告只写“数据库连接数打满”,解释不了为什么监控二十分钟后才报警。文章把线上问题拆成检测、确认、缓解、解决四段,用时间线还原每一段的耗时,给出可测试的分析实现,并说明缺阶段、乱序与时间回退为什么必须报错,避免半截报告误导结论与改进方向。

8 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》11.2 日志、指标与追踪的最小集

日志、指标与追踪都接上了,故障时仍然查不出原因,往往是因为采集没有边界。文章说明三种信号各自回答什么问题,用高基数标签打爆时序库的案例解释成本从哪来,并给出可测试的采集审计规则与去重排序实现,帮助团队用最小集覆盖排障所需信息,避免工具越多越慢。

12 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》11.1 用户视角的 SLI

监控面板全绿,用户却反馈首页打不开,问题出在 SLI 的采集口径。文章从用户动作出发,区分请求可用性与用户可用性,说明首屏、可交互与接口成功率的差别,给出按请求计算的可用性与最近秩 P95 实现,并列出样本采集与校验边界,帮助团队在事故前把口径定清楚。

10 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》10.3 数据兼容与双写窗口

凌晨发布时直接 rename 列,老 Pod 还在跑,写入全部报未知列,订单创建失败十二分钟。文章把列变更为先扩后收的 expand、migrate、contract 三阶段,说明双写、回填、双读校验与切换的停点,用 Go 校验阶段顺序和双写幂等,并给出表驱动测试与真实运行输出。

10 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》10.2 灰度、开关与回滚

灰度 5% 时错误率已经从 0.4% 翻到 1.8%,却没人看指标,一路放到 100% 才发现。文章把灰度拆成按用户分桶的递增台阶、独立于发布的开关和带最小样本量的回滚阈值,用 Go 实现计划校验、阶段推进与自动回滚判断,并给出表驱动测试与一次真实的运行输出。

9 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》10.1 功能上线的最小发布单元

一次发布混进三个功能、一个索引重建和一份配置,出故障时没人说得清该回滚哪一段。文章把发布拆成代码、配置、schema、数据修复四类可独立观测、独立回滚的变更单元,用 Go 校验组件冲突、不可逆变更的观测信号与纯配置误标,并给出表驱动测试与真实运行输出。

8 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》9.3 重复、丢失与补偿的用户感知

用户付了钱订单却三天待支付,暴露的是重试、死信与对账三层防线同时缺位。文章把重复、丢失、乱序当作常态,说明指数退避为何必须有上限、死信为什么必须有人处理、对账为何是最后一道防线,并给出 Next 与 Reconcile 的可测试实现与边界测试。

11 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》9.2 事件、通知与最终一致

点赞事件重复投递让计数先涨两次又掉回去,问题不在消息队列,而在消费者没有幂等账本。文章区分事件与通知的失败语义,说明至少一次投递下如何用事件 ID 去重、用版本门槛拒绝旧格式、用首次处理时间回答最终一致要多久,并附 Apply 的 Go 实现与测试。

10 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》9.1 哪些事情不该阻塞用户

从「回声」发帖按钮转圈八秒的事故写起,说明同步与异步的分界线不是操作快慢,而是用户此刻是否在等结果、失败后能否撤回。文章把发帖拆成写库、图片处理、审核与通知四段,给出可测试的 Decide 与 Explain 实现和边界测试,避免把后台副作用塞进用户请求。

10 分钟阅读
书稿 互联网产品 服务端架构
books

《互联网产品的服务端架构·产品、流量与基础能力》8.3 热点与失效的产品表现

从大 V 发帖打满单个分片、整点配置统一过期两次事故写起,说明热 key 与集中失效是两种不同故障,给出访问占比探测、样本门槛与稳定分片的可测试 Go 实现,并讨论大 V 发帖、秒杀与整点刷新三类热点的观测和处置顺序,避免用同一套手段处理两种不同事故。

9 分钟阅读
书稿 互联网产品 服务端架构