卡夫卡 - 主题&分区&消费者

时间:2017-05-18 07:18:47

标签: apache-kafka kafka-consumer-api kafka-producer-api

只是想要正确理解基础知识。

假设我有一个名为“myTopic”的主题,它有3个分区P0,P1& P2。 每个分区都有一个领导者,该主题的数据(消息)分布在这些分区中。

1。生产者将始终基于代理上的负载以循环方式写入分区的领导者。是吗?

2。生产者如何知道分区的领导者?

第3。阅读特定主题的消费者应阅读该主题的所有分区?这是正确的吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

  
      
  1. 生产者将始终基于代理上的负载以循环方式写入分区的领导者。是吗?
  2.   

默认情况下,是。

也就是说,生产者也可以决定使用自定义分区方案,即分区数据写入的不同策略。

  
      
  1. 制作人如何知道分区的领导者?
  2.   

通过Kafka协议。

  
      
  1. 阅读特定主题的消费者应阅读该主题的所有分区?这是对的吗?
  2.   

默认情况下,是。

那就是说,你也可以实施,例如实现定制逻辑的消费者应用程序,例a"采样"仅从N个分区中的1个读取的消费者。

答案 1 :(得分:2)

  

生产者将始终写入分区的领导者

是的,永远。

  

以循环方式为基础,基于经纪人的负担

没有。如果在ProducerRecord上显式设置了分区,则使用该分区。否则,如果提供了自定义分区程序实现,则确定该分区。否则,如果msg键不为null,则密钥的散列将用于始终将具有相同密钥的msgs发送到同一分区。如果msg键为null,则只有msg才会以循环方式发送到任何分区。但是,这与经纪人的负担无关。

  
      
  1. 制作人如何知道分区的领导者?
  2.   

定期向经纪人询问元数据。

  
      
  1. 阅读特定主题的消费者应阅读该主题的所有分区?这是对的吗?
  2.   

消费者组成消费者群体。如果使用者组中有多个使用者实例,则每个实例都会消耗一部分分区。但整个消费者群体消耗所有分区。也就是说,除非你决定去低水平"并自己管理,你可以做。