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

时间:2017-04-28 08:26:09

标签: apache-kafka publish-subscribe iot pubnub

我正在尝试构建IoT +数据分析系统,而且我无法决定使用哪种技术或服务进行摄取。

最终目标的高级描述是:

  1. 物联网设备将数据推送到物联网网关(使用Zigbee,Z-wave,蓝牙等)
  2. IoT网关(连接到互联网)将数据推送到发布/订阅系统
  3. 后端服务处理来自pub / sub系统的数据,更新仪表板并发出警报
  4. 我的问题是,如果我们只需要~10秒的响应时间,我们应该使用什么样的pubsub系统? (例如,以下是可接受的:物联网设备检测到事件,然后大约10秒后它会显示在用户的仪表板上或发出警报)

    以下是我的一些问题:

    1. 我看到PubNub广告宣传用于物联网。我的理解是,PubNub基本上是一个非常快速的pubsub系统,保证不到1/4秒的交付 - 这是对它的正确理解吗?但与使用Google的Pub / Sub或维护我们自己的Kafka相比,PubNub有点贵。
    2. Google Pub / Sub在某种意义上类似于PubNub,因为与单个数据中心中运行的单个自我管理的Kafka群集不同,Google Pub / Sub拥有自己的网络,因为它是Google的一部分吗? (类似于PubNub是"数据流网络"?)
    3. 如果我使用Kafka,生产者应该在网关设备中吗?
      1. 如果生产者不在网关设备中,那么Kafka生产者是否应该在我们的服务器上并且有一个REST API来接受来自网关设备的消息?
      2. 如果Kafka制作人IS在网关设备中,是否需要在Kafka经纪人面前有任何特殊的东西让他们接受来自网关设备的消息?
    4. PubNub可用于将命令发送回IoT设备。这可以通过Google Pub / Sub或Kafka完成吗?
      1. 将命令推送到IoT设备使用Kafka,每个Gateway设备是否需要等待来自其订阅的主题的消息的消费者? (例如命令)
    5. 此外,不确定它是否值得一提,但目前,该团队只是我和其他2个完整堆栈开发人员。我们已经读过Kafka和Zookeeper了,但我们都没有过去推出一个教程示例。

2 个答案:

答案 0 :(得分:5)

所有重大问题。 (完全披露我为PubNub工作)

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

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

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

PubNub比Pub / Sub更多。 PubNub不仅通过programmable network提供实时消息传递,还提供状态管理和无服务器计算。 PubNub允许您在网络中编写和部署功能,实际上PubNub BLOCKS Catalog中已有30多种预建功能可用于在数据发生变化时发送短信,电子邮件等。

PubNub还创建了一个用于构建名为Project EON的实时仪表板的开源项目。这样可以非常轻松地为您的所有设备数据提供实时可视化。

您也可以说PubNub可以用于remote device control。今天正在使用Insteon,Logitech,三星,Wink等等。

如果您有任何其他问题,PubNub可以全天候提供支持人员 - support@pubnub.com或点击网站上的聊天。

答案 1 :(得分:4)

我建议选项3.1,因为我个人知道它已经在许多物联网用例的生产中得到证实,其中包括一个涉及超过2000万设备的用例。 Confluent Kafka REST代理是开源的,它是通过Internet(使用防火墙和负载均衡器友好的HTTPS协议)将REST / HTTP从网关转换为云/数据中心的Kafka REST代理,然后转换为Kafka的好方法。以及所有支持Kafka的后端仪表板工具。甚至IBM也将此架构用于Bluemix MessageHub上的物联网基础架构。如果您不喜欢REST,那么可以选择MQTT,CoAP,websockset,AMQP,XMPP和许多其他Kafka连接器。