IoT 数据系统设计:Google Pub/Sub vs Kafka vs Kinesis vs PubNub 用于 IoT 数据摄取?

IoT data system design: Google Pub/Sub vs Kafka vs Kinesis vs PubNub for IoT data ingestion?

我正在尝试构建一个 IoT + 数据分析系统,但我在决定使用哪种技术或服务进行摄取时遇到了问题。

最终目标的高级描述是:

  1. 物联网设备将数据推送到物联网网关(使用 Zigbee、Z-wave、蓝牙等)
  2. IoT 网关(连接到互联网)将数据推送到 pub/sub 系统
  3. 后端服务处理来自 pub/sub 系统的数据,更新仪表板并发出警报

我的问题是,如果我们只需要大约 10 秒的响应时间,我们应该使用什么样的 pubsub 系统? (例如以下是可以接受的:IoT 设备感应到事件,然后大约 10 秒后它出现在用户的仪表板上或发出警报)

以下是我的一些问题:

  1. 我看到 PubNub 宣传了很多用于 IoT 的内容。我的理解是,PubNub 基本上是一个非常快的 pubsub 系统,保证不到 1/4 秒的交付——这是对它的正确理解吗?但是与使用 Google 的 Pub/Sub 或维护我们自己的 Kafka 相比,PubNub 有点贵。
  2. 是 Google Pub/Sub 在某种意义上类似于 PubNub,因为不同于单个数据中心中的单个自我管理的 Kafka 集群 运行,Google Pub/Sub 有自己的网络,因为它是 Google 的一部分? (类似于 PubNub 是 "data-streams-network"?)
  3. 如果我使用 Kafka,生产者是否应该在网关设备中?
    1. 如果生产者不在网关设备中,那么 Kafka 生产者是否应该在我们的服务器上并有一个 REST API 来接受来自网关设备的消息?
    2. 如果 Kafka 生产者在网关设备中,Kafka broker 前面是否需要有什么特殊的东西才能接受来自网关设备的消息?
  4. PubNub 可用于将命令发送回物联网设备。这也可以用 Google Pub/Sub 或 Kafka 来完成吗?
    1. 使用 Kafka 将命令推送到 IoT 设备,是否每个网关设备都需要一个消费者来等待来自其订阅的主题的消息? (例如命令)

此外,不确定是否值得一提,但目前,该团队只有我和另外 2 名全栈开发人员。我们已经阅读了有关 Kafka 和 Zookeeper 的资料,但我们 none 已经完成了它的教程示例。

所有好问题。 (完全公开我在 PubNub 工作)

PubNub 远不止 pub/sub(我稍后会谈到)。 First PubNub 被构建为全球分布式网络是有原因的——因此我们可以通过本地接入点为全球所有设备提供低延迟连接。由于这种分布式架构,您的设备将始终连接到离它们最近的 POP,并且因为我们在全球范围内复制消息,如果服务器或节点出现故障,您将自动重新连接到下一个最近的节点而不会丢失消息。因此,PubNub 为所有客户提供 99.999% 的正常运行时间 SLA。

当谈到构建还是购买决策时,我可以告诉你,我们的许多客户开始时认为他们可以自己构建它,但很快意识到这项工作远远超出他们的预期 - read more here。构建和维护客户端库、扩展后端、24-7 监控和安全性都是您需要拥有内部专业知识的事情。如果您考虑前期开发成本、持续维护 - 与今天下载 SDK 相比,今天就开始编码,这样您就可以通过已知的可扩展解决方案更快地进入市场。

PubNub 是根据交易定价的,因此根据设备数量和流量水平,我敢打赌总成本仍低于一名全职员工。为此,您可以从 70 多个客户端 SDK 中进行选择,利用经过验证的可扩展架构,利用已经内置的安全功能,让一个完整的团队准备好并等待 24/7 全天候帮助,这样您就可以专注于创新而不是基础设施。

PubNub 远不止 Pub/Sub。 PubNub 不仅提供实时消息传递,还通过其 programmable network. PubNub allows you to write and deploy functions in the network, in fact there are already 30+ prebuilt functions available in the PubNub BLOCKS Catalog 提供状态管理和无服务器计算,允许您在数据更改时发送短信、电子邮件等。

PubNub 还创建了一个名为 Project EON 的用于构建实时仪表板的开源项目。这使得为​​所有设备数据提供实时可视化变得超级容易。

您关于 PubNub 可用于 remote device control 的说法也是正确的。如今,Insteon、Logitech、Samsung、Wink 等都在使用它。

如果您有任何其他问题,PubNub 拥有出色的支持人员,全天候 24/7 - support@pubnub.com 或点击网站上的聊天。

我会推荐选项 3.1,因为我个人知道它已在许多物联网用例的生产中得到验证,其中包括一个涉及超过 2000 万台设备的用例。 Confluent Kafka REST Proxy 是开源的,并且是将 REST/HTTP(s) 从互联网网关(使用防火墙和负载平衡器友好的 HTTPS 协议)转换为 cloud/datacenter 中的 Kafka REST 代理的好方法然后进入 Kafka 和所有支持 Kafka 的后端仪表板工具。甚至 IBM 也将此架构用于 Bluemix MessageHub 上的物联网基础设施。如果您不喜欢 REST,那么还有 MQTT、CoAP、websockset、AMQP、XMPP 和许多其他 Kafka 连接器可供选择。