Naf*_*ema 3 apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-streams
我已经开始学习Kafka,在学习过程中,我对Kafka的工作流程遇到了一些困惑,我将这些困惑与大家分享并期待澄清。
(1.) 创建了 3 个具有 3 个复制因子和 3 个分区的代理
当我将消息推送到代理时,代理中的领导者分区之一将接收该消息并将其发送到其副本。
它使用哪种方式传递带有副本的消息?(方法 1 或方法 2 或其他方式)
(2.) 如果我创建一个具有 3 个分区的代理
那么消息会被leader分区接收,并且属于leader,那么其他2个分区有什么用呢?
它使用哪种方式传递带有副本的消息?
这将是方法一。如果您将一些消息写入主题的分区 2,则相同的消息将被复制到分区 2 中的已复制主题上。
如果我创建一个具有 3 个分区的代理,那么消息将由领导者分区接收,并且它属于领导者,那么其他 2 个分区有什么用呢?
对于“分区”和“副本”之间的区别似乎存在混淆。这是两个完全不同的事情。我在另一篇文章中写过对此的回答。关键点是:
“分区”:主题内的数据被分为多个分区。增加分区数量将增加并行性,从而提高应用程序的吞吐量,因为 ConsumerGroup 中最多可以有一个消费者读取分区。
“replication”:复制分区包含与领导者完全相同的数据。因此同一条消息会被存储多次。这确保了持久性,因为相同的消息位于不同的代理上。如果代理发生故障,Kafka 可以切换领导者并向其客户端提供复制的消息。如果您有 3 个分区,但复制因子仅为 1,那么如果该代理发生故障,您的所有数据(来自所有分区)都会消失。
| 归档时间: |
|
| 查看次数: |
8452 次 |
| 最近记录: |