连接多个传感器数据的最佳拓扑

vsikbqxv  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(403)

我有n个传感器,每t分钟产生一个测量值,它们各自的主题如下:

  1. Topic_1: {timestamp: 1, measurement: 1}, {timestamp: 2, measurement: 4}, ...
  2. Topic_2: {timestamp: 1, measurement: 5}, {timestamp: 2, measurement: 3}, ...
  3. Topic_n: {timestamp: 1, measurement: 3}, {timestamp: 2, measurement: 5}, ...

传感器的数量是动态的,但为了简单起见,假设我有3个传感器,因此,每t分钟有3个主题获取数据。
连接具有相同时间戳的所有测量的最佳拓扑结构是什么?

  1. {timestamp: 1, measurement: 1}
  2. {timestamp: 1, measurement: 5} --------> {timestamp: 1, measurements: [1,5,3]}
  3. {timestamp: 1, measurement: 3}
xtupzzrd

xtupzzrd1#

坦斯塔夫:没有免费的午餐
每一种权衡都适用于不同的情况。
我建议先编写一个非常简单的服务,比如内存中的默认字典。有一些愚蠢和缓慢的东西可以验证你的测试工作,有时并行运行,以确保你的复杂算法的工作。
我使用了“跳跃和整合”的星型传感器网络,可以按计划收集和转发(睡眠6分钟,醒来40毫秒)。与遥测技术相结合,可以提供非常低的传输成本。为未接收到位添加一个位/传感器。缺点是它不能处理无序的读取、重传等,而且整合系统的延迟也最小。
在非常紧凑的、只读的日志数据库读取方面做了大量的工作。基本上,时间戳允许在计算和驱动资源之间正确地分配查询。森萨奇和其他人这样做了。
像大多数堆栈溢出问题一样,我只是猜测您的实际问题。:)

23c0lvtd

23c0lvtd2#

你有几个选择。可以使用join并定义一个joiner来创建列表。但是,在连接之后它必须是一个窗口流。如果您的测量总是在宽限期内,那么这应该不是一个问题。
稍微复杂一点,如果你的时间戳没有重复,你可以groupbykey然后聚集到列表中。这将形成一个包含所需结果的表。如果您需要它成为一个流,您可以使用tostream并过滤掉不带长度n列表的更新。
可能还有其他一些方法可以做到这一点,但首先想到的是这些。

相关问题