如何解决Apache Kafka如何与多个代理和单个代理一起使用
我已经开始学习Kafka,并且在学习过程中,我对Kafka的工作过程遇到了一些困惑,我将与您分享这些困惑并期望得到澄清。
(1。)创建3个具有3个复制因子和3个分区的代理
当我将消息推送到代理时,该消息将被代理中的领导分区之一接收,并将其发送到副本。
它使用哪种方式传递带有副本的消息? (方法1或方法2或其他方法)
- 方法1
(2。)如果我创建一个具有3个分区的代理
那么领导者分区将接收到该消息,它属于领导者,那么其他两个分区有什么用?
解决方法
它使用哪种方式传递带有副本的消息?
将是方法1。如果您向主题的分区2写一些消息,则相同的消息也将复制到分区2中的复制主题上。
如果我创建一个具有3个分区的代理,则消息将由领导者分区接收,并且该消息属于领导者,那么其他2个分区又有什么用?
“分区”和“副本”之间的差异似乎令人困惑。这两件事是完全不同的。我已经在另一个post中写了有关此问题的答案。关键点是:
“分区”:主题内的数据分为多个分区。增加分区数量将增加并行度,并因此提高应用程序的吞吐量,因为ConsumerGroup中最多可以有一个使用者读取分区。
“复制”:复制的分区包含与引导者完全相同的数据。因此,同一条消息会被多次存储。由于同一消息位于不同的代理上,因此可以确保持久性。如果代理失败,Kafka可以切换领导者并将复制的消息提供给其客户端。 如果您有3个分区,但复制因子仅为1,则如果一个代理发生故障,那么所有数据(来自所有分区)都将消失。
,@mike 给出了很好的答案。对于对问题2感到困惑的初学者,这里有一个解释。
partition leader
的概念只有在您有多个复制时才有意义。领导是跨复制,而不是分区。在问题帖子的可视化中,leadership
水平跨代理,而不是垂直跨一个代理中的分区。
考虑场景 2 的另一种方式是每个没有复制的分区都是自己的领导者。你有3个非复制分区,那么一般来说每一个都同等重要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。