物联网消息队列

这把我C 2021-04-14 11:06:55 5017

物联网消息队列

img.png

什么是消息队列

消息队列( Message queue )是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。 消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的资料,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。

-- 来自维基百科

什么是消息队列?维基百科给了我们一个很笼统的解释,接下来我们将深入讲解一下,什么是消息队列。

什么是中间件 ( Middleware )

img_1.png

在理解消息队列之前。我们首先要了解一下什么是中间件。如上图所示,中间件就是在两个不同的技术架构之前进行共享信息和资源的一种桥接软件,用于实现业务解耦等功能。

举个栗子:

许多人要找你的老板签文件。然而你老板不可能每时每刻都在办公室等着。所以,招了个助理去帮忙。如果有人需要签文件,则把文件和说明交给助理,然后等老板来到再统一签。

在这种情况下,助理就是一个"中间件"。

古老的生产者和消费者模式

在了解了什么是中间件以后,我们需要了解一件古老的: "生产者消费者模式" 来对消息队列这个中间件进行铺垫。

什么是生产者和消费者

img_3.png

其实很简单。例如:今天妈妈在家做饼干吃。孩子在旁边等着妈妈做好饼干放到盘子里,由于盘子太小,只能容纳一块饼干。 妈妈就只能等孩子把饼干从盘子里拿走以后,再开始把下一块饼干放在盘子里。这样不断进行。

在这个故事中妈妈就是生产者,不断的生产新的饼干。孩子就是消费者,不断的吃掉饼干。

到此,生产者和消费者的模式就建立起来了。

能不能容纳的更多

虽然这样可以一直重复进行,但是妈妈每次都要等孩子吃完才能放下一块饼干,就导致妈妈需要浪费很长时间等待孩子吃完。于是妈妈想到了一个好的办法。 找到一个大盒子,妈妈不断的把做好的饼干放到大盒子里。孩子则不断的从大盒子里拿出饼干。

其中的大盒子就是本文所讲的消息队列

经过这个故事,相信大家已经对消息队列有了大概的理解。

消息队列解决的问题

解耦

img_4.png

使用消息队列可以使该功能进行有效的 解耦

如何构成耦合

续上文故事版本 A :

当妈妈没有想到找一个大盒子之前,孩子需要拿一个属于自己的盘子。然后,妈妈需要把饼干放到盘子里。当妈妈有多个孩子的时候,每个孩子都需要一个属于自己的盘子。并且妈妈还需要将饼干放到每个人的盘子里。

妈妈需要将饼干放到每个孩子的盘子里,并且还需要观察他们有没有吃完,这样就构成了耦合问题。

如何解耦

续上文故事版本 B :

妈妈找到了一个大盒子,每次做好饼干就放在大盒子里,就不用再过问其他的事。妈妈只需要一直做好饼干并且放到盒子里。孩子们只需要去盒子里拿饼干即可。

妈妈使用大盒子实现了解耦,让他不需要涉及太多的事情,只需要把饼干做好放在盒子里就行。

广播

img_5.png

妈妈太累了

引续文版本A

妈妈每次做好饼干后都需要分发给每个人,这样导致妈妈每次都要跑来跑去,太累了。

广播站

引续文版本B

妈妈使用大盒子以后就可以每次放进去饼干后,所有的孩子都知道了。每个孩子都会去盒子里面那饼干。妈妈就不用跑来跑去了。

削峰

img_6.png

续上文故事版本 C :

妈妈接到通知,一个小时后就要停电了。所以妈妈要在这一个小时内把今天一天吃的饼干都要做出来。在没有大盒子之前,孩子拼命的吃饼干,但还是跟不上妈妈做饼干的速度。这样就导致很多饼干放不到孩子盘子里。
在有了大盒子以后,妈妈只需要在这一小时内将今天的饼干都做完,然后等孩子饿的时候来吃就行了。

依靠大盒子使得在妈妈可以在短时间内将一天的饼干做出来。而孩子也不用拼命的吃了。

常用的消息队列

在物联网领域中有几个常用的几个消息队列:

img_11.png

常用的消息队列对比图

下面我们提供一张图来简单对比下这几个常用的消息队列。

img_7.png

消息队列的优缺点

消息队列的优点上文已经讲过,即解耦、削峰、广播等。

下面我们简单概括一下消息队列的缺点:

系统的可用性降低了

在A、B、C 三个服务中,如果 A 是生产者 而 B 和 C 是消费者。他们中间依靠消息队列进行信息交互。但是,如果消息队列服务宕机了,就会导致 A B C 三个服务都不可正常使用。

系统的复杂度提升了

由于是引入消息队列,使得整个消息传递过程变成了异步。从而导致整个系统对于消息的处理更复杂了。

总结

本文使用幽默的小故事来讲解了什么是消息队列和消息队列的特点。并简单介绍了下常见的消息队列 ( Rabbit MQ, Kafka 等)且进行了对比,分析了相应的优缺点。我们将在以后对这几个消息队列进行单独讲解。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 96 7 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区