用于单个生产者,主题和经纪人的Kafka分区

时间:2019-01-09 11:25:41

标签: apache-kafka

我对Kafka还是很陌生,如果我有一个生产者,一个主题和一个经纪人,那么我对生产者,主题,经纪人和分区之间的关系/映射有疑问吗?在这里的单个Broker上为主题创建多个分区?如果是,那么这对并行性/性能有何帮助?

谢谢。

3 个答案:

答案 0 :(得分:3)

即使您只有一个生产者,一个主题和一个代理,也有必要在消费者上下文中为并行性/性能创建主题的多个分区。如果您在一个使用者组中有多个使用者,并且该主题中有多个分区,那么可以保证使用者将从不同的分区接收数据,这将在从kafka处理时为您提供并行性和性能提升。

答案 1 :(得分:2)

首先要了解的是,主题分区是Kafka Cluster中并行性的一个单元。在Producer和Broker上,写入是并行进行的,因此您可以执行昂贵的操作(压缩等),并且在使用者端,每个分区数据都分配给一个使用者线程。

在您的方案中,如果一个主题上有多个分区,并且单个消费者组中的多个消费者使用了这些多个分区,那么您将受益。这样,您可以在应用程序中实现最大吞吐量。如果您仅将一个使用者线程用于多个分区,那将毫无用处。基本上,如果您聪明地管理群集资源,则更多的分区可能会导致更高的吞吐量。

答案 2 :(得分:2)

除了前面的答案外,重要的是要记住,从多个分区进行消费并不能保留消息/事件的顺序。如果您的应用程序依赖于正确的消息顺序,则可能需要考虑这一事实。