我已经实现了Kakfa从IoT网关接收数据(小型系统在Linux上运行 - 其他设备连接其他设备并发送命令),在IoT网关中写入数据,如日志,设备命令等。同样将用于平台上的分析等。
现在,我想从我的集中平台(服务器 - 在云端 - 数据中心)向IoT网关发送命令,我可以使用相同的Kakfa连接还是需要切换到其他协议?
答案 0 :(得分:1)
Kafka作为摄取系统非常棒,所以它非常适合像你的遥感这样的物联网场景。 当您需要发送命令以控制设备时,您将从发布/订阅模式切换到请求/响应模式,其中云平台发送命令并等待来自设备的回复(命令被接受,执行,... )。 即使在这种情况下,异步需求和时间解耦也需要消息基础结构,因为当系统发送命令时,IoT网关可能不在线。同时你不希望在很长一段时间后(当设备重新上线时)执行过时命令,因此TTL(Time To Leave)是一个很好的消息功能。 使用Kafka,您可以在一个事件日志中存储所有消息很长时间并重新读取流:这些功能非常适合遥测,也许不适用于命令&控制。在这种情况下,例如ActiveMQ Artemis之类的消息传递代理系统可能是使用队列发送命令而另一个用于回复的正确选择。消耗时或TTL过期时将删除该命令。当然,仍然可以使用具有不同主题的Kafka,但消费者需要处理消耗的命令,而不必重新读取流,从而避免执行命令两次或更多次。只是我的2美分......