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

《互联网产品的服务端架构·产品、流量与基础能力》8.1 读多写少的产品事实

从一个社区首页按 DAU 估算缓存容量、结果命中率只有 22% 的事故写起,说明读多写少不是拍脑袋的常识,而是要用读次数、写次数、独立键数与值大小测出来的事实,并给出读写比、工作集和缓存建议的可测试 Go 实现,避免继续用请求量代替缓存容量。

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

《互联网产品的服务端架构·产品、流量与基础能力》6.3 版本演进与兼容窗口

从服务端删掉一个字段导致三个月未升级的 App 白屏的事故写起,说明兼容窗口为什么由客户端版本分布决定而不是服务端想象,梳理新增、改名、删除、收紧校验和主版本升级的处理方式;并附版本解析、兼容判断与退役时间检查的 Go 实现、表驱动测试和真实运行输出。

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

《互联网产品的服务端架构·产品、流量与基础能力》6.2 错误码与用户可感知的失败

从大促零点一条把 SQL 报错返回给用户的事故写起,说明错误码为什么是产品契约而不是异常栈导出,如何区分用户可解决、系统可恢复与不该发生的失败,并用可重试标记约束客户端的自动重试行为;附错误码表校验与查询的 Go 实现和边界测试,避免局部故障被重试放大成全站事故。

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

《互联网产品的服务端架构·产品、流量与基础能力》6.1 资源、命令与产品语义

从「回声」点赞按钮被预取和重试重复执行的事故写起,说明资源查询与命令的本质区别、命令自然键的组成,以及同一动作在 App、Web、小程序三端为什么必须共用一套语义;附 HTTP 方法分类器的 Go 实现与表驱动测试,把幂等和可缓存钉在接口入口。

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

《互联网产品的服务端架构·产品、流量与基础能力》5.3 端上体验与服务端取舍

从「回声」为省一次请求把 2MB 数据塞进首屏接口的事故写起,拆解首屏时间、流量、电量和弱网四个端上约束,说明服务端能做什么、不该做什么,并用一个按优先级裁剪的 Go 预算函数把取舍变成可执行代码,避免首屏被一个大响应拖垮并显著放大故障半径。

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

《互联网产品的服务端架构·产品、流量与基础能力》5.2 BFF 的聚合、裁剪与契约

从「回声」首页一个下游超时导致整页空白的事故写起,说明 BFF 聚合为什么不是把接口拼成一个 JSON,并把字段来源、失败语义、缓存键和按端裁剪写成一份可测试的契约,附聚合与合并的 Go 实现和边界测试,避免把五个下游的故障绑成一个更大的故障。

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

《互联网产品的服务端架构·产品、流量与基础能力》5.1 App、Web 与小程序的差异

从「回声」小程序复用 App 未读模型的事故写起,把 iOS、Android、Web 与小程序的登录态、推送、深链、包体上限差异整理成一张能力表,并用一段可测试的 Go 代码说明 BFF 为什么必须按端裁剪,以及未知端为什么不能默认兜底,避免同一个接口把强端和弱端一起拖死。

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

《互联网产品的服务端架构·产品、流量与基础能力》4.3 注销、导出与数据留存

从「回声」用户注销后仍能在备份里找回账号的事故说起,说明 pending、deleted、purged 三态注销机如何约束导出、删除、备份清除和审计留痕的时序,给出拒绝提前清除、校验备份窗口的 Go 实现与状态测试,并讨论日志、备份和审计记录里残留个人信息该怎么收尾。

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

《互联网产品的服务端架构·产品、流量与基础能力》4.2 个人信息分级与最小化

从「回声」注册页多收的一个手机号说起,说明公开、内部、敏感三级字段如何按注册、推荐、客服、风控四个目的裁剪,给出保持输入顺序、拒绝负数保留期的 Go 最小化函数与测试,并拆解全量采集在注销、日志、第三方 SDK 和备份上留下的实际代价与审计缺口。

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

《互联网产品的服务端架构·产品、流量与基础能力》4.1 资料模型与可见性

以「回声」个人主页上线三天后的一次手机号字段泄露为入口,拆解公开、好友、自己三档可见性,讨论好友的好友、拉黑之后能否看到历史内容、本人可见与未知档位的边界,给出可测试的 Go 过滤器和表驱动测试,并说明为什么前端隐藏字段不能替代服务端过滤,最后列出落地时的常见错误与审计要求。

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

《互联网产品的服务端架构·产品、流量与基础能力》3.3 账号安全:撞库、风控与找回

从一次撞库事件讲起,说明账号维度、IP 维度和设备维度为什么要分别计数,给出滑动窗口、成功清零和可读拒绝原因的 Go 限流实现,并用测试覆盖同账号多 IP、同 IP 多账号、窗口过期与成功清零,最后附上本机运行输出和常见错误清单,让防爆破与防撞库不再互相替代。

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

《互联网产品的服务端架构·产品、流量与基础能力》3.2 会话、设备与多端互踢

从「旧手机还能继续用」的线上问题讲起,说明会话不是 token,拆解设备上限、登录时间、踢出原因与多端互踢的产品语义,再用可测试的 Go 会话存储实现设备复用、最旧设备淘汰和不可恢复的撤销,并附上本机测试输出与常见错误清单,帮助团队把踢出动作落成服务端状态,而不是只在前端删掉一个字符串。

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

《互联网产品的服务端架构·产品、流量与基础能力》3.1 注册登录与第三方身份

从一个账号绑定手机号、微信和 Apple 的冲突讲起,区分账号与身份,给出合并策略、冲突判定和可回归的 Go 绑定实现,并用测试锁定重复回调、幂等绑定与跨账号抢占三种边界,最后附上本机运行输出与常见错误清单,帮助团队在接入第三方登录前把规则写进代码。

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

《互联网产品的服务端架构·产品、流量与基础能力》2.3 一份可评审的架构决策记录

以「回声」Feed 写扩散与读扩散的取舍为例,说明一份可评审的 ADR 必须同时写清背景、至少两个备选、决定、后果与后继关系,并给出能拒绝单备选、决策不对应选项、非法状态和缺失后继的 Go 校验器,最后复盘一份只写了「我们选了 X」的决策记录如何在半年后让团队重新吵一遍。

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

《互联网产品的服务端架构·产品、流量与基础能力》2.2 领域模型与数据所有权

以一次账号注销后内容、私信和订单里仍残留用户信息的事故为引子,把用户、内容、关系、订单四类数据的所有权列成表,解释为什么每个数据集只能有一个写者、多个写者为何必须显式登记,并给出可校验重复数据集、空 owner 与越权写者的 Go 实现和表驱动测试。

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

《互联网产品的服务端架构·产品、流量与基础能力》2.1 用例、用户旅程与系统边界

从「回声」新用户看到内容、发私信到下单的一条完整旅程出发,把用户故事拆成 actor、触发、结果与副作用四件事,用边界表说明每项能力归谁所有、依赖谁,并给出一个能拒绝缺失字段、重复边界和所有权重叠的 Go 校验器,最后复盘一次跨三个团队却无人对端到端结果负责的上线事故。

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

《互联网产品的服务端架构·产品、流量与基础能力》1.3 可用性、体验与合规的底线

把 99.9%、99.95%、99.99% 换算成每月允许的不可用时长,讨论延迟、错误率与降级后的功能底线,以及数据留存、注销删除与内容安全,并给出一段可测试的 Go 错误预算与 burn rate 实现,文中用第三方支付依赖只有 99.9% 的案例说明预算为何会提前耗尽。

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