apache-kafka - 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 机器上。
谢谢 。
解决方案
我拥有与您相同的集群,但不同之处在于:
- Zookeeper 安装在 Kafka 以外的其他节点上
- 我有 3 个 Kafka 代理节点,但复制因子为 2
- 我每个主题的分区是 5 以上是我在您的配置中注意到的差异。
我的集群在过去几个月运行良好,我什至没有在任何 Kafka Brokers 集群中看到节点故障。
复制因子“3”只有在你面对时才合理
- 1节点故障频繁
- 代理节点上的高 CPU 和 RAM 消耗
- 您正在保存非常重要的交易数据
否则,对于几乎每个用例,复制因子“2”就足够了。
推荐阅读
- python - 在 VS Code 中使用 docx 模块运行 Python Azure 函数时出现“异常:找不到包”
- haskell - 为什么“约束技巧”在这个手动定义的 HasField 实例中不起作用?
- list - FTP 的 STAT [file] 命令 (LIST [file]) 是否保证当前锁定文件的正确状态?
- angular - 无法使用 Angular Universal (SSR) 呈现内容内容
- fabricjs - 在 FabricJS 中,我如何阻止对象在选择时跳到“顶部”
- python - Windows 首次安装时是否带有 Visual C++ 编译器,是否需要编译 f2py 模块?
- node.js - gmail api auth 问题 - 无法从所选电子邮件中获取附件
- java - 找不到 com.github.rey5137:material:1.3.0
- javascript - Schedule a task to run as soon as browser repaint
- sql - How can i make a GROUP BY with a variable CASE