2

可以说我有多个设备。每个设备都有不同类型的传感器。现在我想将每个传感器的每个设备的数据发送到kafka。但我对卡夫卡话题感到困惑。用于处理这个实时数据卡夫卡每个生产者的话题

每个设备都有一个kafka主题并且该设备的所有传感器都会将数据发送到特定的kafka主题,或者我应该创建一个主题并让所有设备将数据发送到那一个话题。

如果我在这里我们将创建每个装置然后主题第一壳体去,

Device1的(传感器A,B,C) - > TOPIC1

设备2(传感器A,B,C) - > topic2

  1. 我可以创建多少个主题?
  2. 这个模型会缩放吗?

情况2:其中,将数据发送到一个主题

Device1的(传感器A,B,C),设备2(传感器A,B,C).... ....器件N - >话题

  1. 这不会是数据的瓶颈。由于它的行为将来自某个传感器的队列数据将在队列中落后,并且不会实时处理。

  2. 这个模型会缩放吗?

EDIT

比方说每一个设备与用户(多对一)相关联。所以我想根据设备处理数据。所以我想要处理数据的方式是,每个设备及其传感器数据将在处理完成后发送给用户。

说我以下

Device1的

- >传感器A - TOPIC1分区1

- >传感器B - TOPIC1分区2

设备2

- >传感器A - 主题2分区1

- >传感器B - 主题2分区2

我想要一些pub/sub类型的行为。由于可以添加或移除设备,所以还可以添加或移除传感器。有没有办法在运行中创建这些主题和分区。

如果不是kafka,那么pub/sub将适合这种行为。

回答

4

这取决于你的语义:

  • 一个主题是逻辑抽象,并应包含“统一”的数据,即数据具有相同的语义含义
  • 一个主题可以很容易地通过向外扩展其分区数量

例如,如果您有不同类型的传感器收集不同的数据,则应该为每种类型使用一个主题。

由于可以添加或移除设备,所以还可以添加或移除传感器。有没有办法在运行中创建这些主题和分区。

如果设备元数据(用于区分日期来自哪里)嵌入在每条消息中,则应该使用具有多个分区的单个主题进行扩展。添加新的主题或分区是可能的,但必须手动完成。要添加新分区,问题可能是它可能会更改数据分布,从而可能会破坏语义。因此,最佳做法是从头开始对主题进行分区,以避免添加新分区。

如果没有嵌入式元数据,则需要多个主题(例如,每个用户或每个设备)来区分消息来源。

作为一种替代方案,也许单个主题具有多个分区从设备/传感器到分区的固定映射 - 通过使用定制分区程序 - 也可以工作。对于这种情况,添加新分区不成问题,因为您可以控制数据分布并保持稳定。

+0

同意。最好的路线是在每条消息中都有解复用的元数据。 – PragmaticProgrammer

0

我会根据设备上创建基于传感器和分区主题:

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. 

等。

我不知道你有什么样的传感器,但他们似乎属于同一组数据的语义。借助分区,您可以进行并行处理。

但是这取决于您想如何处理您的数据:将传感器一起处理或设备更重要吗?

+0

我想一起处理设备。见编辑 – big

相关问题