第 1章 认识全链路压测 001
1.1 全链路压测概述 001
1.1.1 互联网服务的容量保障 001
1.1.2 全链路压测的概念 003
1.1.3 全链路压测的价值 004
1.1.4 全链路压测的特点 005
1.2 全链路压测的演进之路 006
1.2.1 基线容量测试 006
1.2.2 集群缩放压测 007
1.2.3 流量回放 008
1.2.4 单链路压测 008
1.3 全链路压测的发展前景 010
1.4 本章小结 012
第 2章 全链路压测的技术实现 014
2.1 压测数据隔离 015
2.1.1 逻辑隔离 015
2.1.2 物理隔离 016
2.1.3 影子库与影子表 018
2.1.4 逻辑隔离与物理隔离的对比 021
2.2 中间件改造和应用服务改造 021
2.2.1 中间件改造 022
2.2.2 应用服务改造 024
2.3 压测模型构建 025
2.3.1 线上日志回放 026
2.3.2 链路聚合技术 027
2.3.3 新场景的压测模型构建 028
2.3.4 全链路压测的服务范围 030
2.4 压测流量构造 032
2.4.1 压测流量构造的成本权衡 032
2.4.2 压测流量构造工具的技术选型 033
2.5 容量指标监控 034
2.5.1 资源类指标 035
2.5.2 应用类指标 036
2.5.3 网络类指标 036
2.5.4 链路类指标 037
2.5.5 中间件指标 038
2.5.6 压测端指标 038
2.5.7 舆情指标 039
2.5.8 容量指标监控原则 039
2.6 全链路压测的实施流程 041
2.6.1 压测方案设计 041
2.6.2 压测方案评审 043
2.6.3 压测准备 043
2.6.4 压测执行 044
2.6.5 结果反馈 046
2.6.6 持续跟进 047
2.7 本章小结 047
第3章 全链路压测的组织保障 049
3.1 全链路压测需要什么样的团队 049
3.1.1 运维驱动:GOC团队的建立和意义 050
3.1.2 测试驱动:是否需要独立的专项测试团队 051
3.1.3 谁对服务容量负责 052
3.2 全链路压测如何运营 053
3.2.1 Program机制 053
3.2.2 全链路压测SOP 054
3.2.3 常态化执行制度和容量问题分级规范 055
3.2.4 激励措施和竞争模式 057
3.3 中小型公司如何建设全链路压测 058
3.3.1 粗放式建设 059
3.3.2 善用云服务商的收费机制 060
3.3.3 用好开源工具 061
3.3.4 购买解决方案 062
3.4 本章小结 062
第4章 全链路压测的工具建设 064
4.1 开源工具精粹 064
4.1.1 链路追踪工具 065
4.1.2 流量构造工具 067
4.1.3 容量监控工具 068
4.2 分布式压测平台建设 072
4.2.1 架构设计 073
4.2.2 压测状态流转 077
4.2.3 实时数据(热数据) 078
4.2.4 异步数据(冷数据) 079
4.2.5 吞吐量限制与动态调节 081
4.2.6 压测场景编排 082
4.2.7 监控模块 084
4.3 全链路压测管理平台建设 085
4.3.1 全链路压测管理平台功能概览 085
4.3.2 压测链路与模型管理 087
4.3.3 压测风险识别与结果跟进 089
4.4 无人值守全链路压测的技术实现 089
4.4.1 自适应压测策略 090
4.4.2 自动化风险管控 092
4.5 本章小结 094
第5章 微服务架构下的容量治理 095
5.1 微服务架构的特点和容量风险 095
5.1.1 微服务架构的特点 096
5.1.2 微服务架构的容量风险 097
5.2 容量指标分析实战 098
5.2.1 响应时间应关注平均值,还是分位线? 099
5.2.2 响应时间一定越短越好吗? 100
5.2.3 CPU利用率低,服务容量一定没有问题吗? 101
5.2.4 “压不上去”了,*是服务容量达到瓶颈了吗? 103
5.2.5 容量指标只是偶尔“抖动”一下,要不要关注? 104
5.3 扩容:为服务增添“燃料” 105
5.3.1 扩容方案 105
5.3.2 扩容注意点 109
5.4 限流:让我“缓一缓” 110
5.4.1 限流策略 110
5.4.2 限流位置 115
5.5 降级:弃车保帅 117
5.5.1 降级实现 117
5.5.2 降级策略和要点 119
5.6 熔断:上游的服务,我们来保护你 121
5.7 容灾:我还有“一条命” 123
5.7.1 常见容灾手段 124
5.7.2 容灾衡量指标 125
5.7.3 两地三中心 126
5.7.4 异地多活 127
5.8 预案建设:提前准备,胸有成竹 128
5.8.1 认识预案 129
5.8.2 预案演练 130
5.9 本章小结 132
第6章 容量规划与容量预测 134
6.1 容量规划的本质 135
6.2 容量规划的系统化方法 135
6.2.1 容量测量 136
6.2.2 容量预测 137
6.2.3 资源部署 138
6.2.4 容量验证 139
6.3 智能化容量预测 140
6.3.1 智能化容量预测过程 140
6.3.2 相关度分析与服务画像 148
6.3.3 容量预测迭代与校准 153
6.3.4 警惕业务场景变化 154
6.4 浅谈排队论 156
6.4.1 排队论基础知识 156
6.4.2 排队论应用策略:排队模型与公式 158
6.4.3 排队论应用案例 159
6.5 本章小结 162
第7章 全链路压测实战案例 164
7.1 某大型企业“双11”大促活动容量保障案例 164
7.1.1 明确背景与目标 165
7.1.2 重点链路梳理 167
7.1.3 服务架构治理 169
7.1.4 大促流量预估 174
7.1.5 大促全链路压测 176
7.1.6 大促活动容量保障体系 178
7.1.7 案例总结 180
7.2 某创业公司全链路压测建设之路 181
7.2.1 全链路压测的建设背景 181
7.2.2 全链路压测的技术方案 182
7.2.3 全链路压测的管理方案 184
7.2.4 案例总结 185
7.3 某商业银行全链路压测实践案例 186
7.3.1 业务和技术背景 186
7.3.2 全链路压测的技术方案 187
7.3.3 全链路压测的实施效果 188
7.3.4 案例总结 189
7.4 全链路压测与混沌工程的融合案例 190
7.4.1 异常场景下的全链路压测 190
7.4.2 高负载下的故障模拟 193
7.4.3 全链路压测与攻防演练的融合 194
7.4.4 案例总结 196
7.5 本章小结 196
第8章 全链路压测快问快答 198
8.1 技术篇 198
8.1.1 统一基础设施是实施全链路压测的要条件吗? 198
8.1.2 完全依赖开源工具能够实现全链路压测吗? 199
8.1.3 金融公司是否难以进行全链路压测? 199
8.1.4 业务迭代速度较快,如何降低全链路压测模型的更新成本? 199
8.1.5 业务技术团队认为通过限流足以规避容量风险,不需要进行服务优化,是这样吗? 200
8.1.6 如何做到全链路压测的常态化实施? 200
8.2 管理篇 201
8.2.1 我所在的公司没有任何容量保障基础,如何推动全链路压测的建设? 201
8.2.2 全链路压测适合自上而下推动,还是自下而上推动? 202
8.2.3 制定和推动全链路压测流程规范时阻力重重,该怎么办? 202
8.2.4 业务技术团队不认可全链路压测的结果,该怎么办? 203
8.2.5 “大厂”的全链路压测经验,能够复制到中小型企业吗? 204
8.3 职业发展篇 204
8.3.1 是什么契机让你开始从事全链路压测工作的? 204
8.3.2 你在实施全链路压测的过程中遇到的困难是什么? 205
8.3.3 从事全链路压测工作,能为我的职业发展带来什么帮助? 205
8.3.4 执行全链路压测非常辛苦,经常要熬夜,对此你有什么建议吗? 207
8.4 本章小结 207
全链路压测是互联网服务容量保障工作人员的重要工作,也是横跨多个领域的技术。本书采用“理论联系实际,再从实际回溯到理论”的方式,深入浅出地阐述全链路压测的知识。本书前4章聚焦于全链路压测的基础知识,先对全链路压测的基本知识和发展前景等进行深入介绍,再展开讲解全链路压测的技术实现、组织保障和工具建设,其间穿插一些实例代码和图表,帮助读者融会贯通。第5章和第6章介绍全链路压测的衍生实践,包括微服务架构下的容量治理,以及容量规划与容量预测,将全链路压测的应用价值扩大到更广的领域。第7章用4个案例讲解全链路压测在不同类型企业的落地实践,涵盖全链路压测在容量保障和混沌工程领域的应用。第8章从技术、管理和职业发展这3个方面,以问答形式阐述多个全链路压测问题,为读者带来更多的思考。
本书内容既包括全链路压测的理论知识,又包括丰富的实践案例,适合架构师、研发人员、性能测试人员、运维人员、网站可靠性工程师、团队管理者、项目经理等阅读。
我相信本书能够解决我们在全链路压测实施中所遇到的问题和困惑,带给我们更多的启发和思考,从而帮助我们构建更具弹性、更具容量的、更可靠的软件服务。
——朱少民,同济大学特聘教授,QECon大会发起人,《全程软件测试》和《敏捷测试》作者
本书系统性建立了全链路压测的完整知识体系框架,让我们有机会系统学习和掌握全链路压测的方方面面,有机会建立一种高屋建瓴的全局观,能站在“过来人”的肩膀上看问题,在面对复杂工程问题时再不会手足无措。
——茹炳晟,腾讯Tech Lead,腾讯研究院特约研究员,中国计算机学会CCF TF研发效能SIG主席
骏龙写的这本书,从他的经验背景出发,结合他对技术的思考、总结、提炼,给读者归纳出全链路压测相关的知识点,是对全链路压测的理解掌握非常有价值的参考书籍。希望你能从中体会到作者的技术思考,做到对全链路压测的全面认识,不偏不倚,借鉴经验,提升全链路压测的技术能力。
——高楼,盾山科技CEO,7DGroup创办人