Apache Kafka 如何与多个代理和单个代理一起工作
How does Apache Kafka Work With Multiple Brokers and Single Broker
我已经开始学习Kafka,在学习过程中,我对Kafka的工作过程遇到了一些困惑,我将与大家分享这些困惑,并期待得到澄清。
(1.) 创建了 3 个具有 3 个复制因子和 3 个分区的代理
当我将消息推送到代理时,消息将被代理中的领导分区之一接收并将其发送到其副本。
用副本传递消息是用什么方式? (方法 1 或方法 2 或其他方式)
- 方法一
- 方法 2
(2.) 如果我创建一个具有 3 个分区的代理
那么消息会被leader分区接收,属于leader那么其他2个分区有什么用呢?
which way is it used to pass a message with replicas?
这将是 approach-1。如果您将一些消息写入主题的分区 2,则相同的消息将复制到分区 2 中的已复制主题上。
If I create one broker with 3 partitions then the message will be received by the leader partition and it belongs to the leader then what is the use of the other 2 partitions?
“分区”和“副本”之间的区别似乎存在混淆。这是完全不同的两件事。我已经在另一个 中写过关于这个的答案。重点是:
“分区”:主题内的数据被分成多个分区。增加分区数会增加并行度,因此会增加应用程序的吞吐量,因为您最多可以让 ConsumerGroup 中的一个消费者读取一个分区。
"replication": 复制的分区包含与领导者完全相同的数据。所以同一条消息被多次存储。这确保了持久性,因为相同的消息位于不同的代理上。如果代理发生故障,Kafka 可以切换领导者并将复制的消息提供给其客户端。
如果你有 3 个分区,但只有 1 个复制因子,那么如果那个代理出现故障,你所有的数据(来自所有分区)都将消失。
@mike 回答的很好。对于对问题2感到困惑的初学者,这里做一个解释。
partition leader
的概念只有在您有多个复制时才有意义。领导是跨复制,而不是分区。在问题 post 的可视化中,leadership
水平跨代理,而不是垂直跨一个代理中的分区。
考虑场景 2 的另一种方式是,每个没有复制的分区都是它自己的领导者。你有三个非复制分区,那么每个分区一般都同等重要。
我已经开始学习Kafka,在学习过程中,我对Kafka的工作过程遇到了一些困惑,我将与大家分享这些困惑,并期待得到澄清。
(1.) 创建了 3 个具有 3 个复制因子和 3 个分区的代理
当我将消息推送到代理时,消息将被代理中的领导分区之一接收并将其发送到其副本。
用副本传递消息是用什么方式? (方法 1 或方法 2 或其他方式)
- 方法一
- 方法 2
(2.) 如果我创建一个具有 3 个分区的代理
那么消息会被leader分区接收,属于leader那么其他2个分区有什么用呢?
which way is it used to pass a message with replicas?
这将是 approach-1。如果您将一些消息写入主题的分区 2,则相同的消息将复制到分区 2 中的已复制主题上。
If I create one broker with 3 partitions then the message will be received by the leader partition and it belongs to the leader then what is the use of the other 2 partitions?
“分区”和“副本”之间的区别似乎存在混淆。这是完全不同的两件事。我已经在另一个
“分区”:主题内的数据被分成多个分区。增加分区数会增加并行度,因此会增加应用程序的吞吐量,因为您最多可以让 ConsumerGroup 中的一个消费者读取一个分区。
"replication": 复制的分区包含与领导者完全相同的数据。所以同一条消息被多次存储。这确保了持久性,因为相同的消息位于不同的代理上。如果代理发生故障,Kafka 可以切换领导者并将复制的消息提供给其客户端。 如果你有 3 个分区,但只有 1 个复制因子,那么如果那个代理出现故障,你所有的数据(来自所有分区)都将消失。
@mike 回答的很好。对于对问题2感到困惑的初学者,这里做一个解释。
partition leader
的概念只有在您有多个复制时才有意义。领导是跨复制,而不是分区。在问题 post 的可视化中,leadership
水平跨代理,而不是垂直跨一个代理中的分区。
考虑场景 2 的另一种方式是,每个没有复制的分区都是它自己的领导者。你有三个非复制分区,那么每个分区一般都同等重要。