RabbitMQ-简介与入门

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ(本章节)

本章的介绍的RabbitMQ和我们上个章节介绍的Kafka在一定程度上相似的功能,如果不是面试八股文,一般不需要去单独记录,当我们熟悉它主流的功能以后,我们就会在架构设计的时候把他们放置在不同的位置。

一、RabbitMQ 是什么

RabbitMQ 是一个开源的消息代理(Message Broker)软件,基于 AMQP(Advanced Message Queuing Protocol)协议实现,用于在分布式系统中实现高效、可靠的消息传递。它由 Erlang 语言编写,以高并发、高可靠性和可扩展性著称,广泛应用于微服务架构、异步任务处理、应用解耦等场景。具备下面的核心功能。

  1. 异步通信:允许应用程序通过消息队列解耦,生产者发送消息后无需等待消费者处理。

  2. 消息路由:通过灵活的交换器(Exchange)机制,支持多种消息分发模式。

  3. 可靠性保障:提供消息持久化、确认机制(ACK)和重试策略,确保消息不丢失。

  4. 负载均衡:通过轮询或权重分配方式将消息分发给多个消费者,提升系统吞吐量。

二、为什么需要消息队列

在分布式系统中,直接调用(如 HTTP 请求)可能导致以下问题:

  • 耦合性高:服务之间依赖性强,一个服务故障可能引发雪崩效应。

  • 性能瓶颈:同步调用会阻塞线程,影响系统响应速度。

  • 扩展困难:高并发场景下难以动态调整消费者数量。

消息队列通过异步通信缓冲机制解决了这些问题:生产者发送消息到队列后即可返回,消费者按自身能力处理消息。即使消费者暂时不可用,消息仍能存储在队列中,避免数据丢失。

三、RabbitMQ 核心概念
1. 生产者(Producer):发送消息的应用程序。生产者将消息发布到交换器(Exchange),而非直接发送到队列。
2. 消费者(Consumer):接收并处理消息的应用程序。消费者从队列中获取消息并进行业务处理。
3. 队列(Queue):存储消息的缓冲区。队列是消息的最终目的地,消费者从队列中订阅消息。
4. 交换器(Exchange):接收生产者发送的消息,并根据绑定规则(Binding)将消息路由到队列。常见的交换器类型:
  • Direct Exchange:根据路由键(Routing Key)精确匹配队列。

  • Topic Exchange:支持通配符模式匹配路由键。

  • Fanout Exchange:广播消息到所有绑定的队列。

  • Headers Exchange:根据消息头属性路由。

5. 绑定(Binding):定义交换器和队列之间的关系,指定路由规则(如路由键)。
6. 虚拟主机(Virtual Host):逻辑上的隔离单元,类似于命名空间。不同虚拟主机的队列、交换器相互独立。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值