物联网消息队列
物联网消息队列
什么是消息队列
消息队列( Message queue )是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。 消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的资料,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。
-- 来自维基百科
什么是消息队列?维基百科给了我们一个很笼统的解释,接下来我们将深入讲解一下,什么是消息队列。
什么是中间件 ( Middleware )
在理解消息队列之前。我们首先要了解一下什么是中间件。如上图所示,中间件就是在两个不同的技术架构之前进行共享信息和资源的一种桥接软件,用于实现业务解耦等功能。
举个栗子:
许多人要找你的老板签文件。然而你老板不可能每时每刻都在办公室等着。所以,招了个助理去帮忙。如果有人需要签文件,则把文件和说明交给助理,然后等老板来到再统一签。
在这种情况下,助理就是一个"中间件"。
古老的生产者和消费者模式
在了解了什么是中间件以后,我们需要了解一件古老的: "生产者消费者模式" 来对消息队列这个中间件进行铺垫。
什么是生产者和消费者
其实很简单。例如:今天妈妈在家做饼干吃。孩子在旁边等着妈妈做好饼干放到盘子里,由于盘子太小,只能容纳一块饼干。 妈妈就只能等孩子把饼干从盘子里拿走以后,再开始把下一块饼干放在盘子里。这样不断进行。
在这个故事中妈妈就是生产者,不断的生产新的饼干。孩子就是消费者,不断的吃掉饼干。
到此,生产者和消费者的模式就建立起来了。
能不能容纳的更多
虽然这样可以一直重复进行,但是妈妈每次都要等孩子吃完才能放下一块饼干,就导致妈妈需要浪费很长时间等待孩子吃完。于是妈妈想到了一个好的办法。 找到一个大盒子,妈妈不断的把做好的饼干放到大盒子里。孩子则不断的从大盒子里拿出饼干。
其中的大盒子就是本文所讲的消息队列
经过这个故事,相信大家已经对消息队列有了大概的理解。
消息队列解决的问题
解耦
使用消息队列可以使该功能进行有效的 解耦 。
如何构成耦合
续上文故事版本 A :
当妈妈没有想到找一个大盒子之前,孩子需要拿一个属于自己的盘子。然后,妈妈需要把饼干放到盘子里。当妈妈有多个孩子的时候,每个孩子都需要一个属于自己的盘子。并且妈妈还需要将饼干放到每个人的盘子里。
妈妈需要将饼干放到每个孩子的盘子里,并且还需要观察他们有没有吃完,这样就构成了耦合问题。
如何解耦
续上文故事版本 B :
妈妈找到了一个大盒子,每次做好饼干就放在大盒子里,就不用再过问其他的事。妈妈只需要一直做好饼干并且放到盒子里。孩子们只需要去盒子里拿饼干即可。
妈妈使用大盒子实现了解耦,让他不需要涉及太多的事情,只需要把饼干做好放在盒子里就行。
广播
妈妈太累了
引续文版本A
妈妈每次做好饼干后都需要分发给每个人,这样导致妈妈每次都要跑来跑去,太累了。
广播站
引续文版本B
妈妈使用大盒子以后就可以每次放进去饼干后,所有的孩子都知道了。每个孩子都会去盒子里面那饼干。妈妈就不用跑来跑去了。
削峰
续上文故事版本 C :
妈妈接到通知,一个小时后就要停电了。所以妈妈要在这一个小时内把今天一天吃的饼干都要做出来。在没有大盒子之前,孩子拼命的吃饼干,但还是跟不上妈妈做饼干的速度。这样就导致很多饼干放不到孩子盘子里。
在有了大盒子以后,妈妈只需要在这一小时内将今天的饼干都做完,然后等孩子饿的时候来吃就行了。
依靠大盒子使得在妈妈可以在短时间内将一天的饼干做出来。而孩子也不用拼命的吃了。
常用的消息队列
在物联网领域中有几个常用的几个消息队列:
-
由开源社区提供的 RabbitMQ
-
由Apache 基金会开源、且号称大数据杀手的 Apache Kafka
-
由阿里巴巴开源且捐献给Apache 基金会的 RocketMQ
-
由Apache 基金会开源的 Apache ActiveMQ
常用的消息队列对比图
下面我们提供一张图来简单对比下这几个常用的消息队列。
消息队列的优缺点
消息队列的优点上文已经讲过,即解耦、削峰、广播等。
下面我们简单概括一下消息队列的缺点:
系统的可用性降低了
在A、B、C 三个服务中,如果 A 是生产者 而 B 和 C 是消费者。他们中间依靠消息队列进行信息交互。但是,如果消息队列服务宕机了,就会导致 A B C 三个服务都不可正常使用。
系统的复杂度提升了
由于是引入消息队列,使得整个消息传递过程变成了异步。从而导致整个系统对于消息的处理更复杂了。
总结
本文使用幽默的小故事来讲解了什么是消息队列和消息队列的特点。并简单介绍了下常见的消息队列 ( Rabbit MQ, Kafka 等)且进行了对比,分析了相应的优缺点。我们将在以后对这几个消息队列进行单独讲解。
- 分享
- 举报
-
浏览量:5865次2021-04-08 16:25:20
-
浏览量:5016次2021-04-03 14:12:54
-
浏览量:1867次2022-01-01 09:00:13
-
浏览量:4513次2021-04-07 20:01:21
-
浏览量:5049次2021-03-17 17:15:34
-
浏览量:5370次2021-04-27 16:30:55
-
浏览量:1785次2019-11-22 09:03:33
-
浏览量:5119次2021-04-25 15:58:58
-
浏览量:3592次2020-10-10 09:30:52
-
浏览量:2081次2019-10-09 10:35:18
-
浏览量:1434次2022-12-21 14:49:30
-
浏览量:1329次2022-12-29 15:55:20
-
浏览量:1712次2019-07-10 15:34:03
-
浏览量:5223次2021-07-05 09:54:53
-
2021-04-06 16:19:37
-
浏览量:960次2023-02-24 10:35:03
-
浏览量:3471次2020-10-30 09:34:38
-
浏览量:3187次2020-11-13 09:57:57
-
浏览量:1956次2020-08-11 20:59:52
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
这把我C
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明