物联网关键技术:消息队列

物联网关键技术:消息队列

消息队列MQ连接物联网与后端系统(业务应用、数据分析)

大量的设备接入物联网平台后,会产生各种类型的事件和数据,对接到后端的各种服务,包括计算和存储。消息队列可以起到异步通信、应用解藕、削峰平谷的作用,是物联网平台不可缺少的组成部分。

物联网关键技术:消息队列

EMQ的解决方案:IoT Broker可直接对接消息队列服务

消息队列技术选型

传统J2EE企业信息系统中要引入消息队列MQ实现异步消息机制,最早大家都使用ActiveMQ。Apache ActiveMQ是Apache软件基金会所研发的JMS消息中间件(JMS Provider),纯Java程序。ActiveMQ历史悠久,历史包袱也较多,所以现在用的不多了。

物联网关键技术:消息队列

ActiveMQ模型:完全支持JMS 1.1和J2EE 1.4规范

后来大家开始用RabbitMQ。RabbitMQ是实现了高级消息队列协议(AMQP)的开源中间件,用Erlang语言编写,这是爱立信发明的一种编程语言。最早RabbitMQ应用于金融领域,现在依然被互联网的大小企业广泛应用。

物联网关键技术:消息队列

RabbitMQ目前依然广泛应用在互联网行业

RabbitMQ的实现机制比较重,不太适合吞吐量非常大的场景。针对海量数据处理,很多公司会选择使用RocketMQ或者Kafka。

RocketMQ最初是由阿里巴巴消息中间件团队研发并用于生产环境,后来在2016年捐献给了Apache基金会并成为Apache340个顶级开源项目之一。

RocketMQ的最大特点是支持事务型消息,即确保消息发送和DB操作两方的最终一致性,且能支持大量topic。不过RocketMQ的社区还不够大,使用者相比Kafka来说较少一些,其中也不乏知名企业,比如滴滴出行就将RocketMQ用于核心业务系统。

物联网关键技术:消息队列

Kafka架构图

在大数据领域的实时计算、日志采集等场景中,Kafka几乎已经成为行业标准了,社区活跃度很高,也非常适合用于对事务性要求不高的物联网场景中。与RocketMQ相比,如果topic太多,会影响吞吐量。

我们在成熟的消息队列产品中选型,对于数据量不大的物联网系统,可以使用RabbitMQ;对于海量数据,则需要考虑使用RocketMQ或Kafka。如果想尝试一下新的技术,那么可以考虑Pulsar这个后浪。

Pulsar要把Kafka拍在沙滩上

最近两年,Yahoo开发的开源消息中间件Pulsar颇受关注。Pulsar 就像是一个合二为一的产品,不仅可以像 Kafka 那样支持高速率的流处理场景,还能像RabbitMQ那样支持标准的消息队列模式。因此只需要运行一个 Pulsar 系统就可以同时处理实时流和消息队列。

物联网关键技术:消息队列

在Pulsar中,数据分发与存储分离,Broker无状态,便于扩展

分区

日志:

无状态

此外跨域复制是 Pulsar 的拿手好戏。Pulsar 在设计之初就考虑到了这个特性,配置也很容易。一些基准测试结果表明,Pulsar 可以在提供较高吞吐量的同时保持较低的延迟。

Pulsar 提供了很多与 Kafka 相似的特性,比如跨域复制、流式消息处理(Pulsar Function)、连接器(Pulsar IO)、基于 SQL 的主题查询(Pulsar SQL)等等,还有一些 Kafka 没有的特性,比如分层存储和多租户。

Kafka和Pulsar都很适合用于物联网领域,不过目前Kafka仍然占据主流地位,但未来Pulsar是否会取代Kafka,时间自会告诉我们答案。

消息队列 物联网开发技术 Pulsar
分享到:

您可能还会对下面的文章感兴趣: