[英]One Zookeeper, multiple Kafka brokers - how to programatically create a topic on a specific broker?
[英]How does Apache Kafka Work With Multiple Brokers and Single Broker
它使用哪种方式传递带有副本的消息?
这将是方法 1。 如果您将一些消息写入主题的分区 2,则相同的消息将复制到分区 2 中的已复制主题上。
如果我创建一个有 3 个分区的代理,那么该消息将被领导者分区接收并且它属于领导者,那么其他 2 个分区有什么用?
关于“分区”和“副本”之间的区别似乎存在混淆。 这是完全不同的两件事。 我在另一篇文章中写了一个关于这个的答案。 关键点是:
“partitions”:主题内的数据被分成多个分区。 增加分区数量将增加并行度,从而增加应用程序的吞吐量,因为在 ConsumerGroup 中最多可以有一个消费者读取一个分区。
“replication”:复制的分区包含与领导者完全相同的数据。 因此,同一条消息会存储多次。 这确保了持久性,因为相同的消息位于不同的代理上。 如果代理失败,Kafka 可以切换领导者并将复制的消息提供给其客户端。 如果您有 3 个分区但只有 1 个复制因子,那么如果该代理宕机,您的所有数据(来自所有分区)都将消失。
@mike 给出了很好的答案。 对于对问题2感到困惑的初学者,这里有一个解释。
partition leader
的概念只有在您有多个复制时才有意义。 领导是跨复制,而不是分区。 在问题帖子的可视化中, leadership
水平跨代理,而不是垂直跨一个代理中的分区。
考虑场景 2 的另一种方式是每个没有复制的分区都是自己的领导者。 你有三个非复制分区,那么每个分区一般都同等重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.