分布式系统实战派――从简单系统到复杂系统
全新正版 极速发货
¥
68.45
6.3折
¥
108
全新
库存31件
作者张伟洋 著
出版社电子工业出版社
ISBN9787121490439
出版时间2024-11
装帧平装
开本其他
定价108元
货号1203454322
上书时间2024-12-03
商品详情
- 品相描述:全新
- 商品描述
-
目录
第1篇 后端体系架构认知
-
第1章 从单体架构到微服务架构的演变过程2
▲1.1 什么是单体架构2
1.1.1 一张图看懂单体架构2
1.1.2 单体架构的优、缺点3
▲1.2 从单体架构到集群架构――多台机器协同工作5
1.2.1 一张图看懂集群架构5
1.2.2 扩展系统――水平扩展和垂直扩展6
1.2.3 动态调整集群规模――弹性伸缩7
1.2.4 实现故障转移――借助心跳检测8
1.2.5 数据库读写分离――提高系统性能11
1.2.6 分布式数据库与分库分表――将大数据拆为小数据12
▲1.3 从集群架构到微服务架构――精细拆分业务14
1.3.1 一张图看懂微服务架构14
1.3.2 微服务架构的核心特性16
1.3.3 微服务架构与单体架构的区别17
1.3.4 为什么企业选择微服务架构18
1.3.5 微服务架构的基本组件19
1.3.6 设计微服务架构需要考虑的关键点20
▲1.4 微服务架构与分布式架构21
1.4.1 一张图看懂分布式架构与微服务架构22
1.4.2 什么是分布式架构23
1.4.3 微服务架构与分布式架构的区别23
1.4.4 在分布式系统中微服务是如何工作的25
▲1.5 从单体架构到微服务架构的迁移――让系统更稳定27
1.5.1 迁移到微服务架构需要考虑的因素28
1.5.2 迁移到微服务架构的步骤29
-
第2章 几张图了解后端系统31
▲2.1 一张图看懂整个后端系统架构31
2.1.1 CDN(内容分发网络)32
2.1.2 负载均衡器33
2.1.3 API网关35
2.1.4 分布式数据库集群38
2.1.5 分布式消息集群40
2.1.6 分布式缓存集群41
2.1.7 分布式文件集群44
2.1.8 分布式搜索集群46
2.1.9 服务配置与管理48
2.1.10 服务注册与发现49
2.1.11 服务治理与监控51
2.1.12 服务追踪52
▲2.2 一张图看懂分布式架构的组成53
▲2.3 一张图看懂本书的核心内容55
-
第3章 微服务间的交互60
▲3.1 为何微服务间需要交互60
3.1.1 对比单体应用与微服务应用的交互模式60
3.1.2 在电商系统中,用户下单业务的服务交互流程63
3.1.3 【实战】基于Spring Cloud实现服务之间的交互64
▲3.2 微服务间的通信方式――同步通信与异步通信71
3.2.1 什么是同步通信71
3.2.2 同步通信在电商系统中的痛点72
3.2.3 【实战】基于Spring Cloud实现简单的同步通信73
3.2.4 什么是异步通信75
3.2.5 异步通信的实现方式1――消息队列77
3.2.6 异步通信的实现方式2――事件驱动78
3.2.7 【实战】基于Spring Boot实现异步通信79
▲3.3 服务间的通信协议――从HTTP到gRPC82
3.3.1 HTTP、REST和RESTful流行的主要原因83
3.3.2 RESTful设计的痛点及解决办法84
3.3.3 【实战】基于Spring Boot搭建一个RESTful产品信息服务85
3.3.4 为何越来越多企业选择gRPC87
3.3.5 gRPC在电商系统中的应用88
3.3.6 对比gRPC与HTTP88
3.3.7 【实战】从零搭建gRPC服务89
-
第2篇 分布式技术专项
-
第4章 分布式系统的通信机制96
▲4.1 分布式系统组件之间是如何通信的96
4.1.1 RPC的工作原理96
4.1.2 【实战】基于RPC远程获取用户信息97
4.1.3 消息传递的工作原理98
4.1.4 【实战】使用RabbitMQ进行消息传递98
4.1.5 Socket网络通信的工作原理100
4.1.6 Socket网络通信在电商系统中的应用102
4.1.7 【实战】基于Socket实现网络通信102
▲4.2 分布式系统中的时钟、事件与一致性104
4.2.1 物理时钟与逻辑时钟105
4.2.2 逻辑时钟的代表Lamport时钟――事件排序工具106
4.2.3 【实战】使用Lamport时钟对事件进行排序107
4.2.4 【实战】使用Vector时钟跟踪事件因果关系111
▲4.3 CAP定理――三者不可兼得114
4.3.1 CAP定理基础114
4.3.2 网络分区115
4.3.3 CAP定理在电商系统中的应用116
4.3.4 高并发系统中一致性与可用性的权衡119
4.3.5 提高高并发系统可用性的策略121
-
第5章 分布式数据库122
▲5.1 分布式存储的原理122
5.1.1 一张图看清分布式存储与传统存储的区别122
5.1.2 数据分片与数据副本――分散读写负载123
5.1.3 一致性哈希算法――定位数据所在的节点125
5.1.4 【实战】在电商系统中使用一致性哈希算法127
5.1.5 数据恢复与自动故障转移――节点出现故障时的处理方案130
▲5.2 分布式关系数据库130
5.2.1 分布式关系数据库的优缺点131
5.2.2 【实战】对电商系统进行分库分表131
5.2.3 主从复制的工作原理134
5.2.4 【实战】配置主从复制135
5.2.5 在数据增长时无缝扩容数据库138
▲5.3 分布式NoSQL数据库139
5.3.1 主流的NoSQL数据库140
5.3.2 MongoDB基础140
5.3.3 【实战】操作MongoDB中的商品信息142
5.3.4 Redis基础143
5.3.5 【实战】使用Redis缓存和检索用户的浏览历史145
5.3.6 Cassandra基础147
5.3.7 【实战】使用Cassandra存储和分析温度传感器数据149
5.3.8 NoSQL的查询优化150
▲5.4 防范常见的数据库安全问题156
5.4.1 未授权访问156
5.4.2 数据泄露157
5.4.3 SQL注入攻击157
▲5.5 分布式数据库的数据迁移158
5.5.1 数据迁移的流程158
5.5.2 数据迁移的常见问题及解决方法159
5.5.3 【实战】将MySQL中的订单表数据迁移到MongoDB162
-
第6章 典型的分布式存储系统165
▲6.1 HDFS――Hadoop分布式文件系统165
6.1.1 HDFS的架构165
6.1.2 HDFS数据的存储与复制168
6.1.3 HDFS中的数据读取/写入流程169
6.1.4 【实战】使用HDFS170
6.1.5 【实战】使用命令行操作HDFS文件172
6.1.6 HDFS如何确保数据的高可用性175
▲6.2 HBase――分布式列式存储数据库176
6.2.1 HBase与传统关系数据库的区别176
6.2.2 HBase的数据模型及架构177
6.2.3 HBase的存储原理180
6.2.4 HBase的高可用机制与故障恢复机制182
6.2.5 【实战】部署HBase183
6.2.6 【实战】使用命令行操作HBase表数据185
6.2.7 【实战】优化HBase的性能187
▲6.3 Elasticsearch――分布式实时搜索和分析引擎194
6.3.1 Elasticsearch的基本概念194
6.3.2 Elasticsearch存储海量数据的原理――分片和副本195
6.3.3 Elasticsearch的集群架构和文档的读写原理196
6.3.4 【实战】搭建Elasticsearch高性能搜索引擎198
6.3.5 【实战】使用Elasticsearch索引与查询商品数据200
6.3.6 【实战】使用Elasticsearch分析用户购买行为201
6.3.7 【实战】使用Elasticsearch实时排名热门商品203
6.3.8 Elasticsearch是如何管理JVM堆内存的204
6.3.9 通过缓存提高Elasticsearch的查询效率205
6.3.10 【实战】使用Kibana可视化查询Elasticsearch数据207
6.3.11 【实战】使用Head监控Elasticsearch集群209
6.3.12 【实战】使用Java远程操作Elasticsearch员工信息212
-
第7章 分布式事务――确保分布式系统中的数据一致性218
▲7.1 什么是分布式事务218
7.1.1 三张图看懂分布式事务218
7.1.2 分布式事务面临的挑战及应对策略220
▲7.2 分布式事务的提交机制――两阶段提交与三阶段提交221
7.2.1 两阶段提交的工作原理221
7.2.2 两阶段提交带来的问题――死锁和性能瓶颈222
7.2.3 三阶段提交的工作原理223
7.2.4 对比三阶段提交与两阶段提交224
▲7.3 Saga模式――长事务的解决方案225
7.3.1 一张图看懂Saga模式225
7.3.2 在电商系统中实现Saga模式226
7.3.3 【实战】确保Saga模式下的数据一致性228
▲7.4 分布式事务的其他解决方案232
7.4.1 TCC模式――解决复杂业务中跨表和跨库资源锁定问题232
7.4.2 最大努力通知模式――确保数据的最终一致性235
7.4.3 可靠消息最终一致性策略――确保接收消息的可靠性237
▲7.5 分布式事务的企业级应用238
7.5.1 亚马逊、谷歌、阿里巴巴如何处理分布式事务238
7.5.2 阿里巴巴Seata框架的工作原理239
▲7.6 分布式锁――解决分布式系统中的并发控制问题241
7.6.1 ZooKeeper的集群架构和数据模型241
7.6.2 ZooKeeper的观察者模式243
7.6.3 分布式锁的实现方式及工作原理244
7.6.4 【实战】利用ZooKeeper实现分布式锁245
-
第8章 消息中间件――分布式系统中的异步通信利器248
▲8.1 为什么需要消息中间件248
8.1.1 一张图看懂消息中间件248
8.1.2 【实战】解决分布式系统中的通信、解耦、流量调节问题249
▲8.2 Kafka――分布式流处理中间件254
8.2.1 利用“放鸡蛋”的例子快速了解Kafka254
8.2.2 Kafka的集群架构255
8.2.3 Kafka处理海量消息的原理256
8.2.4 【实战】构建一个分布式、高性能的Kafka集群258
▲8.3 RabbitMQ――高可用的消息队列系统260
8.3.1 RabbitMQ的工作原理260
8.3.2 RabbitMQ在电商系统中的应用262
8.3.3 【实战】使用RabbitMQ实现电商系统的用户通知功能263
▲8.4 RocketMQ――低延迟、高可靠性的分布式消息中间件265
8.4.1 RocketMQ消息通信模式1――发布/订阅模式265
8.4.2 【实战】使用RocketMQ实现用户行为分析266
8.4.3 RocketMQ消息通信模式2――点对点模式268
8.4.4 【实战】使用RocketMQ实现物流跟踪269
▲8.5 根据业务需求选择合适的消息中间件271
▲8.6 在微服务中利用消息中间件实现事件驱动273
▲8.7 在分布式存储和计算中使用消息中间件274
8.7.1 【实战】进行分布式系统的数据同步和复制274
8.7.2 【实战】用消息中间件和日志收集工具进行日志处理275
8.7.3 【实战】构建一个搜索引擎用户行为分析系统278
-
第3篇 高可用与数据安全策略
-
第9章 冗余备份――数据的备份和容灾策略284
▲9.1 两张图看懂冗余备份284
▲9.2 选择合适的冗余备份策略286
9.2.1 【实战】热备、冷备和温备在电商系统中的应用286
9.2.2 【实战】通过数据冗余和应用冗余应对流量激增291
9.2.3 【实战】利用RAID技术实现磁盘冗余,提高数据可靠性293
9.2.4 【实战】基于AWS S3服务实现跨地域的冗余备份295
▲9.3 在生产环境中进行冗余备份296
9.3.1 【实战】在大规模数据中心中实施冗余备份296
9.3.2 【实战】在云存储环境中实施备份技术298
9.3.3 【实战】在系统故障时利用备份数据进行快速恢复300
-
第10章 高可用与异地多活――提高系统的稳定性和故障恢复能力302
▲10.1 一张图看懂高可用302
▲10.2 设计一个高可用架构303
10.2.1 识别和加固单点故障点303
10.2.2 【实战】通过添加冗余组件来提高系统的可用性305
10.2.3 【实战】在高并发场景下,使用“限流”防止系统崩溃306
10.2.4 【实战】在高并发场景下,使用“熔断”防止服务雪崩316
10.2.5 【实战】在高并发场景下,使用“降级”应对性能瓶颈319
▲10.3 利用容器化技术部署和管理项目323
10.3.1 什么是Docker323
10.3.2 【实战】利用Docker快速部署电商系统的商品服务324
10.3.3 什么是Kubernetes325
10.3.4 在项目开发中,何时用Docker,何时用Kubernetes327
10.3.5 【实战】利用Kubernetes管理电商系统的各个服务328
▲10.4 【实战】大型在线游戏的高可用策略330
10.4.1 负载均衡与集群化330
10.4.2 数据冗余与备份330
10.4.3 容灾与故障恢复331
10.4.4 无缝更新与维护331
▲10.5 异地多活――多地区数据中心的部署策略334
10.5.1 一张图看懂异地多活334
10.5.2 异地多活与高可用、容灾的关系337
-
第4篇 分布式系统项目设计
-
第11章 【项目实战】支持5000万用户同时在线的短视频系统设计340
▲11.1 业务分析340
11.1.1 需求分析340
11.1.2 业务流程分析341
▲11.2 架构设计341
▲11.3 存储设计343
11.3.1 使用MySQL存储视频元数据343
11.3.2 使用MongoDB存储视频标签数据344
11.3.3 使用Redis存储视频缓存数据345
11.3.4 使用Elasticsearch存储视频索引数据346
11.3.5 实现MySQL与Elasticsearch的数据同步350
11.3.6 使用HBase和HDFS存储视频文件352
▲11.4 利用CDN提升视频访问速度354
▲11.5 利用编码技术优化视频带宽355
▲11.6 视频个性化推荐设计356
11.6.1 数据收集与预处理357
11.6.2 特征提取与用户画像构建358
-
第12章 【项目实战】日均订单量8000万的外卖系统设计363
▲12.1 业务需求363
▲12.2 微服务架构设计364
▲12.3 数据库选择与设计365
▲12.4 缓存设计366
12.4.1 使用Redis和Memcached缓存数据366
12.4.2 构建外卖系统的缓存架构368
▲12.5 外卖员派单系统设计369
12.5.1 实时更新外卖员的地理位置369
12.5.2 设计外卖员派单算法372
内容摘要
许多开发者掌握了Java、Spring Boot和MySQL等基础知识后,能够搭建一个简单的单体系统,但面对复杂系统的构建和管理时,往往感到迷茫和力不从心:对于高性能、高可用、高并发的分布式系统一头雾水,束手无策。本书首先介绍从单体架构到微服务架构的演化过程,帮助读者开阔技术视野。然后带领读者摆脱单体架构的束缚,深入领略集群、主从架构、分库分表、读写分离、微服务、API网关、NoSQL数据库、HDFS、分布式事务等分布式技术的无限魅力。此外,本书深入剖析了如何运用Kafka、RabbitMQ、RocketMQ等消息中间件和Elasticsearch搜索引擎来解耦应用,如何利用Docker、Kubernetes快速部署与隔离应用,以及如何借助冗余备份、高可用和异地多活策略保障系统稳定运行,让系统焕发新生。最后通过“支持5000万用户同时在线的短视频系统设计”和“日均订单量8000万的外卖系统设计”两个实际项目将理论与实践结合,向读者展示如何将这些技术应用于真实的生产环境中,提升实际项目中的技术能力。本书适合已经掌握Java、Spring Boot、MySQL等知识,能够开发一个简单的后端应用,却在单体系统的束缚中力不从心、对后续的技术学习感到迷茫、对复杂系统不知所措、迫切期待实现技术飞跃的读者。本书为他们提供了从简单到复杂的技术成长路径和解决方案。
— 没有更多了 —
以下为对购买帮助不大的评价