每个制作人的Kafka主题

14ifxucb  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(441)

假设我有多个设备。每个设备都有不同类型的传感器。现在我想把每个传感器的数据从每个设备发送到Kafka。但我对Kafka的主题感到困惑。用于处理此实时数据
每个设备都有一个Kafka主题,并且来自该设备的所有传感器都会将数据发送到特定的Kafka主题,这样好吗?或者我应该创建一个主题,并让所有设备将数据发送到该主题。
如果我使用第一种情况,我们将为每个设备创建主题,
设备1(传感器a、b、c)->主题1
设备2(传感器a、b、c)->主题2
我可以创建多少个主题?
这个模型能放大吗?
案例2:其中,向一个主题发送数据
设备1(传感器a、b、c)、设备2(传感器a、b、c)…设备….->主题
这不是数据的瓶颈吗。由于它将表现为来自某个传感器的队列数据,因此它将远远落后于队列,不会实时处理。
这个模型能放大吗?
编辑
假设每个设备都与用户关联(多对一)。所以我想根据设备来处理数据。所以我想要处理数据的方式是,每个设备和它的传感器数据在经过一些处理之后会被传递给用户。
说我跟着你
设备1
->传感器a-topic1分区1
->传感器b-topic1分区2
设备2
->传感器a-topic2分区1
->传感器b-topic2分区2
我想要一些酒吧/酒吧类型的行为。由于可以添加或删除设备,也可以添加或删除传感器。有没有一种方法可以动态地创建这些主题和分区。
如果不是Kafka,什么样的酒吧/酒吧适合这种行为。

pb3skfrl

pb3skfrl1#

我将创建基于传感器和基于设备的分区的主题:

A sensor on Device 1 -> topic A, partition 1.
A sensor on Device 2 -> topic A, partition 2.
B sensor on Device 2 -> topic B, partition 2.

等等。
我不知道你有什么样的传感器,但它们在语义上似乎属于同一组数据。在分区的帮助下,您可以进行并行处理。
但这取决于你想如何处理你的数据:是更重要的传感器一起处理还是设备?

qybjjes1

qybjjes12#

这取决于您的语义:
主题是一个逻辑抽象,应该包含“统一”数据,即具有相同语义的数据
一个主题可以很容易地通过它的分区数进行扩展
例如,如果有不同类型的传感器收集不同的数据,则应为每种类型使用一个主题。
由于可以添加或删除设备,也可以添加或删除传感器。有没有一种方法可以动态地创建这些主题和分区。
如果每个消息中都嵌入了设备元数据(以区分日期从何而来),则应该使用具有多个分区的单个主题进行扩展。可以添加新主题或分区,但必须手动完成。对于添加新分区,问题可能是它可能会更改数据分布,从而破坏语义。因此,最佳实践是从一开始就对主题进行过度分区,以避免添加新分区。
如果没有嵌入元数据,则需要多个主题(例如,每个用户或每个设备)来区分消息来源。
作为一个替代方案,可能一个具有多个分区的单一主题以及从设备/传感器到分区的固定Map(通过使用自定义分区器)也可以工作。对于这种情况,添加新分区是没有问题的,因为您可以控制数据分布并保持其稳定。
更新
有一篇博文讨论了这一点:https://www.confluent.io/blog/put-several-event-types-kafka-topic/

相关问题