一、全书概览
一句话总结
一位腾讯QQ后台老兵把十年架构经验拆解成8个技术方法+6个思维意识,给互联网后端开发者画了一张从入门到实战的完整地图。
张云鹏在腾讯QQ后台团队干过十余年,全程参与过多个大型系统的设计和开发。这本书不是从学术角度讲架构理论,而是从"怎么在真实的海量互联网服务里活下来"这个命题出发,系统性地总结了8个核心技术方法(切分、扩展、主动发现、自动化、灰度升级、过载保护、负载均衡、柔性)和6个架构思维意识(稳定为王、完成比完美重要、聚沙成塔、自动化思维、产品思维、工具/流程/文化)。
全书分三大部分:架构简介(1章)、技术方法(7章)、思维意识(5章),最后用3个实战案例收尾(用户时长统计、抽奖系统、短网址系统)。总字数16.4万字,276页,定价99元——贵不贵另说,但信息密度不算低。
适合谁读
| 读者类型 | 收获程度 | 说明 | |----------|----------|------| | 互联网初中级后端开发 | ★★★★☆ | 核心受众,能快速建立架构全景图 | | 没有中大型互联网经验的后端 | ★★★★★ | 填补认知空白,宏观了解海量服务怎么做 | | 资深架构师 | ★★★☆☆ | 经验映射+归纳总结,部分内容已熟知 | | 产品经理 | ★★☆☆☆ | 能理解灰度、柔性等产品侧方案设计 | | 非互联网行业开发者 | ★★☆☆☆ | 方法有通用性,但场景差异大 |
全书结构
| 章节 | 主题 | 一句话概括 | |------|------|------------| | 第1章 | 架构简介 | 架构是什么、架构师要会什么、为什么"一切尽在控制" | | 第2章 | 切分与扩展 | 按数据和逻辑维度拆分系统,用set模型扩展 | | 第3章 | 主动发现 | 日志、监控、系统/用户/应用三层监控标准 | | 第4章 | 自动化 | 自动部署、自动恢复,拒绝人肉操作 | | 第5章 | 灰度升级 | 灰度策略(用户/号段/命令号/时间)、蓝绿/金丝雀部署 | | 第6章 | 过载保护 | 隔离、限流、节流防抖、动态调节、尽早拒绝 | | 第7章 | 负载均衡 | 轮询/加权/Hash/最小连接数等算法,LVS/Nginx/DNS | | 第8章 | 柔性 | CAP定理、BASE理论、产品+技术双角度实现柔性 | | 第9章 | 稳定为王 | 安全、变更、容量量化、敬畏之心 | | 第10章 | 完成比完美重要 | 先扛住再优化、最小可用快速迭代、偿还技术债务 | | 第11章 | 聚沙成塔 | 小而简洁的模块设计,扩展能力 | | 第12章 | 自动化思维 | 拒绝重复劳动,工具系统化 | | 第13章 | 产品思维 | 体验业务/竞品、扬长避短、反哺方案 | | 第14章 | 工具、流程与文化 | 技术之外的团队协作层面 | | 第15章 | 案例:用户时长统计 | 大数据量统计系统的架构设计 | | 第16章 | 案例:抽奖系统 | 高并发场景下的架构实战 | | 第17章 | 案例:短网址系统 | 短链生成与分发的完整方案 |
二、逐章要点
第1章:架构简介
核心观点
架构师不只是画图的人,而是要把"一切尽在控制"作为最高准则的人。
作者对架构的定义很朴素:架构是对系统中各组成部分的组织和协调,目的是让系统在特定约束下满足需求。架构师需要同时具备技术深度(能写出关键代码)、广度(了解全链路)、和判断力(知道什么时候该用什么方案)。
对架构师的要求分三个层次:
- 技术能力:系统设计、编码、调试、性能优化
- 方法能力:切分、扩展、监控、灰度、过载保护等
- 思维意识:稳定为王、完成比完美、聚沙成塔等
互联网架构的三个核心挑战:海量用户、高并发、7×24小时稳定运行。"一切尽在控制"是贯穿全书的核心信条——不是追求完美的架构,而是追求可感知、可度量、可控制的风险管理。
关键概念
- 一切尽在控制:架构的最高目标不是性能最优或设计最优雅,而是对系统的每一个环节都有感知和控制能力。出了问题能快速定位,做了变更能快速回滚。
第2章:切分与扩展
核心观点
切分是为了降低复杂度,扩展是为了应对增长,两者相辅相成。
这是全书最实用的章节之一。作者把切分分为两个维度:
数据维度切分:
- 水平拆分(Sharding):按某个维度把数据分散到多个存储节点
- 垂直拆分:按业务功能把不同数据放到不同存储
- 读写分离:主库写、从库读
逻辑维度切分:
- 按业务功能拆分服务(微服务的前身)
- 按职责拆分模块(接入层、逻辑层、数据层)
set模型是腾讯系架构的特色概念:把一个完整的服务栈(接入+逻辑+数据)打包成一个自包含的单元,多个set之间相互独立,可以独立扩缩容和灰度。这个模型在QQ后台大量使用,本质上是一种分片+隔离的部署模式。
扩展分两种:
- 部署扩展:加机器(水平扩展),set模型天然支持
- 升级扩展:不改变接口的前提下升级内部实现
行动清单
- [ ] 审视当前项目的服务拆分方式,是否能按set模型组织
- [ ] 评估数据量增长曲线,提前规划水平拆分方案
第3章:主动发现
核心观点
等用户投诉才知道系统挂了,那就太晚了。
主动发现 = 日志 + 监控,目标是在用户感知到问题之前就发现并处理。
日志四要素:
- 日志级别(DEBUG/INFO/WARN/ERROR/FATAL)
- 日志类型(访问日志、错误日志、业务日志、性能日志)
- 日志格式统一(方便后续检索和分析)
- 注意事项:不记无用日志、避免敏感信息、控制日志量
三层监控标准:
| 监控层 | 监控内容 | 告警阈值举例 | |--------|----------|-------------| | 系统层 | CPU、内存、磁盘、网络、连接数 | CPU>80%持续5分钟 | | 用户侧 | 请求成功率、延迟、错误率 | 成功率<99.9% | | 应用层 | QPS、业务指标、队列深度 | 队列积压>1000 |
行动清单
- [ ] 检查项目日志规范,确保日志格式统一、级别合理
- [ ] 建立三层监控体系,覆盖系统→用户→应用
第4章:自动化
核心观点
人做的操作一定会出错,能自动化的绝不手动。
自动化分两大块:
自动部署(三步走):
- 准备:编译打包、配置管理、环境检查
- 实现:脚本化部署流程、版本管理、回滚机制
- 验证:自动化测试、健康检查、监控对比
自动恢复:
- 服务恢复:进程挂了自动拉起(supervisor/systemd)、故障节点自动摘除
- 流量迁移:故障时自动把流量切到健康节点(配合负载均衡)
作者特别强调"提升自动化意识"——不要觉得"就手动操作一次没关系",每一次手动操作都是在积累技术债。
第5章:灰度升级
核心观点
任何线上变更都应该灰度,这是保护系统的底线。
灰度升级是互联网公司最基本也是最重要的发布策略。作者介绍了四种灰度策略:
| 灰度策略 | 适用场景 | 举例 | |----------|----------|------| | 按用户身份 | 内测/白名单 | 先给内部员工开放新功能 | | 按号段 | 按用户ID范围 | 先开放UID末尾0-9的1%用户 | | 按命令号 | 按接口维度 | 先灰度一个API接口 | | 按时间 | 分时段放量 | 凌晨2-4点灰度(低峰期) |
部署方式:
- 蓝绿部署:维护两套完全相同的环境,切换流量完成升级
- 金丝雀发布:先发布少量节点观察,没问题再全量
五个注意事项(作者的经验之谈):
- 数据采样——灰度期间要采集数据对比
- 及时回滚——发现问题第一时间回滚,不要犹豫
- 周期完全——灰度要跑完一个完整的业务周期
- 测试完全——灰度前充分测试
- 充分验证——灰度后对比新旧系统的关键指标
第6章:过载保护
核心观点
系统过载时,快速失败比慢慢死好得多。
过载的定义:当系统的请求量超过其处理能力时,如果不采取措施,会导致雪崩效应——一个服务挂了引发上游超时,进而拖垮整个链路。
七种处理方式:
| 方式 | 原理 | 典型实现 | |------|------|----------| | 隔离 | 把不同业务/优先级隔开 | 线程池隔离、进程隔离、机房隔离 | | 限流 | 控制请求速率 | 令牌桶、漏桶、滑动窗口 | | 节流和防抖 | 控制高频调用 | 前端防抖、服务端限频 | | 动态调节 | 根据负载动态调整 | 自动扩缩容、动态降级 | | 尽早拒绝 | 在链路最前端拒绝 | 网关层限流、排队超时 | | 调整缓冲区 | 防止内存溢出 | 合理设置队列大小 | | 减少重试 | 避免重试风暴 | 指数退避、重试次数限制 | | 容量评估 | 提前知道极限 | 压测、容量规划 |
第7章:负载均衡
核心观点
负载均衡不只是把请求分发到多个服务器,还要考虑数据一致性、故障转移和扩展性。
作者先讲理论算法,再讲实际组件,最后给了一个Web类业务的完整实现案例。
七种负载均衡算法对比:
| 算法 | 原理 | 优点 | 缺点 | |------|------|------|------| | 基本轮询 | 依次分发 | 简单 | 不考虑服务器差异 | | 加权轮询 | 按权重分配 | 能利用异构服务器 | 权重配置需要经验 | | 随机访问 | 随机选一个 | 实现简单 | 分布可能不均匀 | | 源地址Hash | 同一客户端到同一服务器 | 会话保持 | 扩缩容时重新映射 | | 最小连接数 | 发给连接数最少的服务器 | 动态均衡 | 需要维护连接计数 | | 映射分配 | 预计算映射表 | 性能好 | 不够灵活 | | 一致性Hash | 环形Hash空间 | 扩缩容影响最小 | 实现复杂 |
常用组件:
- DNS:最粗粒度的负载均衡,按域名解析到不同IP
- Nginx:七层负载均衡,支持多种算法,配置灵活
- LVS:四层负载均衡,性能极高(内核态转发),支持NAT/DR/IP Tunneling三种模式
- SDK组件:客户端侧负载均衡,服务发现+本地路由
第8章:柔性
核心观点
在分布式系统中,追求强一致性往往是不现实的,学会接受"差不多"的结果。
这一章是全书理论深度最高的部分,从CAP定理和BASE理论出发,讲如何在工程实践中实现柔性。
CAP定理:
- C(Consistency):一致性
- A(Availability):可用性
- P(Partition Tolerance):分区容错
- 三者只能同时满足两个,在网络分区必然存在的前提下,实际上是在C和A之间做选择。
BASE理论:
- Basically Available:基本可用
- Soft State:软状态
- Eventually Consistent:最终一致性
柔性实现方法(双角度):
产品角度:
- 降级策略:非核心功能可以先关掉(比如评论功能故障时先隐藏入口)
- 用户教育:设置合理的预期("系统繁忙请稍后"比白屏好得多)
- 体验兜底:缓存数据展示、默认值展示
技术角度:
- 缓存:减少对后端的直接压力
- 异步化:非实时需求走消息队列
- 读写分离:读走从库
- 超时设置:合理的超时避免级联阻塞
- 重试策略:指数退避+重试上限
第9章:稳定为王
核心观点
稳定不是保守,而是对风险的敬畏和对细节的把控。
这是思维意识部分的"头牌"章节。作者认为稳定是架构师的第一优先级,比性能、比功能扩展、比代码优雅都重要。
控制因素的两大方向:
- 安全:数据安全、访问安全、防攻击(SQL注入、XSS、DDoS)
- 变更:所有线上故障中,70%以上是由变更引起的。变更管理是稳定性的核心。
保障方法六条:
- 合理拒绝——不是所有需求都要接,不合理的要敢说"不"
- 厘清主次关系——核心功能优先保障,边缘功能可以降级
- 容量量化——用数据说话,不靠感觉
- 预先准备——故障预案、降级方案提前准备好
- 注重监控——回到第3章,监控是稳定的眼睛
- 敬畏之心——对线上环境永远保持敬畏
应对异常四步法:
- 处理事故——快速止血
- 管理预期——及时同步影响范围
- 复盘总结——不追责,找根因
- 有效预防——落实改进措施
第10章:完成比完美重要
核心观点
先让系统跑起来,再让它跑得好。这是互联网行业的生存法则。
这个观点在互联网行业几乎是共识,但作者给了更系统的论证:
先扛住再优化的五个理由:
- 快速抢占市场——时间窗口比代码质量重要
- 实现先于性能——先确保功能正确,再优化性能
- 需求可能修改——花了大量时间优化的代码可能被废弃
- 验证用户行为——用户不用的功能不需要优化
- 突发问题案例——真实的线上问题会告诉你该优化什么
但不等于不追求质量:
- 最小可用,快速迭代
- 不要等待——等"准备好了"往往意味着错过时机
- 接受不完美——分清主次,非核心部分允许不完美
- 及时偿还技术债务——定期重构、及时清理废弃代码、对技术有追求
第11章:聚沙成塔
核心观点
好架构不是一次设计出来的,而是一个个简洁的模块慢慢积累出来的。
这一章篇幅短但观点到位。核心是两点:
- 小而简洁:每个模块做好一件事,接口清晰,职责单一
- 扩展能力:模块设计时要考虑未来可能的扩展点,但不要过度设计
作者反对"大而全"的一次性设计,主张通过不断重构和积累,让架构自然演进。
第12章:自动化思维
核心观点
如果你做一件事情超过两次,就该考虑自动化。
这章是第4章(自动化技术方法)的思维延伸。核心观点:
- 拒绝重复——时间成本是隐性的但巨大的
- 工具系统化——零散的脚本不如统一的工具平台
- 自动化不只是部署和恢复,还包括测试、巡检、数据校验等
第13章:产品思维
核心观点
架构师不能只懂技术,还要理解业务、理解用户、理解竞品。
作者认为好的架构师必须具备产品思维:
- 体验业务:自己用自己做的产品,感受用户的痛点
- 体验竞品:看看别人是怎么做的,找到可借鉴的地方
- 扬长避短:知道自己的系统能做什么、不能做什么
- 控制欲望:不要为了技术炫技而做不必要的架构改造
- 献计献策:从技术角度给产品方案提建议
- 反哺方案:把线上数据反馈给产品决策
第14章:工具、流程与文化
核心观点
再好的架构师,如果没有好的工具、流程和文化支撑,也干不成事。
技术之外的"软实力":
- 工具:部署工具、监控工具、调试工具、测试工具
- 流程:发布流程、变更流程、故障处理流程、代码Review流程
- 文化:团队对质量的共识、对稳定性的重视、对技术追求的氛围
第15-17章:实战案例
三个案例分别覆盖不同场景:
| 案例 | 核心挑战 | 涉及的技术方法 | |------|----------|----------------| | 用户时长统计 | 大数据量统计 | 数据切分、异步处理、聚合计算 | | 抽奖系统 | 高并发+公平性 | 过载保护、限流、柔性降级 | | 短网址系统 | 高可用+高性能 | 缓存、灰度升级、监控 |
这三个案例把前面的理论串联了起来,是理解全书方法论的实战演练场。
三、关键概念速查
| 概念 | 定义 | 一句话理解 | |------|------|------------| | set模型 | 把完整服务栈打包成自包含的部署单元 | 腾讯特色的微服务分片方案,每个set都能独立运行 | | 灰度升级 | 逐步放量到全量用户的发布策略 | 别一上来就全量发布,先小范围试水 | | 过载保护 | 系统超负荷时的自我保护机制 | 快速失败比慢慢死好 | | 柔性可用 | 牺牲部分一致性换取可用性的设计哲学 | "差不多能用"比"完全挂掉"强 | | CAP定理 | 一致性、可用性、分区容错三者不可兼得 | 分布式系统的"不可能三角" | | BASE理论 | 基本可用+软状态+最终一致性 | CAP定理的工程实践指导 | | 蓝绿部署 | 两套环境交替切换的发布方式 | 新旧环境同时存在,切流量即可升级 | | 金丝雀发布 | 先发布少量节点验证的灰度方式 | 像矿里的金丝雀一样,先探测危险 | | 一致性Hash | 环形Hash空间上的负载均衡算法 | 扩缩容时只影响相邻节点 | | 一切尽在控制 | 对系统每个环节都有感知和控制 | 架构师最高准则 | | 聚沙成塔 | 小模块逐步积累成大系统 | 反对大而全的一次性设计 | | 主动发现 | 在用户感知前发现并处理问题 | 日志+监控的闭环 |
四、核心框架/模型
架构师能力模型
┌─────────────────────────────────────────┐
│ 架构师能力金字塔 │
│ │
│ ┌──────────┐ │
│ │ 思维意识 │ ← 稳定、完成、聚沙 │
│ ┌─┴──────────┴─┐ │
│ │ 方法能力 │ ← 切分、灰度、柔性 │
│ ┌─┴──────────────┴─┐ │
│ │ 技术能力 │ ← 编码、调试、优化 │
│ └──────────────────┘ │
└─────────────────────────────────────────┘
8大技术方法体系
切分与扩展 ←→ 降低复杂度,应对增长
主动发现 ←→ 日志+监控,先于用户发现问题
自动化 ←→ 自动部署+自动恢复,减少人肉操作
灰度升级 ←→ 小范围验证,降低发布风险
过载保护 ←→ 限流+隔离+降级,防止雪崩
负载均衡 ←→ 请求分发+故障转移
柔性 ←→ CAP/BASE,接受"差不多"
稳定为王 ←→ 变更管理+容量量化+敬畏之心
互联网架构三层监控模型
系统层 ─── CPU/内存/磁盘/网络/连接数
│
应用层 ─── QPS/业务指标/队列深度/错误率
│
用户层 ─── 请求成功率/延迟/可用性
过载保护决策树
系统过载了?
├── 能隔离吗?──→ 隔离(线程池/进程/机房)
├── 能限流吗?──→ 限流(令牌桶/漏桶/滑动窗口)
├── 能降级吗?──→ 降级(关非核心功能/返回缓存)
├── 能扩容吗?──→ 自动扩缩容
└── 都不行?──→ 尽早拒绝(网关层拦截)
五、金句摘录
- "一切尽在控制,是架构师最高的追求。不是追求完美,而是追求可感知、可度量、可控制。" —— 第1章,架构的定义与核心准则
- "等用户投诉才知道系统挂了,那就太晚了。主动发现是稳定性的眼睛。" —— 第3章,主动发现
- "人做的操作一定会出错,能自动化的绝不手动。" —— 第4章,自动化
- "任何线上变更都应该灰度,这是保护系统的底线。" —— 第5章,灰度升级
- "系统过载时,快速失败比慢慢死好得多。" —— 第6章,过载保护
- "先让系统跑起来,再让它跑得好。这是互联网行业的生存法则。" —— 第10章,完成比完美重要
- "如果你做一件事情超过两次,就该考虑自动化。" —— 第12章,自动化思维
- "好的架构不是一次设计出来的,而是一个个简洁的模块慢慢积累出来的。" —— 第11章,聚沙成塔
六、行动清单
每天
- [ ] 检查系统监控看板,确认关键指标(QPS、成功率、延迟)正常
- [ ] 扫描一次ERROR级别日志,确认没有遗漏的异常
- [ ] 完成代码提交前自问:这次变更如果出问题,能快速回滚吗?
每周
- [ ] 回顾本周线上变更记录,统计变更次数和故障率
- [ ] 检查是否有重复操作可以自动化,记录到"自动化待办"
- [ ] 花30分钟体验自己负责的产品(或竞品),记录一个可以改进的点
- [ ] 复盘一次本周遇到的线上问题,更新故障预案
每月
- [ ] 做一次容量评估:按当前增长率,核心服务的容量还能撑多久?
- [ ] 审视系统架构:有没有新的过载风险点?需不需要新增限流/降级策略?
- [ ] 技术债务清理:至少还一笔技术债(重构一个模块、清理废弃代码、补充测试)
- [ ] 评估团队工具链:有没有可以引入的新工具来提升效率?
七、一句话总结
这是一张腾讯QQ老兵画的"互联网架构实战地图"——8个技术方法教你怎么在海量服务中活下来,6个思维意识教你怎么成为一个靠谱的架构师;豆瓣6.4分有点冤,对于没经历过中大型互联网项目的后端开发者来说,这本书的价值被低估了。
八、读者热议
1. 金诚(豆瓣,详细书评,5星,3赞) "知识点分割详细,从架构简介、宏观控制8个方面到微观控制的6个维度以及维度的细分领域,做了详细的'地图绘制',让有经验的架构师结合自己的经验融会贯通,让刚入门的架构师可以初窥门径有份新手地图参考。" 🐈 认同度:高。确实是"地图"性质的书,结构清晰,覆盖面广。
2. jimmy(微信读书,5星,4赞,最高赞) "本书非常实用,介绍的技术方法和架构思维均是工作中实际经验总结,对互联网后台开发有很好的借鉴意义。当然互联网后台技术发展变化非常快,容器化、动态扩缩容、流量治理、容量管理、在线巡检等技术层出不穷,本书内容全面性也存在一些不足。" 🐈 认同度:高。实用性强但覆盖面有局限,缺少云原生相关内容是2020年出版时间的客观限制。
3. RongieZeng(豆瓣,有用1条) "干货不多,互联网公司做过几年开发的话,只要不是太懒,多学习观察总结,基本都能建立起书中的认知体系。" 🐈 认同度:中等。对有经验的开发者确实偏入门,但对0-3年后端来说是很好的体系化教材。
4. 刹那间的永恒(微信读书,5星) "这本书对于没有中大型互联网工作经验的人来说是一个很好的引子,可以从宏观上了解到如何保证复杂项目的高质量开发和稳定运行;而对于有经验的人来说也是一个很好的归纳总结,每一章的内容都能从现实工作中找到映射。" 🐈 认同度:高。定位准确——引子+归纳总结,不是深度钻研的参考书。
5. 吴逸翔(微信读书,3星,1赞) "给T8看还可以,比较系统讲述了海量服务之道。" 🐈 认同度:中等偏上。T8是腾讯的技术职级(高级工程师/专家工程师),说明这本书在腾讯体系内是初中级架构师的参考读物,对高级架构师来说偏基础。
6. CSDN用户(blink,推荐) "讲述了作者在任职腾讯QQ团队及后续工作的感悟和总结,对架构设计、系统重构、维护拓展有丰富的经验,读他的书就像在和他一起参与项目,感悟颇多。" 🐈 认同度:中等。实践经验是这本书最大的卖点,但"像一起参与项目"可能有些溢美——毕竟缺少真实的代码级细节。
7. 红鲤(微信读书,3星,3赞) "说实话比较一般,不过大的框架还是挺值的学习的。" 🐈 认同度:中等。框架价值大于细节深度,这评价比较公允。
附录:本书的局限与补充阅读建议
局限:
- 出版时间2020年,缺少Kubernetes、Service Mesh、Serverless等云原生内容
- 案例偏腾讯系(set模型),其他大厂的架构实践涉及较少
- 没有深入讨论微服务治理(服务发现、配置中心、链路追踪等)
- 缺少量化数据支撑(性能数字、成本数据等偏少)
补充阅读建议:
- 想深入分布式理论 → 《数据密集型应用系统设计》(DDIA)
- 想了解云原生架构 → 《Kubernetes in Action》
- 想学大规模系统设计 → 《架构整洁之道》《凤凰架构》
- 想看更多大厂实战 → 《大型网站技术架构》(李智慧)
笔记生成:2026-04-28 by 喵喵 🐈
相关笔记
同作者仅有此篇