第二章 初识RabbitMQ

devtools/2024/10/15 3:40:09/

目录

一、介绍

二、RabbitMQ的主要特性及应用场景

2.1. 主要特性

2.2. 应用场景

2.3. RabbitMQ的整体架构及核心概念

2.4. MQ的比较与选择


RabbitMQ官网地址:
https://www.rabbitmq.com/docs

一、介绍

 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。能够处理大量的并发消息,适用于高吞吐量的应用场景。它支持多种消息协议和安全机制,提供丰富的监控和管理工具,方便运维人员实时监控系统状态和性能指标。RabbitMQ广泛应用于分布式系统、集成系统、子系统之间的对接,以及高并发场景下的流量削峰填谷和数据解耦等任务。‌

RabbitMQ支持下列多种编程语言:

Python

Java

Ruby

PHP

C#

JavaScript

Go

Elixir

Objective-C

Swift

二、RabbitMQ的主要特性及应用场景

2.1. 主要特性

可靠性‌:确保消息不会丢失,即使是在网络分区或节点故障的情况下。

灵活的路由‌:支持复杂的消息路由,允许消息根据内容路由到不同的队列。

多种协议支持‌:基于AMQP协议,与其他消息中间件兼容。

高可用性和扩展性‌:支持集群和分布式部署,能够处理高并发和大规模消息处理。

丰富的管理工具‌:提供Web管理界面,方便监控和管理消息队列的状态。

2.2. 应用场景

包括但不限于:

高并发处理‌:在电商平台的秒杀活动中,通过队列缓冲请求,减少服务器压力。

分布式系统集成‌:在微服务架构中,实现服务之间的解耦和异步通信。

任务调度‌:将任务分发到不同的处理节点,提高系统的整体效率。

RabbitMQ的安装和使用相对简单,支持多种部署方式,包括单机和集群模式,适合从小型应用到大型企业的各种规模的应用场景。

2.3. RabbitMQ的整体架构及核心概念

virtual-host(虚拟主机):起到数据隔离的作用

publisher:消息发送者

consumer:消息的消费者

queue(队列):用来存储消息直到消费者处理。

exchange(交换机):负责路由消息,用来接收生产者发送的消息,并且按照一定的规则将消息路由到消息队列。 

绑定(Binding):一个规则,用于告诉交换器消息应该被如何路由到队列。

信道(Channel):建立在连接之上的虚拟连接,RabbitMQ操作都是在信道中进行。

连接(Connection):RabbitMQ客户端和代理服务器之间的TCP连接。

2.4. MQ的比较与选择

在选择消息队列(MQ)时,需要考虑的核心因素包括系统的吞吐量、可靠性、可用性、扩展性以及与现有技术的兼容性。‌ 根据这些因素,以下几种消息队列系统在性能和适用场景上有各自的优势和劣势,ActiveMQ由于它的性能可靠性等各方面都比较差,在实际项目中我们通常是不会使用:

1‌. RabbitMQ‌:

‌特点‌:RabbitMQ是一个轻量级的消息队列系统,部署和使用都非常简单。

‌适用场景‌:适合对性能要求不是特别高,但需要易用性和灵活性的场景。

‌缺点‌:在大量消息堆积时,性能会急剧下降;使用小众语言Erlang开发,扩展和二次开发维护成本较高。

2‌. RocketMQ‌:

‌特点‌:由阿里开发,侧重于消息的顺序投递,具有高吞吐量和可靠性。

‌适用场景‌:适合处理高吞吐量的在线业务场景,如交易系统中的订单处理。

‌缺点‌:与周边生态系统的集成和兼容程度略逊于其他系统。

3‌. Kafka‌:

‌特点‌:Kafka是一个成熟的消息队列产品,支持高可靠性和稳定性。

‌适用场景‌:适合处理大量数据,适用于需要高吞吐量和容错性的场景。

‌缺点‌:单机超过64个队列/分区时,负载会明显增加,响应时间延长;适用于批量处理,同步收发消息的响应时延较高。

‌4. AMQP协议‌:

‌特点‌:AMQP是一种应用层的协议,用于消息队列的开放标准协议。

‌适用场景‌:适用于需要高度标准化的消息传递系统,支持多种消息队列产品。

‌优点‌:提供了生产者、消费者、交换机、队列等标准概念,便于系统间的通信和集成。

选择合适的消息队列系统时,应根据具体需求评估各个系统的特性,选择最适合项目需求的系统。例如,如果项目需要高吞吐量和容错性,Kafka可能是一个好的选择;而如果需要与现有生态系统高度集成,对消息的可靠性要求比较高,RocketMQ或RabbitMQ可能更合适‌。


http://www.ppmy.cn/devtools/125963.html

相关文章

React中useEffect钩子

副作用:渲染以外的操作:像后端获取数据、操作DOM参数:副作用方法、依赖(改变时重新执行)调用时间:渲染JSX之后/依赖改变 useEffect 是 React 中的一个 Hook,用于在函数组件中执行副作用操作。副…

K8s中pod的管理和优化

一、k8s中的资源 1.1 资源管理介绍 在kubernetes中,所有的内容都抽象 资源,用户需要通过操作资源来管理kubernetes。kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务所谓的部署服务,其实就是在kubernetes集群中…

机房建设及运维方案重构:迎接信息技术新时代的挑战

随着信息技术的飞速发展,机房作为企业数据处理与存储的核心场所,其重要性愈发显著。机房不仅是企业业务稳定运行的基础,更是支撑企业长期发展的战略资源。面对日益复杂多变的运维环境和不断增长的业务需求,传统的机房建设和运维模…

【Python库安装】Python环境安装气象地理常用库salem

【Python库安装】Python环境安装salem库 salem库概述Anaconda创建环境下载基础安装包 1 安装geopandas库1.1 安装geopandas依赖库1.2 安装geopandas库1.3 安装matplotlib库 2 安装salem库2.1 安装salem依赖库2.2 安装salem库 3 安装cartopy库参考 salem库概述 salem是一个用于…

Notepad++ 初学者指南

引言 对于初学者来说,选择合适的编程工具很重要,特别是考虑到易用性和计算机资源的需求。 虽然集成开发环境(IDE)如 Eclipse、IntelliJ IDEA 和 Visual Studio 提供了许多强大的功能,但对于刚开始学习编程的人来说&a…

C语言笔记 10

求前n项之和 程序设计 f(n)1… 起点终点数字已知&#xff0c;用for循环最合适 #include <stdio.h>int main() {int n;int i;double sum 0.0;scanf("%d", &n);for ( i1; i<n; i ) {sum 1.0/i;}pritnf("f(%d)%f\n", n, sum);return 0; } i…

TCP IP网络编程

文章目录 TCP IP网络编程一、基础知识&#xff08;TCP&#xff09;1&#xff09;Linux1. socket()2.bind()2.1前提2.2字节序与网络字节序2.3 字节序转换2.4 字符串信息转化成网络字节序的整数型2.5 INADDR_ANY 3.listen()4.accept()5.connect()6.案例小结6.1服务器端6.2 客户端…

【一文理解】下采样与上采样区别

目录 下采样 上采样 注意 下采样 原理 对图像进行1/n下采样&#xff0c;原图像分辨率为H*W&#xff0c;下采样分辨率变为(H/n)*(W/n&#xff09; 作用 压缩Feature Map降维减少提取特征降低模型计算量避免模型过拟合 本质 过滤无关信息&#xff0c;保留关键信息 方法…