书籍详情

分布式中间件核心原理与RocketMQ最佳实践

分布式中间件核心原理与RocketMQ最佳实践

作者:刘猛

出版社:北京大学出版社

出版时间:2023-03-01

ISBN:9787301335048

定价:¥89.00

购买这本书可以去
内容简介
  本书从分布式系统的基础概念讲起,逐步深入分布式系统中间件进阶实战,并在最后结合一个大型项目案例进行讲解,重点介绍了使用Spring Cloud框架整合各种分布式组件的过程,让读者不但可以系统地学习分布式中间件的相关知识,而且还能对业务逻辑的分析思路、实际应用开发有更为深入的理解。全书共分12章,前3个章节是学习分布式系统架构的准备阶段。第1章开篇部分,讲解演进过程中分布式系统是如何出现的;第2章Spring部分,讲解如何搭建目前流行的Spring Boot和Spring Cloud框架;第3章容器部分,讲解目前最流行的Docker容器技术和Kubernetes容器编排工具;第4~8章深入讲解消息中间件RocketMQ的相关知识,理论与实战并存;第9章将深入RocketMQ底层,探索阅读源码的乐趣,掌握精通RocketMQ的同时学会阅读源码的方法;第10章和第11章讲解分布式系统中必须考虑的问题:分布式事务与分布式锁;第12章以一个电商系统业务为例,让读者体验一个项目从无到有的过程,并学以致用。本书内容由浅入深、结构清晰、实例丰富、通俗易懂、实用性强,适合需要全方位学习分布式中间件相关技术的人员,也适合培训学校作为培训教材,还可作为大、中专院校相关专业的教学参考书。
作者简介
  刘猛,网名HUC王子, 一名因个人爱好进入IT行业的程序员,拥有多年软件开发、设计和架构经验。在中国移动平台架构组担任过高级工程师,负责过SAAS化平台的建设工作,在某互联网创业公司担任过系统架构师,负责整体技术架构演进工作。近年来- -直从事企业平台建设工作,并通过理论指导与实战演练等方式为企业研发团队赋能。
目录
第1章 走进分布式系统 1
1.1 分布式系统简介 2
1.1.1 分布式系统的架构演变过程 2
1.1.2 分布式系统的特性 6
1.1.3 分布式系统带来的问题 6
1.2 分布式中间件简介 7
1.2.1 什么是分布式中间件 7
1.2.2 常用的分布式中间件 8
1.3小结8
第2章 Spring微服务实战 9
2.1 Spring Boot实战 10
2.1.1 什么是Spring Boot 10
2.1.2 创建Spring Boot项目 10
2.1.3 实战:Spring Boot定时访问数据库 13
2.2 Spring Cloud实战 18
2.2.1 什么是Spring Cloud 18
2.2.2 从电商系统看Spring Cloud基本架构 18
2.2.3 实战:动手搭建Spring Cloud电商项目 22
2.3 小结 33
第3章 容器技术简介 34
3.1 Docker简介 35
3.1.1 什么是Docker 35
3.1.2 动手安装Docker环境 36
3.1.3 Docker镜像常用命令 37
3.1.4 Docker容器常用命令 39
3.1.5 Dockerfile介绍 42
3.1.6 实战:Docker打包Spring Boot项目 45
3.2 Kubernetes简介 49
3.2.1 什么是Kubernetes 49
3.2.2 动手搭建Kubernetes集群 51
3.2.3 实战:Kubernetes部署Spring Boot项目 55
3.3 小结 57
第4章 消息中间件概述 58
4.1 消息中间件简介 59
4.1.1 同步的概念 59
4.1.2 异步调用 60
4.1.3 什么是消息中间件 60
4.2 消息中间件的作用 61
4.2.1 异步化提升性能 61
4.2.2 降低耦合度 62
4.2.3 流量削峰 63
4.3 常见的消息中间件 64
4.3.1 ActiveMQ 64
4.3.2 RabbitMQ 65
4.3.3 RocketMQ 66
4.3.4 Kafka 67
4.4 RocketMQ的基本架构 69
4.4.1 RocketMQ是如何承受高并发的 69
4.4.2 RocketMQ如何存储大量消息数据 69
4.4.3 RocketMQ是如何处理宕机的 70
4.4.4 如何知道我该访问哪个Broker 71
4.5 电商系统面临的技术挑战 72
4.5.1 再谈电商系统业务流程 72
4.5.2 退款与取消支付流程 74
4.5.3 大数据团队带来的技术挑战 75
4.6 小结 75
第5章 NameServer 76
5.1 NameServer概述 77
5.2 NameServer与其他组件的交互流程 77
5.2.1 Broker如何向NameServer注册信息 77
5.2.2 系统如何从NameServer获取信息 79
5.2.3 NameServer如何感知到Broker宕机 79
5.2.4 系统如何感知到Broker宕机 80
5.3 小结 81
第6章 RocketMQ的高可用 82
6.1 Broker的主从架构 83
6.1.1 Master Broker与Slave Broker之间的消息同步 83
6.1.2 Master Broker与Slave Broker的读写分离 83
6.1.3 Master Broker与Slave Broker的宕机处理 84
6.1.4 Dledger实现RocketMQ的高可用 85
6.2 Dledger的自动切换原理 85
6.2.1 使用Dledger技术替换CommitLog 85
6.2.2 Dledger怎么选举Leader 86
6.2.3 Dledger的数据同步机制 87
6.3 其他消息中间件的高可用 87
6.3.1 RabbitMQ的高可用 88
6.3.2 Kafka的高可用 89
6.4实战——部署一个RocketMQ集群91
6.4.1 单机快速部署 91
6.4.2 使用三台机器部署NameServer 92
6.4.3 使用三台机器部署Broker 93
6.4.4 补充说明实践中的问题 94
6.5 实战——RocketMQ的可视化监控管理 95
6.5.1 部署可视化监控工具 95
6.5.2 如何使用控制台 95
6.6 实战——RocketMQ的生产环境参数调整 97
6.6.1 OS内核参数调整 97
6.6.2 JVM参数调整 98
6.6.3 RocketMQ参数调整 98
6.7 小结 99
第7章 生产者与消费者 100
7.1 发送模式与消费模式 101
7.1.1 RocketMQ的发送模式 101
7.1.2 RocketMQ的消费模式 104
7.2 生产者发送消息的底层原理 105
7.2.1 什么是MessageQueue 106
7.2.2 生产者发送消息存入哪个MessageQueue 107
7.2.3 如果Broker发生故障怎么办 107
7.3 Broker的持久化 108
7.3.1 CommitLog 108
7.3.2 MessageQueue是如何存储的 109
7.3.3 写入CommitLog的性能探索 110
7.3.4 同步刷盘和异步刷盘 110
7.4 消费者获取消息的底层原理 111
7.4.1 消费者组 111
7.4.2 集群模式和广播模式 112
7.4.3 MessageQueue与消费者的关系 113
7.4.4 Push模式和Pull模式 113
7.4.5 Broker如何读取消息返回给消费者 114
7.5 实战——使用代码来操作RocketMQ 115
7.5.1 原生代码实现 115
7.5.2 Spring Boot实现 116
7.6 实战——对RocketMQ集群进行压测 121
7.6.1 压测的指标 122
7.6.2 动手实践压测 122
7.7 小结 126
第8章 RocketMQ的实际问题与解决方案 127
8.1 消息是怎么丢失的 128
8.1.1 引入订单业务 128
8.1.2 订单系统推送消息过程中会丢失消息吗 129
8.1.3 MQ接收到消息后,自己会把消息弄丢吗 129
8.1.4 积分系统消费到了消息就能保证消息的不丢失了吗 130
8.2 RocketMQ消息丢失解决方案:事务消息 131
8.2.1 half消息机制 131
8.2.2 half消息的流程分析 132
8.3 RocketMQ消息丢失解决方案:同步刷盘 手动提交 134
8.3.1 Broker的消息丢失解决方案 135
8.3.2 Consumer的消息丢失解决方案 135
8.3.3 消息零丢失方案的优缺点分析 136
8.4 探索RocketMQ的重复消费和乱序问题 136
8.4.1 为什么会重复消费 137
8.4.2 消息重试、延时消息、死信队列 138
8.4.3 消息乱序 139
8.5 实战:RocketMQ高级功能代码实现 140
8.5.1 事务消息代码实现 140
8.5.2 顺序消息代码实现 145
8.5.3 消息过滤代码实现 149
8.5.4 延时消息代码实现 150
8.6 小结 152
第9章 走进RocketMQ底层 153
9.1 开启源码阅读之路 154
9.1.1 RocketMQ源码结构介绍 154
9.1.2 启动NameServer与Broker 156
9.1.3 测试生产消息和消费消息 159
9.2 NameServer源码解析 160
9.2.1 NameServer的启动与配置的加载 160
9.2.2 NameServer网络通信的初始化 166
9.2.3 NameServer中Netty是如何启动的 168
9.3 Broker源码解析 173
9.3.1 Broker的启动 173
9.3.2 BrokerController的创建与初始化 177
9.3.3 Broker如何向NameServer注册 188
9.3.4 NameServer如何接收Broker的请求 198
9.4 Producer与Consumer源码解析 205
9.4.1 Producer与NameServer的通信 205
9.4.2 Producer与Broker的通信 207
9.4.3 Broker的同步刷盘与异步刷盘 211
9.4.4 Consumer的创建与启动 213
9.5 小结 215
第10章 分布式事务 216
10.1 ACID与隔离级别 217
10.1.1 事务的ACID 217
10.1.2 事务的隔离级别 218
10.1.3 MySQL是如何实现可重复读的 218
10.2 业内分布式事务方案介绍 219
10.2.1 CAP理论与BASE理论 219
10.2.2 XA规范与2PC/3PC分布式事务 220
10.2.3 TCC分布式方案 222
10.2.4 可靠消息最终一致性方案 223
10.3 实战:分布式事务框架Seata 224
10.3.1 Seata原理介绍 224
10.3.2 Seata Server的部署 224
10.3.3 Seata的代码实现 226
10.4 小结 227
第11章 分布式锁 228
11.1 分布式锁简介 229
11.1.1 单机系统下的锁 229
11.1.2 分布式锁 229
11.2 Zookeeper实现分布式锁 230
11.2.1 Zookeeper实现分布式锁的原理 230
11.2.2 实战:使用Curator实现分布式锁 231
11.3 Redis实现分布式锁 233
11.3.1 Redis实现分布式锁的原理 233
11.3.2 实战:使用Redisson实现分布式锁 234
11.4 小结 236
第12章 电商网站系统案例实战 237
12.1 项目业务分析 238
12.1.1 下单业务 238
12.1.2 支付业务 238
12.2 基础技术架构与表结构设计 240
12.2.1 技术选型 240
12.2.2 Spring Cloud Alibaba框架搭建 240
12.2.3 数据库表结构设计 249
12.3 下单业务开发 252
12.3.1 下单接口定义 252
12.3.2 下单接口实现类定义 255
12.3.3 注册中心Nacos搭建 258
12.3.4 引入Dubbo框架 260
12.3.5 订单接口实现类开发 264
12.3.6 使用RocketMQ实现失败补偿机制 272
12.4 支付业务开发 278
12.4.1 支付接口定义 278
12.4.2 创建支付订单 278
12.4.3 支付回调接口 279
12.4.4 消息的消费 281
12.5 网关服务的完善 282
12.5.1 网关服务的搭建 282
12.5.2 测试网关服务 284
12.6 小结 285
猜您喜欢

读书导航