内容简介 · · · · · ·
架构设计是互联网后端开发人员必须具备的一项重要能力。大多数开发人员都是通过实际项目来培养架构设计能力的。这样的学习方式对项目本身的复杂程度依赖较重,而且会增加学习的时间。
在《架构师修炼之道——思维、方法与实践》中,作者结合多年的架构学习和项目开发经验,总结出一套架构学习的体系,从技术方法、思维意识、工具等方面讲解做好互联网后端架构设计的相关知识。通过相关知识的学习,读者能够掌握设计稳定、易维护、易扩展的软件架构的方法,也能够提升日常维护已有项目的能力。书中讲解的技术方法具有通用性,在其他非互联网行业的软件开发中,也具有借鉴意义。
本书介绍的架构设计方法主要适合以下读者:
从事互联网后端开发的工程师;
从事互联网行业的产品经理;
即将加入互联网行业的新人。
作者简介 · · · · · ·
张云鹏
从事互联网后端研发工作十余年。
曾就职于腾讯QQ后台团队,全程参与过多个大型系统的设计和开发。对设计高性能、高可用互联网架构有着丰富的经验。
专注于架构设计、系统重构、维护扩展等方面的技术研究,总结相关知识,为团队提供技术解决方案和培养架构人才。
目录 · · · · · ·
目录
第一部分 架构简介
第1章 架构简介 2
1.1 架构的定义 2
1.2 对架构师的要求 4
1.3 互联网架构的挑战 7
1.4 一切尽在控制 8
1.5 小结 10
第二部分 架构设计的技术方法
第2章 切分与扩展 16
2.1 切分 16
2.1.1 数据维度切分 16
2.1.2 逻辑维度切分 23
2.1.3 切分的优点 24
2.2 扩展 25
2.2.1 部署扩展 25
2.2.2 升级扩展 27
2.2.3 set模型 29
2.3 小结 31
第3章 主动发现 33
3.1 日志 34
3.1.1 为什么要记日志 34
3.1.2 日志级别 35
3.1.3 日志类型 36
3.1.4 注意事项 38
3.2 监控 40
3.3 主动发现的监控标准 43
3.3.1 系统层监控 43
3.3.2 用户侧监控 44
3.3.3 应用层监控 45
3.4 其他形式的监控 47
3.5 小结 49
第4章 自动化 52
4.1 自动部署 54
4.1.1 准备 54
4.1.2 实现 55
4.1.3 验证 57
4.2 自动恢复 58
4.2.1 服务恢复 58
4.2.2 流量迁移 60
4.3 提升自动化意识 63
4.4 其他场景 64
4.5 小结 66
第5章 灰度升级 67
5.1 策略 68
5.1.1 按照用户身份执行灰度策略 68
5.1.2 按照号段执行灰度策略 69
5.1.3 按照命令号执行灰度策略 70
5.1.4 按照时间执行灰度策略 71
5.2 灰度部署方式 73
5.2.1 蓝绿部署/发布 73
5.2.2 金丝雀发布 74
5.3 注意事项 75
5.3.1 数据采样 75
5.3.2 及时回滚 76
5.3.3 周期完全 76
5.3.4 测试完全 77
5.3.5 充分验证 78
5.4 案例—系统迁移下线操作 79
5.4.1 验证和比对 79
5.4.2 回滚 80
5.5 小结 81
第6章 过载保护 82
6.1 过载的现象及原因 82
6.1.1 什么是过载 82
6.1.2 过载现象及原因分析 85
6.2 处理方式 86
6.2.1 隔离 87
6.2.2 限流 88
6.2.3 节流和防抖 94
6.2.4 动态调节 95
6.2.5 尽早拒绝 96
6.2.6 调整缓冲区大小 97
6.2.7 减少重试 98
6.2.8 做好容量评估 98
6.3 小结 99
第7章 负载均衡 100
7.1 理论算法 100
7.1.1 基本轮询 100
7.1.2 加权轮询 102
7.1.3 随机访问 103
7.1.4 源地址Hash 104
7.1.5 最小连接数 105
7.1.6 映射分配 106
7.1.7 一致性Hash 107
7.2 动态负载均衡 110
7.3 常用组件 111
7.3.1 DNS 111
7.3.2 Nginx 111
7.3.3 LVS 113
7.3.4 NAT模式 113
7.3.5 DR模式 114
7.3.6 IP Tunneling模式 115
7.3.7 SDK组件 117
7.4 实际案例—Web类业务负载均衡实现 117
7.5 小结 119
第8章 柔性 120
8.1 理论基础 122
8.1.1 CAP定理 122
8.1.2 BASE理论 124
8.2 柔性的实现方法 126
8.2.1 产品角度 127
8.2.2 技术角度 128
8.3 验证方式 131
8.4 小结 132
第三部分 架构思维意识
第9章 稳定为王 137
9.1 控制因素 137
9.1.1 安全 137
9.1.2 变更 141
9.2 保障方法 144
9.2.1 合理拒绝 145
9.2.2 厘清主次关系 145
9.2.3 容量量化 147
9.2.4 预先准备 148
9.2.5 注重监控 149
9.2.6 敬畏之心 150
9.3 应对异常 152
9.3.1 处理事故 152
9.3.2 管理预期 153
9.3.3 复盘总结 153
9.3.4 有效预防 153
9.3.5 谨慎变更 154
9.4 小结 155
第10章 完成比完美重要 156
10.1 先扛住再优化 156
10.1.1 快速抢占市场 157
10.1.2 实现先于性能 157
10.1.3 需求可能修改 158
10.1.4 验证用户行为 158
10.1.5 突发问题案例 158
10.2 最小可用,快速迭代 160
10.3 不要等待 160
10.4 接受不完美 161
10.4.1 分清主次 161
10.4.2 自动化降级 162
10.4.3 代价最低 162
10.5 及时偿还技术债务 163
10.5.1 定期重构 164
10.5.2 及时清理 165
10.5.3 对技术有追求 167
10.6 小结 167
第11章 聚沙成塔 168
11.1 小而简洁 168
11.2 扩展能力 172
11.3 小结 173
第12章 自动化思维 175
12.1 拒绝重复 175
12.1.1 时间成本 175
12.1.2 解决重复 176
12.2 工具系统化 178
12.3 小结 180
第13章 产品思维 181
13.1 体验业务 181
13.2 体验竞品 182
13.3 扬长避短 183
13.4 控制欲望 184
13.5 献计献策 185
13.6 反哺方案 185
13.7 小结 186
第四部分 善用工具
第14章 算法 189
14.1 树状数组 190
14.1.1 问题场景 190
14.1.2 排行榜实现及优化方案 191
14.1.3 树状数组实现排行榜 191
14.1.4 树状数组优化排行榜 195
14.2 多阶Hash算法 196
14.2.1 原理 196
14.2.2 优点 197
14.2.3 缺点 198
14.3 利用线性同余的一致性Hash算法 199
14.3.1 算法内容 199
14.3.2 适用场景 199
14.3.3 实现原理 200
14.4 随机数在互联网业务中的应用 203
14.4.1 随机数的生成方法 203
14.4.2 误用随机数的场景 205
14.4.3 项目中用到随机数的场景 207
14.5 小结 212
第15章 流程和文化 213
15.1 流程 213
15.1.1 需求阶段 214
15.1.2 开发阶段 215
15.1.3 测试阶段 217
15.1.4 发布阶段 219
15.1.5 运营阶段 220
15.1.6 管理机制 221
15.2 文化 222
15.3 小结 223
第五部分 案例剖析
第16章 架构案例剖析 226
16.1 小型案例—统计用户在线时长 226
16.1.1 需求描述 226
16.1.2 项目背景 227
16.1.3 需求分析 228
16.1.4 实现方案 228
16.1.5 案例总结 230
16.2 中型案例—抽奖活动 231
16.2.1 需求描述 231
16.2.2 需求分析 231
16.2.3 实现方案 232
16.2.4 整体架构设计 238
16.2.5 案例总结 240
16.3 大型案例—短网址服务 241
16.3.1 需求描述 241
16.3.2 需求分析 241
16.3.3 需求一:内部使用 243
16.3.4 需求二:大型互联网服务方案 246
16.4 小结 256
· · · · · · (收起)
第一部分 架构简介
第1章 架构简介 2
1.1 架构的定义 2
1.2 对架构师的要求 4
1.3 互联网架构的挑战 7
1.4 一切尽在控制 8
1.5 小结 10
第二部分 架构设计的技术方法
第2章 切分与扩展 16
2.1 切分 16
2.1.1 数据维度切分 16
2.1.2 逻辑维度切分 23
2.1.3 切分的优点 24
2.2 扩展 25
2.2.1 部署扩展 25
2.2.2 升级扩展 27
2.2.3 set模型 29
2.3 小结 31
第3章 主动发现 33
3.1 日志 34
3.1.1 为什么要记日志 34
3.1.2 日志级别 35
3.1.3 日志类型 36
3.1.4 注意事项 38
3.2 监控 40
3.3 主动发现的监控标准 43
3.3.1 系统层监控 43
3.3.2 用户侧监控 44
3.3.3 应用层监控 45
3.4 其他形式的监控 47
3.5 小结 49
第4章 自动化 52
4.1 自动部署 54
4.1.1 准备 54
4.1.2 实现 55
4.1.3 验证 57
4.2 自动恢复 58
4.2.1 服务恢复 58
4.2.2 流量迁移 60
4.3 提升自动化意识 63
4.4 其他场景 64
4.5 小结 66
第5章 灰度升级 67
5.1 策略 68
5.1.1 按照用户身份执行灰度策略 68
5.1.2 按照号段执行灰度策略 69
5.1.3 按照命令号执行灰度策略 70
5.1.4 按照时间执行灰度策略 71
5.2 灰度部署方式 73
5.2.1 蓝绿部署/发布 73
5.2.2 金丝雀发布 74
5.3 注意事项 75
5.3.1 数据采样 75
5.3.2 及时回滚 76
5.3.3 周期完全 76
5.3.4 测试完全 77
5.3.5 充分验证 78
5.4 案例—系统迁移下线操作 79
5.4.1 验证和比对 79
5.4.2 回滚 80
5.5 小结 81
第6章 过载保护 82
6.1 过载的现象及原因 82
6.1.1 什么是过载 82
6.1.2 过载现象及原因分析 85
6.2 处理方式 86
6.2.1 隔离 87
6.2.2 限流 88
6.2.3 节流和防抖 94
6.2.4 动态调节 95
6.2.5 尽早拒绝 96
6.2.6 调整缓冲区大小 97
6.2.7 减少重试 98
6.2.8 做好容量评估 98
6.3 小结 99
第7章 负载均衡 100
7.1 理论算法 100
7.1.1 基本轮询 100
7.1.2 加权轮询 102
7.1.3 随机访问 103
7.1.4 源地址Hash 104
7.1.5 最小连接数 105
7.1.6 映射分配 106
7.1.7 一致性Hash 107
7.2 动态负载均衡 110
7.3 常用组件 111
7.3.1 DNS 111
7.3.2 Nginx 111
7.3.3 LVS 113
7.3.4 NAT模式 113
7.3.5 DR模式 114
7.3.6 IP Tunneling模式 115
7.3.7 SDK组件 117
7.4 实际案例—Web类业务负载均衡实现 117
7.5 小结 119
第8章 柔性 120
8.1 理论基础 122
8.1.1 CAP定理 122
8.1.2 BASE理论 124
8.2 柔性的实现方法 126
8.2.1 产品角度 127
8.2.2 技术角度 128
8.3 验证方式 131
8.4 小结 132
第三部分 架构思维意识
第9章 稳定为王 137
9.1 控制因素 137
9.1.1 安全 137
9.1.2 变更 141
9.2 保障方法 144
9.2.1 合理拒绝 145
9.2.2 厘清主次关系 145
9.2.3 容量量化 147
9.2.4 预先准备 148
9.2.5 注重监控 149
9.2.6 敬畏之心 150
9.3 应对异常 152
9.3.1 处理事故 152
9.3.2 管理预期 153
9.3.3 复盘总结 153
9.3.4 有效预防 153
9.3.5 谨慎变更 154
9.4 小结 155
第10章 完成比完美重要 156
10.1 先扛住再优化 156
10.1.1 快速抢占市场 157
10.1.2 实现先于性能 157
10.1.3 需求可能修改 158
10.1.4 验证用户行为 158
10.1.5 突发问题案例 158
10.2 最小可用,快速迭代 160
10.3 不要等待 160
10.4 接受不完美 161
10.4.1 分清主次 161
10.4.2 自动化降级 162
10.4.3 代价最低 162
10.5 及时偿还技术债务 163
10.5.1 定期重构 164
10.5.2 及时清理 165
10.5.3 对技术有追求 167
10.6 小结 167
第11章 聚沙成塔 168
11.1 小而简洁 168
11.2 扩展能力 172
11.3 小结 173
第12章 自动化思维 175
12.1 拒绝重复 175
12.1.1 时间成本 175
12.1.2 解决重复 176
12.2 工具系统化 178
12.3 小结 180
第13章 产品思维 181
13.1 体验业务 181
13.2 体验竞品 182
13.3 扬长避短 183
13.4 控制欲望 184
13.5 献计献策 185
13.6 反哺方案 185
13.7 小结 186
第四部分 善用工具
第14章 算法 189
14.1 树状数组 190
14.1.1 问题场景 190
14.1.2 排行榜实现及优化方案 191
14.1.3 树状数组实现排行榜 191
14.1.4 树状数组优化排行榜 195
14.2 多阶Hash算法 196
14.2.1 原理 196
14.2.2 优点 197
14.2.3 缺点 198
14.3 利用线性同余的一致性Hash算法 199
14.3.1 算法内容 199
14.3.2 适用场景 199
14.3.3 实现原理 200
14.4 随机数在互联网业务中的应用 203
14.4.1 随机数的生成方法 203
14.4.2 误用随机数的场景 205
14.4.3 项目中用到随机数的场景 207
14.5 小结 212
第15章 流程和文化 213
15.1 流程 213
15.1.1 需求阶段 214
15.1.2 开发阶段 215
15.1.3 测试阶段 217
15.1.4 发布阶段 219
15.1.5 运营阶段 220
15.1.6 管理机制 221
15.2 文化 222
15.3 小结 223
第五部分 案例剖析
第16章 架构案例剖析 226
16.1 小型案例—统计用户在线时长 226
16.1.1 需求描述 226
16.1.2 项目背景 227
16.1.3 需求分析 228
16.1.4 实现方案 228
16.1.5 案例总结 230
16.2 中型案例—抽奖活动 231
16.2.1 需求描述 231
16.2.2 需求分析 231
16.2.3 实现方案 232
16.2.4 整体架构设计 238
16.2.5 案例总结 240
16.3 大型案例—短网址服务 241
16.3.1 需求描述 241
16.3.2 需求分析 241
16.3.3 需求一:内部使用 243
16.3.4 需求二:大型互联网服务方案 246
16.4 小结 256
· · · · · · (收起)
喜欢读"架构师修炼之道——思维、方法与实践"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"架构师修炼之道——思维、方法与实践"的人也喜欢 · · · · · ·
架构师修炼之道——思维、方法与实践的书评 · · · · · · ( 全部 1 条 )
在公司图书馆看到的,打第一眼就喜欢
这篇书评可能有关键情节透露
这正是适合后台架构师入门架构的必读之书;也是客户端架构师可以借鉴的必读之书。建议结合《 软件测试实用技术与常用模板 第2版》的集成测试、系统测试章节一起来看,站在软件开发生命周期的角度考虑系统架构、测试架构,更好做到交付验收才是每一个开发人员、架构师要思考的事... (展开)> 更多书评 1篇
论坛 · · · · · ·
在这本书的论坛里发言以下书单推荐 · · · · · · ( 全部 )
- 公司图书馆说要买技术书 (李斯特杨)
- 2021年技术图书 (爱吃土豆君)
- 江南布衣2020推荐 (刀哥)
- My Features Book List (D瓜哥)
- 架构师 (飞飞)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有47人想读,手里有一本闲着?
订阅关于架构师修炼之道——思维、方法与实践的评论:
feed: rss 2.0
0 有用 金诚 2021-02-10 23:45:58
一、知识点分割详细,从架构简介,宏观控制8个方面,到微观控制的6个维度以及维度的细分领域,做了详细的“地图绘制”,让有经验的架构师结合自己的经验融会贯通,让刚入门的架构师可以初窥门径有份新手地图参考,此乃最佳学习方式 二、经验干货十足,设计架构的方法,讲了切分、扩展、负载均衡、过载保护、灰度升级、主动发现、自动化、柔性,这9个无一不是架构师必须掌握的技巧,后台开发人员说的多些,对于客户端架构师来... 一、知识点分割详细,从架构简介,宏观控制8个方面,到微观控制的6个维度以及维度的细分领域,做了详细的“地图绘制”,让有经验的架构师结合自己的经验融会贯通,让刚入门的架构师可以初窥门径有份新手地图参考,此乃最佳学习方式 二、经验干货十足,设计架构的方法,讲了切分、扩展、负载均衡、过载保护、灰度升级、主动发现、自动化、柔性,这9个无一不是架构师必须掌握的技巧,后台开发人员说的多些,对于客户端架构师来说,更是宝贵的参考经验,如何在客户端考虑柔性、考虑过载、主动发现,如何结合自己业务,做到切分、扩展、灰度升级等,都是每一个前端、后端架构师要考虑。 作者:金诚(来自豆瓣) 来源:https://book.douban.com/review/13210113/ (展开)
1 有用 RongieZeng 2021-10-30 22:30:14
干货不多,互联网公司做过几年开发的话,只要不是太懒,多学习观察总结,基本都能建立起书中的认知体系
0 有用 全村的希望 2021-05-27 23:31:18
近期巴士读物,后面还要翻翻,将知识内化 20210527
0 有用 务观在阿里 2020-11-22 21:19:27
spring side作者推荐的。失望
0 有用 Dylan 2020-12-12 15:20:48
实践经验的总结,真的全部做到了架构师角色是不成问题的
1 有用 Yale 2022-07-31 01:08:58
我觉得这本书挺不错的啊,清晰易懂,对我而言确实从书中学到了知识,主要是吸收书中提到的架构思维和方法。
1 有用 RongieZeng 2021-10-30 22:30:14
干货不多,互联网公司做过几年开发的话,只要不是太懒,多学习观察总结,基本都能建立起书中的认知体系
0 有用 Kosho 2021-06-03 00:04:32
比国外的那本同名书更容易理解一些,每个人对架构的理解都是不同的,相对来说干货还是比较多的。
0 有用 全村的希望 2021-05-27 23:31:18
近期巴士读物,后面还要翻翻,将知识内化 20210527
0 有用 金诚 2021-02-10 23:45:58
一、知识点分割详细,从架构简介,宏观控制8个方面,到微观控制的6个维度以及维度的细分领域,做了详细的“地图绘制”,让有经验的架构师结合自己的经验融会贯通,让刚入门的架构师可以初窥门径有份新手地图参考,此乃最佳学习方式 二、经验干货十足,设计架构的方法,讲了切分、扩展、负载均衡、过载保护、灰度升级、主动发现、自动化、柔性,这9个无一不是架构师必须掌握的技巧,后台开发人员说的多些,对于客户端架构师来... 一、知识点分割详细,从架构简介,宏观控制8个方面,到微观控制的6个维度以及维度的细分领域,做了详细的“地图绘制”,让有经验的架构师结合自己的经验融会贯通,让刚入门的架构师可以初窥门径有份新手地图参考,此乃最佳学习方式 二、经验干货十足,设计架构的方法,讲了切分、扩展、负载均衡、过载保护、灰度升级、主动发现、自动化、柔性,这9个无一不是架构师必须掌握的技巧,后台开发人员说的多些,对于客户端架构师来说,更是宝贵的参考经验,如何在客户端考虑柔性、考虑过载、主动发现,如何结合自己业务,做到切分、扩展、灰度升级等,都是每一个前端、后端架构师要考虑。 作者:金诚(来自豆瓣) 来源:https://book.douban.com/review/13210113/ (展开)