我正在寻找一种正确扩展Azure功能的方法,但我遇到了问题。
我有一组物联网设备通过HTTP向Azure发送数据(为此,有一组Azure功能可自动扩展)
但是现在有一个新的IoT设备通过TCP / IP持久连接发送数据,据我所知,Azure Functions不支持。
任何人都有一些关于如何实现这一点的想法?
我认为有一个选项是让VM处理TCP连接并将数据发送到队列,以便函数可以以可伸缩的方式从队列中提取。
先谢谢,欢呼。
答案 0 :(得分:3)
如果您的设备仅通过持久性TCP / IP连接进行通信,那么您需要实施IoT网关。物联网网关基本上是一个应用程序,无论是在本地运行还是在云中运行,它与一个或多个物联网设备通信,然后网关可以连接到Azure IoT Hub等服务并与之通信。从那里,您可以将您的事件发送到Azure IoT Hub,然后使用Azure Stream Analytics等内容将这些事件处理到云中,然后发送到事件中心或服务总线队列。然后,在队列中,您可以编写一个Azure函数,以便在它们进入int时处理这些事件。
无法打开与Azure功能的持久TCP / IP连接。 Azure功能是无服务器计算,并且构建为事件驱动的本质和短期运行。建议Azure函数每次执行的最长持续时间不超过5分钟。
答案 1 :(得分:1)
我认为你最好的选择是脱离设备协议;函数可以绑定到事件中心,您可以将代理放在容器中(很容易在App Svcs或AKS上托管和扩展)。
这样脆弱的部分(代理)很容易测试。
像fanout.io这样的东西可能会有效,具体取决于协议。如果是MQTT,那么Azure IoT Hub可能会有意义。