物联网心跳监测系统,需要一些架构建议吗

dm7nw8vv  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(413)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

三年前关门了。
改进这个问题
首先,很抱歉这样一个开放式的问题,但我不知道有任何其他平台张贴这样的问题。
所以基本上我是在一个物联网平台上工作的,在这个平台上,近200万台设备应该通过很少的网关连接。现在我有一个需求,我需要监视每个设备的心跳(周期性的),并且基于一些丢失的心跳,我想从网络控制台添加/删除设备。
我计划在设备和网关之间放置一个kafka队列,这样周期性的数据就可以排队并存储在某个地方,但是我的问题开始于在网关级别,我必须监视每个心跳,并确定哪个设备在给定的保持期间错过了心跳。我不能维护一个大的数据结构来保持Map,db对于nrt或rt系统来说是非常昂贵的,任何关于如何设计的建议都应该针对这个问题。
我的平台是java驱动的,所以如果有其他开源平台可以满足这个要求或任何设计方法,有什么建议吗。
谢谢。

6rvt4ljy

6rvt4ljy1#

您的用例是一个典型的异步摄取+处理,在大数据系统中经常发生。
您在事件摄取Kafka的选择是完美的(别忘了看看监测Kafka的方式以及。我认识的大多数人都认为Kafka是一颗神奇的药丸,它能解决他们所有的问题,结果却发现,在他们将系统投入生产的时候,Kafka集群周围缺乏监控已经让他们痛苦不堪)
现在在网关层的处理部分,您可以查看spark(streaming)/storm/flink这样的系统。我非常熟悉spark,您的用例看起来更像是带窗口的spark流。如果您已经熟悉scala(他们的javaapi也非常简单),那么它的扩展性非常好,而且开发周期也很简单。
您不需要数据库,除非您想维护您取出哪个设备以及何时取出的历史数据。spark streaming job的输出(在每一个保持时间窗口之后)基本上可以与您的网络控制台通信并关闭设备。需要注意的一点是应用程序的浸泡时间—如果它很大,则可能需要为更多具有ram和磁盘的机器调配时间。spark的速度非常快,因为它在内存中保存了整个数据窗口(如果不能保存在ram中,则刷新到磁盘)

相关问题