RabbitMQ入门知识&&基本概念

MQ

MQ(Message Queue),顾名思义,MQ即为消息队列,其本质也就是一个队列,遵循先进先出的规则,是一种跨进程的通信机制,用于上下游传递消息,可以实现物理解耦+逻辑解耦。

使用MQ的作用?(为什么要使用MQ)
1.流量削峰
	例如一个订单系统中一次最多只可以处理一万个订单,但是在峰值的时候可以达到两万次甚至更多,这时候使用消息队列,进入队列排队,虽然会出现响应不及时的问题,但是不会出现用户不能下单的问题,实现流量削峰。
2.应用解耦
	一个大型系统中由许多小模块组成,当其中一个模块调用其他模块进行操作时,如果其他模块出现问题时,那么会导致该模块出现问题,使用了消息队列之后,会以消息队列作为一个中转点,此时当另外一个模块出现异常时,不会导致其他模块不能运行,也可以更方便的定位问题。
3.异步任务
	当一个接口A调用接口B时,必须得等到B执行完成之后返回结果,如果B执行的时间较长,那么A就会一直等待,从而导致整个运行速度就会变得很慢。传统解决该问题有两个方法:方法一就是:用一个查询接口一直进行循环查询B的执行结果;第二个方法就是A写一个回调函数,等B执行完之后执行回调函数;但是使用消息队列之后,B执行完成之后可以发送一个消息到消息队列,然后消息队列再发送一个消息给A。
MQ的分类
1.ActiveMQ
	优点:单机吞吐量万级,时效性ms级,可用性高,基于主从架构实现高可用性,消息可靠性较低的概率丢失数据
	缺点:官方社区现在对ActiveMQ 5.x维护越来越少,高吞吐场景较少使用
2.Kafka
	优点:针对*** 数据量 ***比较大的消息中间件,吞吐量可达百万级TPS
	缺点:Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列数目越多,Load越大,发送消息的响应时间变长,消费失败不支持重试
3.RocketMQ
	优点:阿里开发的消息队列,可以实现消息0丢失,并且消息堆积量可达数十亿,并且不会影响消息发送速率。
	缺点:支持的语言较少,只支持java和c++,并且c++的目前还不完善
4.RabbitMQ
	2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
	优点:由于erlang语言的高并发特性,性能较好;吞吐量万级,MQ功能比较完备,健壮,稳定,易用,跨平台,支持多种语言,社区活跃度高;更新频率相当高
	缺点:商业版需要收费,学习成本比较高
MQ的相关核心概念
1.生产者
	产生数据发送消息的程序是生产者
2.交换机
	交换机是RabbitMQ非常重要的一个部件,一方面他接受来自生产者的消息,另一方面他将消息推送到队列中。交换机必须明确知道如何处理他接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或是把消息丢弃,这个得由交换机类型决定、
3.队列
	队列是RabbitMQ内部使用的一种数据结构,尽管消息流经RabbitMQ和应用程序,但他们只能存在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。
4.消费者
	消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。注意生产者,消费者和消息中间件很多时候并不在同一个机器上,同一个应用程序既可以是生产者又是消费者。
5.Broker
	一个Broker代表一个RabbitMQ 实例。
6.Connection
	Producer和Broker之间进行连接的时候,需要首先创建Connection对象,从而连接上Broker
7. Channel
	如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection 的开销将是巨大的,效率也比较低。Channel 是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker 识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销
RabbitMQ原理模型图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值