《RocketMQ实战与原理解析》是一本由RocketMQ实战经验丰富的阿里数据专家和RocketMQ原理的核心贡献者撰写的权威之作。这本书从开发和运维的双重视角出发,详细讲解了RocketMQ的使用和源码分析。无论是初学者还是有一定经验的开发人员,都能从中获得实用的操作指南,深入了解RocketMQ的原理和内部机制。这本书得到了RocketMQ官方的鼎力推荐,可以说是学习RocketMQ不可或缺的参考书籍。无论你是想要提升自己的消息队列技术,还是想要在项目中应用RocketMQ,这本书都是你的不二选择。
RocketMQ实战与原理解析 电子书
读者评价
对RocketMQ的脉络做了一个大概的说明吧,深入细节的东西还是需要自己看代码
很适合入门并且对rocketmq有个粗浅的了解,关于代码的部分就显得有些没有诚意了,缺乏原理性的解读。
内容简单;排班空隙巨大,有凑页数的嫌疑;代码大段,无诚意;自己的深入了解及原理讲解很少;比较浅;
比较适合初学者,可以对整体功能有一个较完整的理解,同时会对内部实现有一些思考。如果能够从设计的角度更多的讲解下内部的架构,以及消息转发的完整流程,多个分支情况等就更好了。
之前一直在使用rabbitmq,对Rocket MQ研究的比较少;最近由于另外一个项目已经使用了RMQ,为了不至于引入更多的中间件类型,在基础架构中也直接选型RMQ。然后大致找了一些资料,和书籍了解了一下RMQ的原理;
内容介绍
本书由云栖社区官方出品。
作者是阿里资深数据专家,对RocketMQ有深入的研究,并有大量的实践经验。在写这本书之前,作者不仅系统、深入地阅读了RocketMQ的源代码,而且还向RocketMQ的官方开发团队深入了解了它的诸多设计细节。作者结合自己多年使用RocketMQ的经验,从开发和运维两个维度,给出了大部分场景下的优秀实践,能帮助读者在学会使用和用好RocketMQ的同时,尽量少“踩坑”。同时,本书也结合源码分析了分布式消息队列的原理,使读者可以在复杂业务场景下定制有特殊功能的消息队列。
全书共13章,在逻辑上分为两大部分:
*部分(第1~8章):RocketMQ实战
第1~2章详细讲解了RocketMQ如何快速入门,以及在生产环境下的配置和使用;
第3~4章具体讲解了不同类型生产者和消费者的特点,以及分布式消息队列的协调者NameServer;
第5章从消息的存储、发送、复制和高可用等多个维度讲解了RocketMQ的内部机制;
第6章讨论了消息的可靠性,如何让消息队列在满足业务逻辑需求的同时稳定、可靠地长期运行;
第7章讨论了在大流量场景下,吞吐量优先时RocketMQ的使用方法;
第8章介绍RocketMQ与SpringBoot、Spark、Flink以及自定义的运维工具等其它系统的对接方法;
第二部分(第9~13章):RocketMQ原理
首先对RocketMQ的源码结构进行了整体介绍,然后深入地分析了NameServer、各种常用消费类、主从同步机制,以及基于Netty的通信的源码实现。掌握这些源代码以后,读者可以快速定制属于自己的具有特殊功能的消息中间件。
目录
- 前言
- 第1章 快速入门1
- 第2章 生产环境下的配置和使用8
- 第3章 用适合的方式发送和接收消息23
- 第4章 分布式消息队列的协调者45
- 第5章 消息队列的核心机制57
- 第6章 可靠性优先的使用场景64
- 第7章 吞吐量优先的使用场景74
- 第8章 和其他系统交互88
- 第9章 首个Apache中间件顶级项目97
- 第10章 NameServer源码解析103
- 第11章 最常用的消费类112
- 第12章 主从同步机制128
- 第13章 基于Netty的通信实现135
MQ消息、DB操作一致性方案: 1)发送消息到MQ服务器,此时消息状态为SEND_OK。此消息为consumer不可见。 2)执行DB操作;DB执行成功Commit DB操作,DB执行失败Rollback DB操作。 3)如果DB执行成功,回复MQ服务器,将状态为COMMIT_MESSAGE;如果DB执行失败,回复MQ服务器,将状态改为ROLLBACK_MESSAGE。注意此过程有可能失败。 4)MQ内部提供一个名为“事务状态服务”的服务,此服务会检查事务消息的状态,如果发现消息未COMMIT,则通过Producer启动时注册的TransactionCheckListener来回调业务系统,业务系统在checkLocalTransactionState方法中检查DB事务状态,如果成功,则回复COMMIT_MESSAGE,否则回复ROLLBACK_MESSAGE。
一、 MQ背景&选型 消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势: 削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统) 蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测) 目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Rocketmq相比于Rabbitmq、kafka具有主要优势特性有: • 支持事务型消息(消息发送和DB操作保持两方的最终一致性,rabbitmq和kafka不支持) • 支持结合rocketmq的多个系统之间数据最终一致性(多方事务,二方事务是前提) • 支持18个级别的延迟消息(rabbitmq和kafka不支持) • 支持指定次数和时间间隔的失败消息重发(kafka不支持,rabbitmq需要手动确认) • 支持consumer端tag过滤,减少不必要的网络传输(rabbitmq和kafka不支持) • 支持重复消费(rabbitmq不支持,kafka支持)