什么是RabbitMQ

Rabbit MQ

简介

什么是MQ?

MQ指的是Message Queue消息队列,遵循FIFO先入先出原则,内部存放的内容为消息,消息队列是一种跨进程的通信机制,用于上下游传递消息。

为什么用MQ?

  1. 流量消峰

    比如现在有一个订单系统,当每秒一万次访问时,系统就会崩溃。那么我们就可以在用户和订单系统之间建立一个消息队列,让一个个的请求在队列中排队,从而实现流量消峰。

  2. 应用解耦

    比如电商系统,应用中有订单系统、库存系统、物流系统、支付系统、用户创建订单后如果任何一个子系统出现故障都会造成下单异常。但是如果使用消息队列,那么如果物流系统发生故障,需要几分钟修复,那么在修复的过程中,物流系统要处理的就被存放在消息队列内,用户下单操作正常完成。当物流系统恢复后,再继续处理订单即可。不会造成下单异常。

  3. 异步处理

    如果A调用B之后,B需要很长时间执行。那么就可以使用消息队列,A发出调用之后就可以继续处理别的任务,当B处理完成之后再发出消息给消息队列,消息队列再将消息转发给A。这样A服务B服务不需要做额外的处理,就能及时的得到异步处理成功地消息。

MQ的分类

  1. ActiveMQ

    优点:单机吞吐量万级,时效性ms级,可用性高,基于主从架构实现高可用性,消息可靠性高,丢失数据概率低

    缺点:官方维护少,高吞吐量场景较少使用

  2. Kafka

    大数据的杀手锏,为大数据而生的消息中间件,以其百万级TPS的吞吐量名声大噪

    优点:性能卓越、吞吐量高

    缺点:Kafka单机超过64个队列或分区,队列越多,load越高,发送消息响应时间变长。消费失败不支持重试,社区更新缓慢

  3. RocketMQ

    阿里巴巴的开源产品,使用java语言实现

    优点:单机吞吐量十万级,可用性高,分布式架构,消息可做到0丢失

    缺点:支持的客户端语言不多,目前是java和c++,c++还不成熟

  4. RabbitMQ

    当前最主流的消息中间件之一

    优点:性能好,吞吐量万级,支持多种语言

    缺点:商业版需要收费,学习成本高

总结:

如果有大量的数据收集业务或者日志收集传输,首选Kafka

如果是金融互联网领域,对可靠性要求很高,RoketMQ在稳定性上更值得信赖,比如阿里双11已经经过了多次的考验

如果数据量没那么大,中小型公司优先选择功能完备的RabbitMQ

RabbitMQ的概念

RabbitMQ是一个消息中间件,它接收并转发消息,不进行处理操作,仅仅是存储和转发消息。

四大核心概念
  • 生产者
    • 产生数据发送的程序
  • 交换机
    • 交换机是RabbitMQ非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。
  • 队列
    • 队列是RabbitMQ内部的一种数据结构,本质上是一个大的消息缓冲区
  • 消费者
    • 等待接收消息的程序

RabbitMQ的工作原理

在这里插入图片描述

  • Producer:生产者
  • Connection:生产者和消费者与Broker之间的TCP连接
  • Channel:每次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP连接开销非常大,效率也低。因此在内部建立Channel逻辑连接,每次需要新的连接就建立新的channel,每个channel之间是完全隔离的,极大地减少了操作系统建立TCP connection的开销
  • Broker:接收和分发消息的应用,RabbitMQ Server 就是Message Broker
  • Virtual Host:出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似网络中namespace的概念。当多个不同的用户使用同一个RabbitMQ Server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建Exchange或Queue等
  • Exchange:交换机,根据分发规则,将消息发送到对应的queue中去
  • Queue:队列,消息在这里等待consumer取走
  • Binding:绑定连接,exchange与queue之间的虚拟连接,binding中可以包含routing key,Binding信息被保存到exchange中的查询表中,用于message的分发依据
  • Consumer:消费者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值