基本信息
作者: 杨开元
丛书名: 云栖社区系列
出版社:机械工业出版社
ISBN:9787111600251
上架时间:2018-6-11
出版日期:2018 年6月
开本:16开
版次:1-1
所属分类:计算机
目录
推荐序
前言
第1章 快速入门1
1.1 消息队列功能介绍1
1.1.1 应用解耦1
1.1.2 流量消峰2
1.1.3 消息分发3
1.2 RocketMQ简介4
1.3 快速上手RocketMQ4
1.3.1 RocketMQ的下载、安装和配置 5
1.3.2 启动消息队列服务6
1.3.3 用命令行发送和接收消息6
1.3.4 关闭消息队列6
1.4 本章小结7
第2章 生产环境下的配置和使用8
2.1 RocketMQ各部分角色介绍8
2.2 多机集群配置和部署9
2.2.1 启动多个NameServer和Broker10
2.2.2 配置参数介绍11
2.3 发送/接收消息示例13
2.4 常用管理命令15
2.5 通过图形界面管理集群21
2.6 本章小结22
第3章 用适合的方式发送和接收消息23
3.1 不同类型的消费者23
3.1.1 DefaultMQPushConsumer的使用23
3.1.2 DefaultMQPushConsumer的处理流程25
3.1.3 DefaultMQPushConsumer的流量控制28
3.1.4 DefaultMQPullConsumer30
3.1.5 Consumer的启动、关闭流程32
3.2 不同类型的生产者33
3.2.1 DefaultMQProducer 34
3.2.2 发送延迟消息36
3.2.3 自定义消息发送规则36
3.2.4 对事务的支持37
3.3 如何存储队列位置信息38
3.4 自定义日志输出42
3.5 本章小结44
第4章 分布式消息队列的协调者45
4.1 NameServer的功能45
4.1.1 集群状态的存储结构46
4.1.2 状态维护逻辑47
4.2 各个角色间的交互流程48
4.2.1 交互流程源码分析48
4.2.2 为何不用ZooKeeper50
4.3 底层通信机制50
4.3.1 Remoting模块51
4.3.2 协议设计和编解码54
4.3.3 Netty库56
4.4 本章小结56
第5章 消息队列的核心机制57
5.1 消息存储和发送57
5.2 消息存储结构58
5.3 高可用性机制60
5.4 同步刷盘和异步刷盘61
5.5 同步复制和异步复制62
5.6 本章小结63
第6章 可靠性优先的使用场景64
6.1 顺序消息64
6.1.1 全局顺序消息64
6.1.2 部分顺序消息65
6.2 消息重复问题67
6.3 动态增减机器67
6.3.1 动态增减NameServer67
6.3.2 动态增减Broker69
6.4 各种故障对消息的影响70
6.5 消息优先级72
6.6 本章小结73
第7章 吞吐量优先的使用场景74
7.1 在Broker端进行消息过滤74
7.1.1 消息的Tag和Key74
7.1.2 通过Tag进行过滤75
7.1.3 用SQL表达式的方式进行过滤75
7.1.4 Filter Server方式过滤77
7.2 提高Consumer处理能力78
7.3 Consumer的负载均衡80
7.3.1 DefaultMQPushConsumer的负载均衡80
7.3.2 DefaultMQPullConsumer的负载均衡81
7.4 提高Producer的发送速度83
7.5 系统性能调优的一般流程85
7.6 本章小结87
第8章 和其他系统交互88
8.1 在SpringBoot中使用RocketMQ88
8.1.1 直接使用88
8.1.2 通过Spring Messaging方式使用90
8.2 直接使用云上RocketMQ91
8.3 RocketMQ与Spark、Flink对接93
8.4 自定义开发运维工具93
8.4.1 开源版本运维工具功能介绍94
8.4.2 基于Tools模块开发自定义运维工具95
8.5 本章小结96
第9章 首个Apache中间件顶级项目97
9.1 RocketMQ的前世今生97
9.2 Apache顶级项目(TLP)之路98
9.3 源码结构99
9.4 不断迭代的代码100
9.5 本章小结102
第10章 NameServer源码解析103
10.1 模块入口代码的功能103
10.1.1 入口函数103
10.1.2 解析命令行参数104
10.1.3 初始化NameServer的Controller105
10.2 NameServer的总控逻辑106
10.3 核心业务逻辑处理107
10.4 集群状态存储109
10.5 本章小结111
第11章 最常用的消费类112
11.1 整体流程112
11.1.1 上层接口类112
11.1.2 DefaultMQPushConsumer的实现者114
11.1.3 获取消息逻辑116
11.2 消息的并发处理118
11.2.1 并发处理过程118
11.2.2 ProcessQueue对象121
11.3 生产者消费者的底层类122
11.3.1 MQClientInstance类的创建规则122
11.3.2 MQClientInstance类的功能124
11.4 本章小结127
第12章 主从同步机制128
12.1 同步属性信息128
12.2 同步消息体130
12.3 sync_master和async_master132
12.4 本章小结134
第13章 基于Netty的通信实现135
13.1 Netty介绍135
13.2 Netty架构总览136
13.2.1 重新实现ByteBuffer136
13.2.2 统一的异步 I/O接口137
13.2.3 基于拦截链模式的事件模型138
13.2.4 高级组件139
13.3 Netty用法示例140
13.3.1 Discard服务器140
13.3.2 查看收到的数据144
13.4 RocketMQ基于Netty的通信功能实现145
13.4.1 顶层抽象类145
13.4.2 自定义协议148
13.4.3 基于Netty的Server和Client151
13.5 本章小结152
↑折 叠
著 者:(美)Gavin M. Roy(加文·罗伊)
作 译 者:汪佳南,郑天民
出版时间:2018-06 千 字 数:302
版 次:01-01 页 数:252
开 本:16开
装 帧:
I S B N :9787121341809
换 版:
所属分类:科技 >> 计算机 >> 网络与互联网
纸质书定价:¥79.0
本书对 RabbitMQ 这一业界主流的消息中间件做了全面介绍,给出了如何使用 RabbitMQ 构建消息通信系统的方法和实践。本书从 AMQP 协议出发,深入介绍各种消息属性,给出 RabbitMQ 在发送和消费消息上的特性和最佳实践,并阐述基于 RabbitMQ 所特有的交换器组件实现灵活的消息路由机制。同时,本书也讨论了如何利用 RabbitMQ 强大的集群机制实现分布式环境下的消息通信,并展示了如何在 RabbitMQ中,使用其他传输协议以及数据库集成等功能来实现各种定制化需求。本书的读者对象为从事互联网行业中各种分布式和服务化系统开发的研究人员、高等院校计算机相关专业的研究生和本科生,以及广大的 IT 爱好者。
目 录
第一篇 RabbitMQ和应用程序体系结构
第1章 RabbitMQ基础 ...........................................................................3
1.1 RabbitMQ特性以及好处 ........................................................................................ 4
1.1.1 RabbitMQ与Erlang ....................................................................... 5
1.1.2 RabbitMQ与AMQP ............................................................................... 6
1.2 谁在使用RabbitMQ,在怎么用 ....................................................................... 7
1.3 松耦合架构的优势 ................................................................................................. 8
1.3.1 解耦你的应用 ........................................................ 10
1.3.2 解耦数据库写入 ........................................................................11
1.3.3 无缝添加新功能 ............................................................................... 12
1.3.4 复制数据与事件 ....................................................................... 12
1.3.5 多主(Multi-Master)互联化数据与事件 ......................................... 13
1.3.6 高级消息队列模型 ............................................................................ 14
1.4 小结 ................................................................................................. 16
第2章 使用AMQ协议与Rabbit进行交互 .................................................18
2.1 AMQP作为一种RPC传输机制 ...................................................................... 19
2.1.1 启动会话 .............................................................................................. 20
2.1.2 调整正确的信道 ............................................................................ 20
2.2 AMQP RPC帧结构 ...................................................................... 21
2.2.1 AMQP帧组件 ............................................................................. 21
2.2.2 帧类型 .................................................................................. 22
2.2.3 将消息编组成帧 .................................................................... 23
2.2.4 方法帧结构 ..................................................................................... 24
2.2.5 内容头帧 ........................................................................................... 26
2.2.6 消息体帧 ...................................................................................... 26
2.3 使用协议 ............................................................................................... 27
2.3.1 声明交换器 ............................................................................................. 27
2.3.2 声明队列 .................................................................................... 28
2.3.3 绑定队列到交换器 ............................................................................................... 29
2.3.4 发布消息到RabbitMQ .......................................................................................... 29
2.3.5 从RabbitMQ中消费消息 ...................................................................................... 30
2.4 用Python编写消息发布者 ........................................................................... 32
2.5 从RabbitMQ中获取消息 .............................................................................. 36
2.6 小结 ........................................................................................................ 37
第3章 消息属性详解 ...........................................................................38
3.1 合理使用属性 ................................................................................................ 39
3.2 使用content-type属性创建显式的消息契约 .......................................................... 41
3.3 通过gzip和content-encoding属性压缩消息大小 .................................................. 43
3.4 使用message-id和correlation-id引用消息 ..................................................... 45
3.4.1 Message-id........................................................................................................ 45
3.4.2 Correlation-id............................................................................................... 45
3.5 创建时间:timestamp属性 .................................................................................. 46
3.6 消息自动过期 ..................................................................................... 47
3.7 使用delivery-mode平衡速度和安全性 .................................................................... 48
3.8 使用app-id和user-id验证消息来源 ........................................................................ 49
3.8.1 app-id.................................................................................................................. 50
3.8.2 user-id................................................................................................................ 51
3.9 使用type属性获取明细 ............................................................................. 51
3.10 使用reply-to属性实现动态工作流 ........................................................ 52
3.11 使用消息头自定义属性 .......................................................................... 53
3.12 优先级属性 ........................................................................................ 54
3.13 不能使用的属性:cluster-id/reserved ............................................................ 54
3.14 小结 ....................................................................... 55
第4章 消息发布的性能权衡 ..........................................................58
4.1 平衡投递速度与可靠投递 .......................................................................... 59
4.1.1 如果没有保证机制我们能期待什么 ................................................................... 60
4.1.2 使用mandatory设置,RabbitMQ将不接受不可路由消息 ............................... 62
4.1.3 发布者确认作为事务的轻量级替代方法 ........................................................... 64
4.1.4 使用备用交换器处理无法路由的消息 ............................................................... 66
4.1.5 基于事务的批量处理 ........................................................................................... 68
4.1.6 使用HA队列避免节点故障 .................................................................................. 70
4.1.7 HA队列与事务 ........................................................................... 72
4.1.8 通过设置delivery-mode为2将消息持久化到磁盘 ...................................... 72
4.2 RabbitMQ回推 ......................................................................................... 75
4.2.1 使用rabbitpy来检测连接状态 .............................................................................. 77
4.2.2 使用管理API管理连接状态 ................................................................................. 77
4.3 小结 ............................................................................................................ 78
第5章 消费消息,避免拉取 ..............................................................79
5.1 对比Basic.Get 和Basic.Consume ........................................................................ 80
5.1.1 Basic.Get .......................................................................................................... 80
5.1.2 Basic.Consume ................................................................................................ 82
5.2 优化消费者性能 ............................................................................................ 84
5.2.1 使用no-ack模式实现更快的吞吐量 ................................................................. 85
5.2.2 通过服务质量设置控制消费者预取 ................................................................... 86
5.2.3 消费者使用事务 ............................................................................. 89
5.3 拒绝消息 ...................................................................................................... 90
5.3.1 Basic.Reject.................................................................................................... 90
5.3.2 Basic.Nack........................................................................................................ 91
5.3.3 死信交换器 ............................................................................ 92
5.4 控制队列 ................................................................................................. 94
5.4.1 临时队列 ........................................................................................... 94
5.4.2 永久队列 ............................................................................................. 97
5.4.3 任意队列设置 ........................................................................... 99
5.5 小结 ................................................................................................... 99
第6章 消息路由模式 .....................................................................101
6.1 通过direct交换器路由消息 ............................................................................. 102
6.1.1 创建应用架构 ................................................................ 103
6.1.2 创建RPC工作者 ........................................................................... 107
6.1.3 编写简单的RPC发布者 ......................................................................................110
6.2 通过fanout交换器广播消息 ......................................................................115
6.2.1 修改面部检测消费者 ..........................................................................................116
6.2.2 创建一个简单的图片哈希消费者 ......................................................................117
6.3 使用topic交换器有选择地路由消息 ...............................................................119
6.4 使用headers交换器有选择地路由消息 ......................................................... 122
6.5 交换器性能基准 .................................................................. 124
6.6 交换器间路由 ......................................................................................... 125
6.7 使用一致性哈希交换器路由消息 ........................................................... 127
6.8 小结 ......................................................................................................... 131
第二篇 管理数据中心或云中的RabbitMQ
第7章 RabbitMQ集群 ................................................................135
7.1 集群简介 ..................................................................................................... 136
7.1.1 集群和管理界面 ........................................................................... 137
7.1.2 集群节点类型 ....................................................................................... 138
7.1.3 集群和队列行为 ................................................................................. 139
7.2 集群设置 ......................................................................................... 142
7.2.1 虚拟机设置 ............................................................................ 143
7.2.2 向集群中添加节点 ................................................................ 144
7.3 小结 ......................................................................................................... 147
第8章 跨集群的消息分发 ...........................................................148
8.1 联合交换器和联合队列 ........................................................................ 149
8.1.1 联合交换器 ............................................................................. 149
8.1.2 联合队列 ................................................................................................ 152
8.2 创建RabbitMQ虚拟机 ................................................................................ 153
8.2.1 创建首个实例 ................................................................................... 153
8.2.2 复制EC2实例 ........................................................................................ 159
8.3 连接上游节点 ...................................................................................................... 162
8.3.1 定义联合中的上游节点 ..................................................................................... 162
8.3.2 定义策略 ................................................................................. 164
8.3.3 利用上游集合 .................................................................................... 167
8.3.4 双向联合交换器 .............................................................................. 170
8.3.5 使用联合来升级集群 ..................................................................... 171
8.4 小结 ...................................................................................................... 173
第三篇 集成与定制
第9章 使用替代协议 ............................................................177
9.1 MQTT和RabbitMQ .................................................................................. 178
9.1.1 MQTT协议 .................................................................................... 178
9.1.2 通过MQTT发送消息 .......................................................................................... 182
9.1.3 MQTT订阅者 .............................................................................. 184
9.1.4 MQTT插件配置 .......................................................................... 187
9.2 STOMP和RabbitMQ ............................................................................. 189
9.2.1 STOMP协议 ............................................................................... 190
9.2.2 发布消息 ................................................................................. 191
9.2.3 消费消息 .......................................................................................... 195
9.2.4 配置STOMP插件 ............................................................................... 198
9.2.5 在Web浏览器中使用STOMP ............................................................................. 199
9.3 通过HTTP进行无状态发布 ................................................................ 200
9.3.1 statelessd的由来 ................................................................... 200
9.3.2 使用statelessd ............................................................................. 201
9.3.3 运营架构 ................................................................................ 202
9.3.4 通过statelessd来发布消息 ............................................................. 203
9.4 小结 ............................................................................................................... 203
第10章 数据库集成 ..........................................................................205
10.1 PostgreSQL扩展:pg_amqp ................................................................. 206
10.1.1 安装pg_amqp扩展................................................................................... 207
10.1.2 配置pg_amqp扩展................................................................................... 209
10.1.3 通过pg_amqp发送消息..................................................................................... 210
10.2 监听PostgreSQL通知.......................................................................................... 212
10.2.1 安装PostgreSQL LISTEN交换器 .............................................................. 213
10.2.2 基于策略的配置 .......................................................................... 215
10.2.3 创建交换器 .................................................................................. 217
10.2.4 创建并绑定测试队列 ....................................................................................... 217
10.2.5 通过NOTIFY发送消息 ..................................................................................... 218
10.3 将消息存入InfluxDB中 ................................................................................ 219
10.3.1 InfluxDB的安装与设置 .................................................................................... 220
10.3.2 安装InfluxDB存储交换器 ................................................................................ 222
10.3.3 创建测试交换器 ......................................................................... 223
10.3.4 测试交换器 .......................................................................................... 224
10.4 小结 ......................................................................................................... 227
附录 准备就绪 .......................................................................228
A.1 安装VirtualBox .............................................................................................................. 228
A.2 安装Vagrant .................................................................................................... 230
A.3 设置Vagrant虚拟机 ............................................................................ 233
A.4 确认安装 .................................................................................................... 234
A.5 小结 .......................................................................................................... 236
第三段评价 这套书对于想要深入理解消息队列原理的工程师来说,是一份非常宝贵的财富。我从事后端开发多年,一直深知消息队列在现代分布式系统中的重要性。之前我接触过一些消息队列,但总觉得知其然而不知其所以然,在遇到一些性能瓶颈或复杂问题时,难以找到根源。这本书的“原理解析”部分,可以说是直击要害。它不仅仅是简单地罗列概念,而是通过对RocketMQ内部架构的深度剖析,例如其分布式事务、消息存储的零拷贝、消费者组的均衡策略等,让我对消息队列的运作机制有了更深刻的认知。理解了这些原理,我才能在实际工作中,更有效地进行故障排查和性能优化。同时,书中提供的“实战”部分,也与原理紧密结合,让我能够将理论知识转化为实际操作。从消息的可靠性投递到高并发场景下的消息处理,都给出了实用的解决方案和代码示例。更不用说,它还包含了RabbitMQ的入门教程。虽然我目前主要在使用RocketMQ,但了解RabbitMQ的架构和特性,能够帮助我更好地理解不同消息队列之间的差异,以及在选择时做出更明智的决策。这本书的编写风格非常专业,但又不失可读性,对于有一定基础的读者来说,是快速提升的利器。
评分第二段评价 说实话,我最开始是被“RocketMQ实战与原理解析”这个标题吸引的。我之前尝试过一些RocketMQ的学习资料,但总感觉缺了点什么,要么太偏重实战,让我对背后的原理一知半解,要么就是理论讲得过于晦涩,脱离实际。这套书恰好弥补了我的痛点。它在实战部分,从基础的生产者、消费者搭建,到复杂的集群部署、高可用配置,都提供了详尽的步骤和代码示例,让我能够亲手搭建起一个稳定的消息队列系统。更重要的是,它并没有止步于此,而是深入地剖析了RocketMQ的核心原理。读完这部分,我才真正理解了消息是如何被发送、存储、消费的,以及那些看似简单的操作背后蕴含的复杂逻辑。例如,它对消息队列中的“顺序消费”和“并发消费”的实现原理进行了深入探讨,让我明白了不同场景下如何选择合适的消费模式,并且能够根据原理进行性能调优。而RabbitMQ的入门教程,虽然是作为补充,但其质量同样令人惊喜。它将RabbitMQ的各种概念,如AMQP协议、交换器、队列、绑定键等,讲解得清晰明了,并且通过实际案例展示了如何利用RabbitMQ构建灵活的消息路由。对于我这种需要同时掌握多种消息中间件的技术人员来说,这种“一站式”的学习体验,极大地提升了我的学习效率和掌握程度。
评分第一段评价 这本书简直是为我量身定做的!我是一名刚刚踏入分布式消息队列领域的初学者,对于RocketMQ和RabbitMQ这两个名字听过不少,但总是抓不住重点。这套书的组合真是太棒了,它不仅提供了RocketMQ的实战指导,还深入剖析了其底层原理,让我从“知其然”走向“知其所以然”。以前看其他资料,感觉总是碎片化的,学完一个demo就没了下文,也理解不了为什么这样设计。但这本书不一样,它从基础概念讲起,循序渐进,再到具体的应用场景和性能优化,每一步都踩得很扎实。尤其是它对RocketMQ内部机制的解析,比如消息的存储、传输、消费模式等等,用通俗易懂的语言和清晰的图示,让我豁然开朗。而且,它还包含了一本RabbitMQ的入门教程,这对我来说简直是锦上添花!很多时候,项目里会根据不同的需求选择不同的消息队列,了解两个主流MQ的特性和适用场景,对我来说至关重要。这本书的RabbitMQ部分,同样非常精彩,从安装部署到核心概念,再到各种交换器和队列类型的详细解释,让我快速上手,并且能根据实际情况做出合理的选型。整体来说,这本书内容丰富,结构清晰,讲解透彻,绝对是初学者和进阶者都不容错过的佳作!
评分第五段评价 作为一名在分布式系统领域摸爬滚打多年的老兵,我深知掌握一门优秀的分布式消息队列技术对于提升系统性能和可靠性的重要性。这套书的出现,无疑为我提供了一个深入学习RocketMQ和RabbitMQ的绝佳机会。RocketMQ的实战部分,提供了非常实用的指导,让我能够快速地将RocketMQ集成到我的项目中,并且能够应对各种复杂的业务场景。从消息的高可用部署到性能的调优,都提供了详细的解决方案。更让我印象深刻的是,它深入剖析了RocketMQ的底层原理,例如其高性能的存储模型、高效的发送与消费机制,以及强大的事务支持。这些原理性的讲解,帮助我理解了RocketMQ之所以能够在大流量场景下保持稳定运行的根本原因,这对于我进行系统设计和故障排查至关重要。而RabbitMQ的入门教程,虽然是基础内容,但其讲解的深度和广度都做得相当不错。它清晰地解释了AMQP协议的工作原理,以及各种Exchange类型和Queue配置的特点,让我能够根据不同的需求选择最合适的配置。这套书的优点在于,它能够同时满足“快速上手”和“深入理解”的需求,对于不同层次的读者都具有很高的价值。它让我对消息队列的理解更加系统和全面,也为我未来的技术选型和系统设计提供了宝贵的参考。
评分第四段评价 我是一名对技术充满好奇心的开发者,尤其对分布式系统和底层技术情有独钟。这套书的组合,正好满足了我对RocketMQ和RabbitMQ的全面探索需求。刚拿到书,就被其厚实的篇幅和丰富的目录所吸引。RocketMQ的实战部分,涵盖了从搭建开发环境到部署生产环境的整个流程,并且详细介绍了各种常见和高级的应用场景,比如延时消息、顺序消息、过滤消息等等。让我惊喜的是,它并没有停留在“怎么用”,而是花了大量篇幅去解析“为什么这样用”。RocketMQ的分布式事务、消息刷盘机制、内存管理等细节,通过图文并茂的方式一一呈现,让我能清晰地看到消息在RocketMQ内部的生命周期。这对于我这种喜欢刨根问底的开发者来说,简直是福音。而RabbitMQ的部分,虽然是入门教程,但同样非常扎实。它从AMQP协议讲起,一步步引导读者理解Exchange、Queue、Binding等核心概念,并且通过大量的示例代码,展示了RabbitMQ在不同消息传递模式下的应用。这本书让我对消息队列的理解,从“能用”上升到了“能用好,能用精”。它不仅仅是一本技术手册,更像是一位经验丰富的导师,带领我一步步走进消息队列的世界。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有