高性能之道:SRE视角下的运维架构实践9787121454585
正版图书,可开发票,请放心购买。
¥
59.58
5.0折
¥
118
全新
库存3件
作者王力|责编:付睿
出版社电子工业
ISBN9787121454585
出版时间2023-06
装帧其他
开本其他
定价118元
货号31758118
上书时间2024-11-14
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
王力,资深技术老兵,《Nginx实战:基于Lua语言的配置、开发与架构详解》和《高性能之道:SRE视角下的运维架构实践》作者。15年互联网从业经验,其中有9年电商互联网开发和运维经验,这期间担任过微拍堂运维专家、阿里技术专家、折800运维架构师等,并有5年主导电商大促活动保障的落地经验,推进过折800、微拍堂两家电商平台运维架构从0到1的建设,精通服务的稳定性建设,精通高并发场景下的性能优化和中间件开发,擅长通过架构设计来优化系统复杂度、降本增效。本书提供了一些补充内容(比如对软件安装、配置的讲解等),大家可以搜微信公众号“SRE基础架构”进行查阅。
目录
目 录
开端篇 弱化边界感
第1章 引言3
1.1 运维架构和SRE3
1.2 理解业务,技术为业务服务5
1.3 不设边界6
1.4 SRE金字塔6
1.5 总结7
第2章 重视测试环境和预发布环境8
2.1 提效和维稳的第一道门槛――测试环境9
2.1.1 低级错误9
2.1.2 提效分析10
2.2 “守门员”――预发布环境11
2.2.1 低级错误11
2.2.2 提效分析12
2.3 两大环境问题根本原因溯源12
2.4 微拍堂测试环境治理思路介绍13
2.5 总结17
监控篇 底层逻辑的艺术
第3章 浅谈监控系统设计21
3.1 梳理监控体系21
3.2 梳理监控指标22
3.3 变更监控25
3.4 准实时系统监控25
3.5 短时进程追踪工具27
3.6 全链路监控27
3.7 商业监控平台的选用建议28
3.8 监控方式:白盒监控与黑盒监控29
3.9 从监控数据中总结规律30
3.10 黄金指标30
3.11 总结31
第4章 云原生可观测性开源工具――Kindling32
4.1 行业现状32
4.2 Kindling解决方案――关联内核可观测性数据的Trace34
4.3 Kindling探针的架构设计理念37
4.4 Kindling探针架构38
4.4.1 内核态程序:drivers38
4.4.2 用户态C/C++程序:kindling-probe38
4.4.3 用户态Go程序:kindling-collector39
4.4.4 程序间通信方式40
4.5 在线Demo介绍41
4.6 案例分享42
4.6.1 安装43
4.6.2 功能介绍44
4.6.3 稳定性价值47
4.7 总结48
第5章 高阶实战――打造可持续维护的闭环流程49
5.1 案例:动态观测SQL质量流程设计50
5.1.1 分析规范难以落地的原因50
5.1.2 监督与管控流程设计51
5.1.3 通知和统计57
5.2 案例:WebP格式图片的规范和落地实践57
5.2.1 规范无法持续推广57
5.2.2 成本和用户体验上的双赢58
5.2.3 计划实施60
5.2.4 管控机制60
5.2.5 采集数据信息和数据加工处理60
5.2.6 巡检平台之规范化监督61
5.3 案例:管道通信规范化实践62
5.3.1 我们每天都在使用管道62
5.3.2 管道示例场景及性能说明64
5.3.3 如何规范管道使用场景66
5.4 标准和规范治理平台67
5.4.1 现状68
5.4.2 设计思路68
5.5 总结72
第6章 挖掘Nginx的监控价值73
6.1 URI指纹服务设计73
6.2 Nginx日志分析指南76
6.2.1 参数白名单76
6.2.2 URI的响应时间和HTTP状态监控77
6.2.3 URI响应字节数波动分析77
6.2.4 查询URL请求的项目79
6.2.5 注意HTTPS的透传80
6.2.6 利用Nginx完成动态全链路比例调整81
6.3 总结82
故障篇 故障的生命周期
第7章 事前治理的方法论85
7.1 从故障中总结经验85
7.2 从系统资源层面和日志中巡检异常86
7.3 从标准和规范中寻找闭环之路86
7.4 从业务中挖掘基础服务的使用问题87
7.5 技术风险防控运营成本87
7.6 总结88
第8章 变更管控设计思路89
8.1 变更管控89
8.1.1 变更对象89
8.1.2 变更发布90
8.1.3 变更可灰度91
8.1.4 变更可回滚92
8.1.5 变更可监控92
8.1.6 配置项变更92
8.1.7 变更管控思路92
8.2 JumpServer使用的艺术及工单交互96
8.3 变更三板斧:运维团队的可监控、可灰度、可回滚实践98
8.3.1 案例:云服务器资源伸缩稳定性98
8.3.2 案例:CDN OpenResty的变更策略102
8.4 总结106
第9章 轮值的设计思路107
9.1 值班模式探究108
9.1.1 让开发人员参与其中108
9.1.2 制定KPI109
9.1.3 值班人员的边界探讨110
9.2 值班机器人111
9.3 提升值班价值――SRE需求池设计112
9.3.1 结合日常巡检与非值班时间112
9.3.2 在烦琐的工作中收集需求112
9.4 总结113
第10章 故障演练与应急预案114
10.1 故障演练缘由114
10.1.1 更好地面对系统规模增长带来的复杂性115
10.1.2 提升故障的排查速度115
10.1.3 验证应急预案的正确性115
10.1.4 验证基础设施的稳定性116
10.1.5 验证监控感知能力116
10.1.6 验证应急流程的顺畅度116
10.2 故障演练流程116
10.2.1 故障演练场景关键要素116
10.2.2 故障演练预期117
10.3 应急预案119
10.3.1 应急场景标准化120
10.3.2 梳理应急预案清单120
10.4 总结121
第11章 应急响应流程实践122
11.1 收拢故障上报来源122
11.1.1 从技术体系内部发现122
11.1.2 从技术体系外部发现123
11.2 建立应急小组123
11.2.1 人多力量弱123
11.2.2 稳定性接口人和岗位权限123
11.2.3 完善客诉标准化术语124
11.3 故障噪点治理124
11.3.1 报警治理124
11.3.2 设计外部反馈阈值125
11.3.3 收集第三方抖动事件125
11.4 控制应急节奏126
11.4.1 舍小保大126
11.4.2 “优先止血”,后续定位根本原因127
11.4.3 及时同步信息,减少信息差127
11.5 应急“止血”的常见操作127
11.5.1 代码回滚127
11.5.2 重启128
11.5.3 时序监控下的限流、熔断、扩容129
11.5.4 业务降级130
11.5.5 阻断慢查询131
11.5.6 网络与运营商131
11.5.7 重识监控132
11.6 总结132
第12章 静态容灾降级系统133
12.1 荆棘之路134
12.2 设计之路136
12.3 架构流程图138
12.3.1 反向代理系统138
12.3.2 日志分析系统138
12.3.3 后台系统――利用URI指纹服务138
12.3.4 爬虫系统139
12.3.5 容灾的缓存系统140
12.3.6 基于时间的版本用途140
12.3.7 异地容灾141
12.4 核心代码解说142
12.4.1 Ngx_Lua应用142
12.4.2 爬虫和日志分析系统的关系143
12.4.3 完全容灾和部分容灾功能144
12.5 静态容灾的智能关闭方案145
12.5.1 从日志分析系统复制请求145
12.5.2 利用GoReplay复制流量145
12.5.3 利用Nginx的mirror镜像功能146
12.5.4 灰度验证容灾系统缓存――闭环设计147
12.6 替换爬虫的新思路148
12.7 总结148
第13章 基于OpenResty的动态限流设计思路150
13.1 常见反向代理限流方案缺点分析150
13.2 动态限流设计思路151
13.3 多维度限流154
13.4 智能感知响应能力动态控速设计方案157
13.5 屏蔽慢请求带来的服务阻塞159
13.6 总结160
第14章 故障复盘161
14.1 复盘前161
14.2 复盘中161
14.3 复盘后164
14.4 自省164
14.5 跨部门分享165
14.6 故障库165
14.7 总结165
容量篇 性能与成本间的平衡
第15章 成本优化169
15.1 成本优化事前准备169
15.1.1 目标的制定和价值体现170
15.1.2 IT成本与人力成本的权衡170
15.1.3 提升对系统的理解171
15.1.4 评估优化前后的数据统计及业务影响171
15.1.5 从用户体验看待成本优化173
15.1.6 梳理业务和资源的关系173
15.2 公有云基础资源优化实践174
15.2.1 成本管理白皮书174
15.2.2 合理化资源使用率177
15.2.3 自建产品和云产品的使用场景优化178
15.2.4 基于业务场景的成本控制179
15.3 总结180
第16章 智能伸缩平台181
16.1 弹性伸缩平台关键路径盘点181
16.2 基础设施建设182
16.2.1 基于Pod的HPA传统模式182
16.2.2 基于Cluster-Autoscaler的Node伸缩184
16.3 基于业务场景的实战189
16.3.1 定时伸缩189
16.3.2 基于预测的弹性伸缩191
16.4 风险控制体系199
16.4.1 动态限流触发规则199
16.4.2 扩容节点失败和业务降级200
16.5 总结200
第17章 容量规划201
17.1 容量规划现状201
17.2 容量规划建设思路202
17.2.1 建设核心202
17.2.2 建设思路203
17.3 应用系统容量规划说明204
17.4 基于巡检模式的容量评估流程205
17.4.1 对流量来源的梳理205
17.4.2 对容量对象的梳理206
17.4.3 收集日常关键性数据207
17.5 对容量规划关注点的梳理210
17.5.1 压力测试210
17.5.2 业务放量212
17.5.3 大促活动213
17.5.4 秒杀业务214
17.5.5 关注运营活动计划214
17.5.6 尖刺限流215
17.6 总结215
第18章 编程能力216
18.1 养成写伪代码的习惯216
18.2 养成管理代码的习惯217
18.3 编程能力分级218
18.4 编程能力更深层的价值探讨219
18.4.1 如何看待PHP短连接问题219
18.4.2 理解Redis和Memcached在业务场景上的区别220
18.4.3 进程、线程、协程在Linux系统中的表现221
18.4.4 探究阻塞和非阻塞、异步和同步在系统中的表现223
18.4.5 共享内存224
18.4.6 尝试一些导致进程崩溃的操作224
18.4.7 学习秒杀系统的业务架构225
18.4.8 给自己的代码做闭环实践226
18.4.9 参与业务开发日常226
18.5 熟悉编程语言特性226
18.6 通过系统分析倒推应用配置问题227
18.6.1 通过access函数发现PHP性能问题227
18.6.2 Java连接池失效228
18.7 总结229
全局视角篇 运维破圈
第19章 开启测试视角233
19.1 测试人员的职责边界233
19.2 压力测试234
19.2.1 压测黑名单思维235
19.2.2 压测利器Wrk235
19.2.3 流量镜像工具GoReplay235
19.3 自动化测试监控平台设计237
19.3.1 “牵一发而动全身”的迭代238
19.3.2 OpenDiffy介绍238
19.3.3 变更管控的支撑系统OpenDiffy+GoReplay239
19.4 破坏性测试探究239
19.5 从前端的体验“找碴儿”240
19.5.1 基于浏览器特性的服务优化240
19.5.2 从图片加载中寻找优化方法241
19.5.3 数据埋点的发送频率242
19.5.4 域名的使用限制243
19.5.5 请求重复性243
19.5.6 PageSpeed Insights分析页面的加载243
19.5.7 定期的内耗分析245
19.6 总结245
第20章 开启用户视角246
20.1 内外兼顾246
20.1.1 内部用户247
20.1.2 外部用户248
20.2 建立反馈机制249
20.2.1 优化客服反馈机制249
20.2.2 与客服合作的案例分享249
20.2.3 奖励机制250
20.2.4 关注舆情250
20.3 产品体验――谷歌SRE的高阶思维251
20.3.1 不仅仅是体验251
20.3.2 交互烦琐252
20.3.3 无人问津252
20.3.4 ROI252
20.4 防御体系的“误伤”指南253
20.4.1 WAF“误伤”253
20.4.2 内部风控“误伤”254
20.5 关注客户端环境254
20.5.1 客户端机型配置254
20.5.2 网络255
20.6 总结255
第21章 开启前端和App开发人员视角256
21.1 概述256
21.2 为什么要解决性能问题257
21.3 缓存257
21.3.1 强缓存257
21.3.2 协商缓存259
21.4 网络请求261
21.4.1 HTTP/2.0261
21.4.2 DNS预解析262
21.4.3 预先建立连接262
21.4.4 服务器应该避免过多重定向263
21.5 客户端计算263
21.6 预加载265
21.7 梳理技术风险265
21.7.1 请求阻塞式串行加载266
21.7.2 埋点发送过于频繁266
21.7.3 弱网下的资源加载降级266
21.7.4 拨测266
21.8 总结267
第22章 DNS应用场景实践268
22.1 利用DNS完成故障转移268
22.2 使用HTTPDNS提升访问稳定性271
22.3 提升测试、A/B测试等环境的切换效率273
22.4 域名反向解析用途实践273
22.5 内部DNS系统高可用实践274
22.5.1 两次DNS故障275
22.5.2 问题和思考276
22.5.3 改进措施278
22.5.4 配置及验证279
22.5.5 监控283
22.6 总结284
性能篇 SRE进阶之路
第23章 高并发网关价值探究287
23.1 通用功能介绍287
23.2 网关中的聚合模式288
23.2.1 Lura启示录289
23.2.2 APISIX中的batch-requests插件289
23.2.3 从GraphQL发现的技术实践思路291
23.3 兼顾缓存的网关设计思路293
23.3.1 APISIX的proxy-cache插件293
23.3.2 利用聚合拼接缓存资源293
23.3.3 鉴权和缓存剥离294
23.4 总结295
第24章 高性能Varnish缓存系统296
24.1 HTTP缓存对后端服务的价值分析296
24.2 CDN缓存和Varnish缓存的共存模式298
24.3 安装Varnish和所需模块299
24.4 配置文件概览300
24.5 稳定性建设所依赖的功能300
24.5.1 神圣模式300
24.5.2 宽限模式――异步缓存更新302
24.5.3 更安稳的软清除303
24.6 最佳实践304
24.6.1 动态缓存时间配置304
24.6.2 热Key及秒杀系统的缓存实践305
24.6.3 后端服务故障转移306
24.6.4 高并发下Varnish启动参数优化307
24.6.5 Varnish配置模板优化实践307
24.6.6 测试环境缓存系统的干扰事件309
24.7 总结309
第25章 SRE漏斗优化法则310
25.1 SRE性能优化之漏斗优化法则311
25.2 漏斗优化法则的技术栈梳理312
25.2.1 减少访问量312
25.2.2 减少返回的数据313
25.2.3 减少交互次数313
25.2.4 降低CPU、内存使用率314
25.2.5 提升资源利用率314
25.3 总结315
第26章 awesome性能分析工具316
26.1 站在巨人的肩膀上工作316
26.1.1 系统性能分析常见清单317
26.1.2 bcc-tools工具清单319
26.1.3 火焰图320
26.2 Netdata320
26.3 总结321
第27章 性能优化实践锦集322
27.1 TIME_WAIT优化方案扩展322
27.2 利用Ngx_Lua缩短请求链路323
27.3 eBPF在Kubernetes上的应用325
27.3.1 kubectl-trace325
27.3.2 使用前提325
27.3.3 使用优点325
27.3.4 使用场景326
27.3.5 安装326
27.4 善用CDN327
27.4.1 静态加速327
27.4.2 动态加速328
27.4.3 缓存过期保护策略328
27.5 记一次中台服务优化实战329
27.5.1 寻找优化目标330
27.5.2 抽丝剥茧――尝试优化方案331
27.5. 使用go pprof火焰图发现端倪333
27.5.4 回顾复盘337
27.6 总结337
扩展篇 在团队间搭建桥梁
第28章 业务开发人员视角下的技术风险341
28.1 了解业务开发人员342
28.1.1 工作内容342
28.1.2 废弃十年如一日343
28.1.3 重构并非易事343
28.1.4 发布前的检查清单344
28.1.5 站在巨人的肩膀上编程344
28.1.6 拒绝伪需求345
28.2 大淘客之旅346
28.2.1 对话高层,达成共识346
28.2.2 对话业务线负责人347
28.2.3 重识目标,各个击破347
28.2.4 技术氛围和激励政策348
28.2.5 “曲线救国”的技术路线348
28.3 总结351
第29章 SRE视角全篇总结352
29.1 齐心协力353
29.1.1 关键要素353
29.1
— 没有更多了 —
以下为对购买帮助不大的评价