书籍详情

分布式架构原理与实践

分布式架构原理与实践

作者:崔皓 著

出版社:人民邮电出版社

出版时间:2021-11-01

ISBN:9787115576620

定价:¥129.80

购买这本书可以去
内容简介
  本书从软件结构的发展历史入手,通过一个简单的例子,描述了分布式架构的特性和存在的问题,并围绕这些问题展开了分析和实践。书中从为什么、是什么、怎么办这三个方面,分别讲解了分布式应用服务的拆分、分布式调用、分布式协同、分布式计算、分布式存储、分布式资源管理和调度、高性能与可用性以及指标与监控等内容,基本涵盖了分布式技术的要点。读者既可以按照逻辑联系从前往后看,也可以只阅读感兴趣的章节。
作者简介
  崔皓资深架构师,10 年分布式架构经验。曾任惠普技术专家。乐于分享,撰写了很多热门技术文章,阅读量超过 60 万。
目录
第 1章 分布式架构设计的特征与问题\t1
1.1 架构设计的演进过程 1
1.1.1 应用与数据一体模式 1
1.1.2 应用与数据分离模式 2
1.1.3 缓存与性能的提升 3
1.1.4 服务器集群处理并发 4
1.1.5 数据库读写分离 5
1.1.6 反向代理和CDN 6
1.1.7 分布式数据库与分表分库 9
1.1.8 业务拆分 10
1.1.9 分布式与微服务 11
1.2 一个简单的例子:分布式架构的组成 13
1.2.1 架构概述与分层 13
1.2.2 客户端与CDN 15
1.2.3 接入层 16
1.2.4 应用层 17
1.2.5 存储层 23
1.3 分布式架构的特征 26
1.4 分布式架构的问题 27
1.4.1 分布式架构的逻辑结构图 27
1.4.2 应用服务拆分 28
1.4.3 分布式调用 29
1.4.4 分布式协同 29
1.4.5 分布式计算 30
1.4.6 分布式存储 30
1.4.7 分布式资源管理与调度 31
1.4.8 高性能与可用性 31
1.4.9 指标与监控 31
1.5 本书的阅读方式 32
1.6 总结 33
第 2章 分布式应用服务的拆分 34
2.1 起因与概念 34
2.2 拆分思路 36
2.3 模型结构 38
2.3.1 通用语言 38
2.3.2 领域、子域和限界上下文 39
2.3.3 实体和值类型 41
2.3.4 聚合和聚合根 45
2.3.5 领域事件 46
2.4 分析业务需求形成应用服务 48
2.4.1 分析业务流程 49
2.4.2 抽取领域对象和生成聚合 51
2.4.3 划定限界上下文 53
2.5 领域驱动设计分层 54
2.5.1 分层的概述与原则 54
2.5.2 分层的内容 56
2.5.3 分层的总结 57
2.5.4 服务内部的分层调用与服务间的调用 58
2.5.5 把分层映射到代码结构 60
2.5.6 代码分层示例 65
2.6 总结 70
第3章 分布式调用 71
3.1 负载均衡 71
3.1.1 负载均衡分类 72
3.1.2 负载均衡算法 83
3.2 API 网关 85
3.2.1 API 网关的定义 85
3.2.2 API 网关的服务定位 87
3.2.3 API 网关的技术原理 88
3.3 服务注册与发现 90
3.3.1 服务注册与发现的概念和原理 91
3.3.2 服务注册中心的可用性 92
3.3.3 服务注册中心的服务保存 92
3.4 服务间的远程调用 92
3.4.1 RPC 调用过程 93
3.4.2 RPC 动态代理 94
3.4.3 RPC 序列化 97
3.4.4 协议编码 98
3.4.5 网络传输 99
3.4.6 Netty 实现 RPC 104
3.5 总结 116
第4章 分布式协同 117
4.1 分布式系统的特性与互斥问题 117
4.1.1 集中互斥算法 118
4.1.2 基于许可的互斥算法 120
4.1.3 令牌环互斥算法 122
4.2 分布式锁 124
4.2.1 分布式锁的由来和定义 125
4.2.2 通过Redis缓存实现分布式锁 126
4.2.3 通过ZooKeeper 实现分布式锁 129
4.2.4 分布式分段加锁 132
4.3 分布式事务 133
4.3.1 ACID 理论 134
4.3.2 CAP 理论 135
4.3.3 BASE 理论 137
4.3.4 DTP 模型 139
4.3.5 分布式事务 2PC 解决方案 141
4.3.6 分布式事务 TCC 解决方案 143
4.4 分布式选举 146
4.4.1 Bully 算法 147
4.4.2 Raft 算法 150
4.4.3 ZAB 算法 154
4.5 ZooKeeper——分布式系统的实践 157
4.5.1 从一个简单的例子开始 157
4.5.2 Znode 的原理与使用 158
4.5.3 Watcher 原理与使用 159
4.5.4 Version 的原理与使用 162
4.5.5 会话的原理与使用 164
4.5.6 服务群组 166
4.6 总结 169
第5章 分布式计算 171
5.1 MapReduce 模式 171
5.1.1 MapReduce 的策略和理念 171
5.1.2 MapReduce 的体系结构 173
5.1.3 MapReduce 的工作流程 175
5.1.4 MapReduce 的应用实例 178
5.2 Stream 模式 180
5.2.1 Stream 模式的处理过程及特点 181
5.2.2 Storm 的体系结构与工作原理 182
5.2.3 Storm 的并发机制 185
5.2.4 Stream Grouping 188
5.2.5 Storm 集群架构 191
5.3 总结 193
第6章 分布式存储 195
6.1 数据存储面临的问题以及解决思路 195
6.1.1 RAID 磁盘阵列 196
6.1.2 分布式存储的组成要素 199
6.2 分布式数据库 200
6.2.1 分表分库 200
6.2.2 主从复制 205
6.2.3 数据扩容 213
6.3 分布式缓存 216
6.3.1 缓存分片算法 217
6.3.2 Redis 集群方案 221
6.3.3 缓存节点之间的通信 222
6.3.4 请求分布式缓存的路由 223
6.3.5 缓存节点的扩展和收缩 226
6.3.6 缓存故障的发现和恢复 228
6.4 总结 230
第7章 分布式资源管理和调度 231
7.1 分布式资源调度的由来与过程 231
7.1.1 资源调度可以解决什么问题 232
7.1.2 资源调度过程 234
7.2 资源划分和调度策略 237
7.2.1 Linux Container 资源是如何划分的 237
7.2.2 任务与资源如何匹配 244
7.3 分布式调度架构 249
7.3.1 中央式调度器 250
7.3.2 两级调度器 253
7.3.3 共享状态调度器 259
7.4 Kubernetes——资源调度的实践 262
7.4.1 Kubernetes 架构概述 263
7.4.2 从一个例子开始 264
7.4.3 kubectl 和 API Server 264
7.4.4 controller manager、Scheduler 和 kubelet 268
7.4.5 Service 和 kubelet 271
7.5 总结 277
第8章 高性能与可用性 278
8.1 缓存的应用 278
8.1.1 处处皆缓存 279
8.1.2 动静分离 280
8.1.3 HTTP 缓存 284
8.1.4 CDN 缓存 288
8.1.5 DNS 结构与访问流程 289
8.1.6 负载均衡实现动态缓存 292
8.1.7 进程内缓存 296
8.1.8 分布式进程缓存 304
8.2 可用性 306
8.2.1 请求限流 306
8.2.2 服务降级 314
8.2.3 服务熔断 319
8.3 总结 328
第9章 指标与监控 329
9.1 为什么需要监控系统 329
9.2 监控系统的指标 330
9.3 创建监控系统的步骤 332
9.4 监控系统的分类 333
9.4.1 日志类监控 333
9.4.2 调用链监控 339
9.4.3 度量类监控:LSM Tree 和 LevelDB 350
9.5 监控系统的分层 355
9.6 Zabbix 实现监控系统 356
9.6.1 Zabbix 构建监控系统过程 357
9.6.2 Zabbix 架构的安装和配置 358
9.6.3 Zabbix 监控方式 364
9.7 Prometheus 实现监控系统 369
9.7.1 Prometheus 系统架构 369
9.7.2 时间序列与 Metric 数据模型 370
9.7.3 Exporter 采集数据与服务发现 372
9.7.4 报警规则的定义和报警路由的分发 374
9.8 总结 378
第 10章 架构设计思路和要点 379
10.1 架构设计思维方式 379
10.1.1 架构师的设计模型 379
10.1.2 过程设计模型 383
10.1.3 协作式设计模型 386
10.1.4 扩展立方设计模型 389
10.2 重构与测试 391
10.2.1 代码重构 391
10.2.2 性能测试与压力测试 395
10.3 学习与发展 401
10.3.1 思维方式 401
10.3.2 学习提升 402
10.3.3 职业发展 403
10.4 总结 405
猜您喜欢

读书导航