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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

物联网关键技术:消息队列
消息队列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无状态,便于扩展
分区
•Kafka 中的所有主题都是分区的,这样可以增加吞吐量。

通过分区,单个主题的处理速率可以得到大幅提升。

•Pulsar也支持分区,但不是必需的。

Pulsar使用多个消费者实例同样可以提升处理速率。

如果确实需要分区来进一步提升性能,那么也可以使用分区。

日志:
•Kafka 开发团队预见了日志对于一个实时数据交换系统的重要性。

相比随机读取和写入,串行读取和写入速度更快。

但当日志的量增长到很大的时候,在单台服务器上保存所有日志已经成为一个挑战。

•Pulsar 对日志进行分段,从而避免了拷贝大块的日志。

通过BookKeeper 将日志分段分散到多台不同的服务器上。

也就是说,日
志并不是保存在单台服务器上,所以任何一台服务器都不会成为整个系统的瓶颈。

无状态
•Kafka 不是无状态的,因为每个broker 都包含了分区的所有日志,如果一个 broker 宕机,并非任意一 broker 都可以接替它的工作。

•在 Pulsar 架构中,数据的分发和保存是相互独立的,broker是无状态的。

broker 从生产者接收数据,然后将数据发送给消费者,但数据是保存在BookKeeper 中的。

如果工作负载很高,就可以直接添加新的 broker。

此外跨域复制是 Pulsar 的拿手好戏。

Pulsar 在设计之初就考虑到了这个特性,配置也很容易。

一些基准测试结果表明,Pulsar 可以在提供较高吞吐量的同时保持较低的延迟。

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

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

相关文档
最新文档