什么是消息中间件、消息队列、消息代理、MQTT

1.中间件

首先先来说一下消息中间件,呢么什么是中间件呢?

        我的理解就是帮助应用程序与其他的应用程序、硬件、操作系统、网络、进行交互或通信的软件。

        目的就是为了将业务与底层逻辑进行分离。

        符合中间件的范畴还是比较广的,比如说Redis、Zookeeper、Memcached等,其实中间件是相对于架构体系内的,他不涉及具体的业务逻辑也不涉及底层的硬件逻辑,用于用户数据交换和管理,相当于找房子/租房子找中介一样,就是起到了中介的作用。

呢么为什么要使用中间件呢,应用或者服务之间直接互相调用不就好了么,还方便省事

        其实不然:其实不只是中间件,所有东西的出现都是为了能够在特定的领域解决问题的,不同的中间件解决不同领域的问题,例如数据库中间件为了解决分库分表、主从分离(分而治之)、web中间件在接收请求于效应请求过程中做一些额外的事情。

        中间件主要就是为了将业务逻辑与非业务逻辑进行解耦。

2.消息队列(MQ-Message Queue)

        其实就是一个数据传输单位,包含创建时间、通道/主体信息。

        队列是一先进先出的线性表结构(FIFO)存储结构如下:

                1.顺序存储:从尾部插入数据,从队头出数据,数组下标为0的一端为对头,出队时所有数据都会向前移动,这就可能会出现假溢出的情况,这就有了后面的循环队列 。

                2.循环存储

        使用队列最常见的场景为生产者/消费者模式:生产者将消息放到队列中,消费者从队列中取消息。

        消息队列(MQ)就是实现了生产者到消费者的单向通信模型,RabbitMQ、RocketMQ、Kafka这些常用的MQ都是指实现了这个模型的消息中间件。

        它可以解决三个方面的问题:

                1.解耦:降低服务之间的耦合,由中间件担任中介。

                2.异步:假如用户下单时,系统需要生成订单、计算库存、计算发货等服务,如果等到所有的服务都执行完再返回用户信息会造成用户的体验极差,这个时候就可以将发货服务给他异步执行,降低系统响应时间,提高用户的体验。

                3.削峰:如果在某个时间点等用户访问量较大时,直接加个服务器不太现实,毕竟添加硬件价格昂贵,这个时候就可以将未处理的请求放到队列中慢慢处理,虽然执行慢了点但是保证了系统不会崩溃。

3.消息代理

        消息代理是一种架构模式,用于消息验证,变换、路由,并且大部分都实现了Broker,其实就是消息中间件服务器,它是中间件的核心。

 4.MQTT

        MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,  。    

优点

  • 低消耗
  • 低带宽
  • 即时通讯
  • 轻量
  • 简单
  • 开放

       应用场景: 

  • 医疗设备
  • 小型化设备
  • 智能家居
  • 通信
  • 物联网

 总结:消息队列是消息中间件的一种,所以mq大多数是实现了消息代理(broker),生产者消费者单向通信模型的中间件,消息队列主要就是用来缓解高并发的,其次是异步。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值