我应该使用 MQTT 协议吗?

物联网 MQTT 协议 数据传输
2021-06-01 02:31:01

我计划开始实施以下物联网用例。

用例

物联网设备将通过中继器向网关发送 10 万条消息/分钟,网关将消息传输到云端。我想跟踪组织中的员工。传感器将固定在他们的身份证上。传感器通过中继器将位置相关数据(大约 15KB/消息)发送到网关。这是为了分析目的。将数据传递到云端后,我将进行一些分析并存储到数据库中并显示在网页上。基于此分析数据,我将显示用户的当前位置以及用户在特定时间跨度(过去 1 小时或 2 小时或 1 天)内的移动位置。

我将对数据进行一些处理并将其发送到前端/数据库。

我已经了解了 IoT 基础知识及其架构。然后我决定使用“SMACK”堆栈(Spark、Mesos、Akka、Cassandra、Kafka)架构。

我决定在网关中使用“Kafka native client”将消息发布到云端。

我应该使用 MQTT 协议将消息传输到 Kafka 吗?或者上面的用例不需要MQTT?

如果是,将 MQTT 与“SMACK”架构一起使用有什么好处?

2个回答

您不必使用 MQTT。安装在员工证上的Kafka客户端可以直接将数据发送到云端的kafka broker。因此,当您使用 Kafka 作为网关时,您实际上可以将 kafka 用于传感器本身。

Kafka 和 MQTT不可互换,它们有不同的优势(能耗、带宽消耗、吞吐量...)但我想你知道这一点,假设你的堆栈的复杂性。Kafka 每分钟可以处理 10 万条消息。

如果您决定无论如何都使用 MQTT,这里有一篇关于 IBM 如何在同一项目中使用 MQTT 和 Kafka 的博客文章。他们的项目也是关于移动性的,所以我认为它实际上可能会有所帮助。

使用 Kafka 和 MQTT 管理物联网设备

几乎任何类型的 MQTT 代理都可以处理这种负载,尤其是对于 qos=0(可能在您的情况下)消息。我们的代理负载恒定,每秒传入 100.000 条消息 (0.5KB) (+SSL)。问题可能出现在流量方面,而不是pps。

关于您的系统架构,我的个人建议 - 尽量使其简单。简单的意思 - 只是一些中间组件/服务。如果您可以直接连接两个服务 - 这样做。当您开始添加功能时,您将始终有可能使其变得更加复杂。