让阿里大佬带你走进中间件产品:RocketMQ实战与原理解析世界中
想必大家都在熟悉RocketMQ以后,会发现它是一款非常优秀的中间件产品,可以确保不丢消息,而且效率很高。同时因为它是用Java开发的,所以修改起来比较容易。
在阿里内部,RocketMQ很好地服务了集团大大小小上千个应用,在每年的双十一当天,更有不可思议的万亿级消息通过RocketMQ流转(在2017年的双11当天,整个阿里巴巴集团通过RocketMQ流转的线上消息达到了万亿级,峰值TPS达到5600万),在阿里大中台策略上发挥着举足轻重的作用。
所以如果有合适的参考文档,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的通信的源码实现。掌握这些源代码以后,读者可以快速定制属于自己的具有特殊功能的消息中间件。
在这里重点介绍一下基于Netty的通信实现
本章分析RocketMQ底层通信的实现机制,作为一个分布式消息队列,通信的质量至关重要。基于TCP协议和Socket实现-一个高效、稳定的通信程序并不容易,有很多大大小小的“坑”等待着经验不足的开发者。RocketMQ 选择不重复发明轮子,基于Netty库来实现底层的通信功能。
Netty 介绍
Netty是一个网络应用框架,或者说是一一个 Java网络开发库。Netty 提供异步事件驱动的方式,使用它可以快速地开发出高性能的网络应用程序,比如客户端/服务器自定义协议程序,大大简化了网络程序的开发过程。
Netty是-一个精心设计的框架,它从许多协议实现中吸收了丰富的经验,比如FTP、SMTP、HTTP等许多基于二进制和文本的传统协议。借助Netty,可以比较容易地开发出达到Java网络专家+并发编程专家水平的通信程序。了解Netty前需要对Java NIO有个基本的了解,熟悉Channel、ByteBuffer、Selector等基本概念。对于Java网络编程经验不多的读者,可以试着先用Java NIO的基本类写一个简单的Client/Server程序,然后再用Netty对比着实现一遍,这样比较容易理解Netty里各种组件存在的原因。
Netty 架构总览
如图所示,Netty 主要分为三部分:一是底层的零拷贝技术和统一通信模型;二是基于JVM实现的传输层;三是常用协议支持。读者可以参考架构图做一个基本的了解,如果读者想深人了解的话可以阅读一些专门介绍Netty的书籍。
Netty整体架构
因为本篇篇幅过长,小编这里的话就不为大家多做介绍了,所以呢,剩下得东西就靠自己来学习喽,大家多学习学习大佬的知识面,看看从大佬的角度是怎么理解产品的。
大家如果需要这篇【RocketMQ实战与原理解析】技术文档的话,就可以转发此文关注小编,私信小编“学习”来得到获取方式吧。
消息中间件是分布式系统中依赖最广泛的中间件产品,作为Apache中间件顶级项目,RocketMQ已经经历了众多大型互联网公司的线上检验,不论是从可靠性还是吞吐量上都得到广泛的认可。相信这本书的出版,对正在使用和计划研究RockemMQ技术的开发者来说是个大大的福音。