如何将一个输入流拆分为多个主题并保证同时使用

lqfhib0f  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(276)

我想用apachekafka创建一个简单的基于传感器数据的应用程序。我的问题非常简单,并且引用了apachekafka的基本概念。我是ApacheKafka的初学者。
这是我的要求:
我通过一个字节数组得到传感器数据,里面有不同的数据。例如,数组有三个条目(温度1、温度2和电压)。下面是一个包含4个数组和值数据的示例。每个数组都有一个定义的时间戳。
阵法一:[1,2,3]
阵法二:[4,5,6]
阵法三:[7,8,9]
阵法四:[10,11,12]
现在我要阅读这些数组,并为以下三个主题生成消息:
主题-temp1
主题-temp2
主题电压
生产顺序为:
读取数组1
向topic-temp1生成消息(值=1)
向topic-temp2生成消息(值=2)
向主题电压生成消息(值=3)
读取数组2
向topic-temp1生成消息(值=4)
向topic-temp2生成消息(值=5)
向主题电压生成消息(值=6)
读取数组3
向topic-temp1生成消息(值=7)
向topic-temp2生成消息(值=8)
向主题电压生成消息(值=9)
... 读取数组n。。。
之后我有3个主题,里面有不同的数据:
主题1:1、4、7、10
主题2:2,5,8,11
主题电压:3,6,9,12
现在我的问题是:我想创建一个使用这3个主题的软件应用程序。我想在一个图中显示3个图形(temp1,temp2,voltage)。y轴是信号值,x轴是时间戳。
如何保证在同一时间戳上获取已消耗的值?只有我能覆盖图表。
1,2,3
4,5,6
7,8,9
10,11,12
我应该使用kafka流api吗?一个输入流主题(字节数组)和三个输出流主题?如何确保这三个价值观一起产生,一起消费?
或者我应该使用一个简单的使用者api,通过偏移值访问数据。因为条目(1,2,3)(4,5,6)的偏移量应该相同,因为我是按这个顺序生成的?
提前谢谢!

aamkag61

aamkag611#

我建议您使用一个带有传感器名称(或者最好是uuid)有效负载的传感器resdings主题,这样您就可以知道哪个传感器将数据及其生成的数据作为一个完整的消息发送。
否则,纯粹通过时间戳连接数据似乎不能证明失败。
您的消息密钥可以是uuid/名称,您可以将其扩展到数百个分区
您可以对发送的数据进行二进制编码,但我将使用json字符串进行说明

{
 "sensor_id" : "some unique name", 
 "temperatures" [1,2],
 "voltage": 3
}

如果您想要其中的三个主题,那么可以使用kafka流或ksql轻松地创建三个输出主题
否则,继续创建单独的主题,但是添加id/名称,这样您就可以加入到这个主题中,使用时间窗口以秒或分钟为单位,而不是试图调整延迟,因为一个事件只差几微秒,您无法加入消息

相关问题