0

为了分离我的数据,基于一个键:我应该在同一个主题中使用多个主题还是多个分区?我是根据服务器上引起的开销、计算、数据存储和负载来询问的。

4

2 回答 2

0

正如@rmetzger 所建议的,将记录拆分为多个主题会增加生产者级别的复杂性,但可能还有一些其他因素值得考虑。

在 Kafka 中,并行度的主要级别是一个主题中的分区数量,因为这样你就可以生成这么多数量的消费者实例来保持从同一个主题并行读取数据。

例如,如果您有一个基于具有 N 个分区的事件的单独主题,那么在消费时,您将能够创建 N 个消费者实例,每个实例专用于同时从特定分区消费。但是在那种情况下,消息的顺序不能保证。即消息的顺序在并行消费的情况下会丢失

另一方面,将同一主题中的记录保存在单独的分区中将使这更容易实现,并且消费者消息按顺序排列(Kafka 仅提供分区内消息的总顺序,而不是主题中不同分区之间的消息。)。但在这种情况下,您只能运行一个消费者进程。

于 2015-09-16T06:25:07.127 回答
0

我建议将您的数据分成(分区)到同一主题中的多个分区。我假设数据在逻辑上属于一起(例如点击事件流)。在同一主题中使用多个分区对数据进行分区的优点主要是所有 Kafka API 都实现为这样使用。

将数据拆分为主题可能会导致生产者和消费者实现中的代码更多。

于 2015-09-15T08:23:27.127 回答