首页 > 解决方案 > Kafka 2.3 集群中的代理的 Kafka 'replications.number'

问题描述

我试图优化一个 3-brokers Kafka 集群,并遇到了一个非常基本但不清楚的问题。

考虑我有这个配置:

kafka.topic.partitions.number=10
kafka.partition.replications.number=3
min.insync.replicas=2

这意味着 :

  • 每个主题 10 个分区。
  • 每个分区都应该在所有代理上复制
  • 如果 2 个同步副本(允许 1 个失败的代理),则分区是健康的

问题是关于replication=3的必要性,真的有必要吗?

值 '2' 也将允许:

  • 1个经纪人失败
  • 可能更快的收敛和恢复
  • 在 2 个失败的代理的情况下,集群无论如何都不会运行。

顺便说一句 - 我的动物园管理员安装在同一台 kafka 机器上。

谢谢 。

标签: apache-kafkaapache-zookeeper

解决方案


我拥有与您相同的集群,但不同之处在于:

  • Zookeeper 安装在 Kafka 以外的其他节点上
  • 我有 3 个 Kafka 代理节点,但复制因子为 2
  • 我每个主题的分区是 5 以上是我在您的配置中注意到的差异。

我的集群在过去几个月运行良好,我什至没有在任何 Kafka Brokers 集群中看到节点故障。

复制因子“3”只有在你面对时才合理

  • 1节点故障频繁
  • 代理节点上的高 CPU 和 RAM 消耗
  • 您正在保存非常重要的交易数据

否则,对于几乎每个用例,复制因子“2”就足够了。


推荐阅读