阿里技术官亲荐“RabbitMQ修炼宝典”,从基础到源码一站到底

什么是MQ?

MQ全称为Message Queue, 消息队列(MQ)是应用程序“对”应用程序的通信方法。
MQ:生产者往消息队列中投放消息,消费者可以读取队列中的消息。

RabbitMQ

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端。

今天要分享的,是看着一般,但读过之后会觉得真香的“RabbitMQ技术攻略”,这套攻略由阿里技术官亲自推荐,从基础到源码,让你在大厂一站到底!

因篇幅限制,我会尽可能多地给大家展示文章内容,完整内容已备好,感兴趣想要获取的朋友,公众号-【不脱发有志青年】即可免费货区

第1章RabitMQ简介

本章首先针对消息中间件做了一个重要性的介绍,包括什么是消息中间件、消息中间件的作用及消息中间件的特点等。之后引入RabitMQ, 对其历史做-一个简单的阐述,比如RabbitMQ具备哪些特点。本章后面的篇幅介绍了RabbiMQ的安装及简单使用,通过演示生产者生产消息,以及消费者消费消息来给读者一个对于RabbitMQ的最初的印象,为后面的探索过程打下基础。

第2章RabbitMQ入门

本章主要讲述的是RabitMQ 的入门知识,首先介绍了生产者(Producer)、消费者(Consumer)、队列(Queue)、 交换器(Exchange)、 路由键(RoutingKey). 绑定( Binding)、连接(Connection)和信道(Channel)等基本术语,还介绍了交换器的类型: fanout. direct, topic和headers.之后通过介绍RabbiMQ的运转流程来加深对基本术语的理解。RabbitMQ可以看作AMQP协议的具体实现,2.2 节还大致介绍了AMQP命令以及与RabbitMQ客户端中方法如何- --对应, 包括对各个整个生产消费消息的AMQP命令的流程介绍。最后展示了AMQP 0-9-1中常用的命令与RabbitMQ客户端中方法的映射关系。

第3章客户端开发向导

本章主要介绍RabbitMQ客户端开发的简单使用,按照一个生命周期的维度对连接、创建、生产、消费和关闭等几个方面进行笼统的介绍,读者学习完本章的内容之后,就能够有效地进行与RabbitMQ相关的开发工作。知是行之始,行是知之成,不如现在动手编写几个程序来实践一下吧。

第4章RabbitMQ进阶

提升数据可靠性有以下一些途径:设置mandatory参数或者备份交换器(immediate参数已被淘汰):设置publisher confrm机制或者事务机制:设置交换器、队列和消息都为持久化;设置消费端对应的autoAck参数为false 并在消费完消息之后再进行消息确认。本章不仅介绍了数据可靠性的一些细节, 还展示了RabbitMQ 的几种已具备或者衍生的高级特性,包括TIL、死信队列、延迟队列、优先级队列、RPC功能等,这些功能在实际使用中可以让相应应用的实现变得事半功倍。

第5章RabbitMQ管理

本章的内容主要围绕RabbitMQ的管理这个主题展开,包括多租户、权限、用户、应用和集群管理、服务端状态等方面,这些都可以通过rabbitmgct1 这一系列的工具来管控。.rabbitmgetl也是RabbitMQ 中最复杂的CLI管理工具,本章也基本涵盖了大部分的rabbi tmgct1工具的使用细节。在使用相关命令时,完全可以把本章的内容作为- -个使用手册来查阅。本章还有-一个重点就是rabbi tmq_ management 插件,它在提供用户图形化的管理理解功能之余,还提供了相应的监控功能。不仅如此,rabbi tmq_ management插件还提供了HTTP API接口以方便用户调用,比如在后面7.4节和7.5节中所讲到的一些功能都需要相关的HTTP API接口的协助。.

第6章RabbitMQ配置

RabbitMQ在配置这方面可谓相当完善,在很多情况下都可以使用默认的配置而不需要改变其中任何一个就可以让RabbitMQ很好地提供服务。不过也有- -些特殊的情况,比如默认的5672端口被其他的应用程序所占用,那么就需要修改环境变量RABBITMQ_ NODE_ PORT或者改配置文件中的tcp_ listeners. 如果需要尽可能地发挥RabiMQ本身的性能,那么对于配置参数的调优就显得至关重要了,比如禁用Nagle算法或者增大TCP缓冲区的大小可以提高吞吐量,更多的细节等待着读者慢慢地发掘。

第7章RabbitMQ运维

RabbitMQ作为一个成熟的消息中间件,不仅要为应用提供强大的功能支持,也要能够维护自身状态的稳定,而这个维护就需要强大的运维层面的支撑。运维本身就是-一个大学间,涵盖多方面的内容,比如容量评估、资源分配、集群管控、系统调优、升级扩容、故障修复、控告警、负载均衡等。本章从最基本的集群搭建开始到故障修复,从集群迁移再到集群监控井不要求能解决所有RabbitMQ 的运维问题,希望能够在多个层面为读者提供解决问题的方法和方法思路。

第8章跨越集群的界限

RabbitMQ可以通过3种方式实现分布式部署:集群、Federation 和Shovel.这3种方式不是互斥的,可以根据需要选择其中的一种或者以几种方式的组合来达到分布式部署的目的。Federation和Shovel可以为RabitMQ的分布式部署提供更高的灵活性,但同时也提高了部署的复杂性。

本章主要阐述Federation与Shovel 的相关的原理、用途及使用方式等。最后在小结部分中将集群与Federation/Shovel的部署方式进行对比区分,以加深对相关知识点的理解。

第9章RabbitMQ高阶

本章首先讲述了RabitMQ 的存储机制,进而对队列的结构展开讨论,队列中的消息有alpha、beta. gamma. delta 这4种状态,内部存储又可以分为Q1、Q2. Delta、 Q3. Q4这5个子队列。消息会在这5个子队列中流转,因为性能的提升需要尽可能地避免消息过量堆积。如果消息是持久化的,建立搭配惰性队列使用,这样在提升性能的同时还可以降低内存的损耗。内存、磁盘和流控都是用来限制消息流入得过快以避免相应的服务进程来不及处理而崩溃。镜像队列的引入可以极大地提升RabbitMQ的可用性及可靠性,提供了数据冗余备份、避免单点故障的功能,强烈建议在实际应用中为每个重要的队列都配置镜像。

第10章网络分区

网络分区是在使用RabiMQ时所不得不面对的一个问题,网络分区的发生可能会引起消息丢失或者服务不可用等。可以简单地通过重启的方式或者配置自动化处理的方式来处理这个问题,但深究其里会发现网络分区不是想象中的那么简单。本章通过网络分区的意义、影响、处理及案例分析等多个维度来一一剖析其中的奥秘。

第11章RabbitMQ扩展

有关RabbitMQ的概念介绍、结构模型、客户端应用等可以看作基础篇,有关RabitMQ的管理、配置、运维等可以看作中级篇,而RabbitMQ的原理及网络分区的介绍可以看作高级篇,所陈述的都是RabbitMQ在运行时使用到的一些本体知识。而本章内容作为一个拾遭扩展,主要介绍RabbiMQ的消息追踪和服务端入站连接的负裁均衡。

领取方式-公众号【不脱发有志青年】

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值