繁体   English   中英

Kafka主题或分区级别的并行性

[英]Parallelism at Kafka Topics or Partitions Level

为了分隔数据,请基于一个关键点:我应该在同一个主题内使用多个主题还是多个分区? 我问的基础上的开销,计算,数据存储和服务器上造成的负载。

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

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

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

在Kafka中,并行性的主要级别是一个主题中的分区数量,因为有了它,您可以产生许多数量的使用者实例,以保持并行读取同一主题中的数据。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM