【问题标题】:Route and transform data from Azure IoT Hub从 Azure IoT 中心路由和转换数据
【发布时间】:2017-11-15 06:33:54
【问题描述】:

在我们的用例中,我们在 Azure IoT 中心接收消息,并希望将数据路由到不同的事件中心或服务总线主题。

IoT Hub 路由和端点不是选项,因为数据是二进制数据 (protobuf),并且可能只有 10 个不同的端点(我们需要更多)。

我们的要求是:

  • 拆分消息
  • 转换数据(可能是json)
  • 根据负载路由到不同的端点(消息的不同部分可以路由到不同的端点)
  • (可选)使用额外的有效负载丰富数据

我看到了不同的选择:

  • Azure 流分析
  • Azure 函数
  • Spark 或 Flink
  • 自己动手(编写应用程序并在 Service Fabric 或 Kubernetes 中运行)

您会推荐哪种技术?

问候, 马库斯

【问题讨论】:

  • 嗨。目前 Azure 流分析仅支持 JSON、CSV 和 AVRO,因此如果它是二进制的,它将无法读取传入的消息。如果您之前可以转换它(例如使用 Azure 函数),您可以在流分析中进一步处理它。
  • 数据大小是多少?
  • @romanKiss 数据大小取决于,因为消息非常不同。但总的来说,我会说,它很小。最大几 Kb,最大低于 1 Kb。

标签: azure apache-spark apache-flink azure-stream-analytics


【解决方案1】:

您的方案还有另一个选项,例如使用 Azure 事件网格。在这种情况下,来自 Azure IoT 中心的遥测数据通过其自定义主题端点推送到事件网格。请注意,事件消息有一个限制,例如 64KB,请参阅更多详细信息 here

事件网格允许订阅无限数量的事件中心,有关事件网格的更多详细信息是herehere

基于上述内容,以下屏幕 sn-p 显示了将小型遥测数据路由到 10 多个事件中心的另一个选项,基本上是任何类型的订阅者。

【讨论】:

  • 感谢您分享此选项!所以消息的解析、拆分和转换都会发生在函数中,对吧?那么,为什么要将事件从函数推送到事件网格,而不是直接推送到不同的事件中心呢?
  • 是的,AF 负责将二进制遥测数据分解为 json 格式文本中的小事件数组。这是一个简单的无状态处理任务,在 AF 主体内进行了适当的错误处理,并且具有很好的可扩展性。在上述解决方案中,接收到的数组中的每个事件都根据对事件网格中订阅者的订阅进行路由和传递。将这些事件直接从 AF 推送到许多不同的事件中心只能使用可扩展性、错误处理和可管理性较差的命令式绑定来完成。
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多