RabbitMQ概述

前言

Rabbit,兔子的意思

互联网行业很多公司,喜欢用动物命名产品,或者作为公司logo,吉祥物。

Rabbit也是一个公司名,MQ(message queue)消息队列的意思,RabbitMQ是Rabbit企业下的一个消息队列产品

RabbitMQ是采用Erlang语言实现AMQP的消息中间件,是当前主流的消息中间件之一

AMQP(Advanced Message Queuing Protocol 高级消息队列协议),是一个通用的应用层协议,提供统一消息服务的协议,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端( 不管客户端是用 Java、Python、Go 还是其他语言开发的,只要遵循 AMQP 协议,都能和消息中间件交互)或中间件( 不同厂商的 AMQP 兼容中间件(如 RabbitMQ、Apache Qpid)之间,也能基于协议实现消息互通。比如用 RabbitMQ 的客户端,可向 Apache Qpid 的服务端发送消息,无需担心产品差异。)或开发语言( 开发语言只是工具,协议是统一标准。例如 Java 写的生产者,能给 Python 写的消费者发送消息,中间通过 AMQP 协议的消息中间件做桥梁,语言差异不影响通信。)等条件的限制

什么是MQ

MQ(Message queue)本质是个队列,FIFO先入先出,只不过队列中存放的内容是消息而已,消息可以非常简单,比如只有文本字符串,JSON,也可以很复杂,比如内嵌对象

MQ多用于分布式系统之间进行通信

核心是它能解决分布式环境下的核心痛点,比如服务耦合、异步处理、流量削峰等问题

1.解耦:打破服务之间的强依赖

若服务a直接调用服务b,俩服务之间会形成强依赖------服务b的地址、接口、版本变更,服务a都需要同步修改

2.异步:提升系统响应速度,避免资源阻塞

  • 服务 A 发送消息到 MQ 后,立即返回结果(如给用户 "下单成功" 提示);
  • 下游服务(短信、库存、物流)异步从 MQ 取消息处理,不影响服务 A 的响应速度;
  • 避免因下游服务耗时过长,导致服务 A 的线程池耗尽或响应延迟。

3.削峰:应对流量波动,保护核心服务

分布式系统常常面临突发流量,比如电商秒杀。如果请求直接到达核心服务(如订单服务)可能导致服务过载,崩溃。MQ则可以应对这个,讲消息暂存队列

4.可靠通信:

MQ会通过一系列机制保证可靠通信(后面会细讲)

5.广播:

MQ有广播交换机,可以实现一对多通信

相关推荐
donk131412 小时前
React Native for OpenHarmony 实战:三方库 react-native-step-indicator 的鸿蒙化适配指南
分布式·react native·react.js·wpf·harmonyos
梅菲塔亚15 小时前
Ceph分布式存储
分布式·ceph
acrel717 小时前
Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用
分布式·光伏并网
程序 代码狂人17 小时前
金融数仓体系与核心业务知识详解
大数据·分布式·spark
java_nnnn19 小时前
Redis 初识:从单体架构到分布式架构的演进
redis·分布式·架构
Sayai20 小时前
Kafka 2.8→3.9.1 跨大版本升级实战:ZooKeeper 同步升级、数据目录迁移与回滚预案全流程
大数据·运维·分布式·zookeeper·kafka
敲上瘾20 小时前
分布式系统——Redis哨兵:自动故障转移与选举原理
linux·数据库·redis·分布式·缓存·微服务
微三云 - 廖会灵 (私域系统开发)1 天前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
她说可以呀2 天前
Docker 镜像的两种创建方式
java·分布式·docker