apache-kafka - 目前最大规模的生产 kafka 集群部署
问题描述
我正在考虑如何部署我们的 kafka 集群:一个包含多个代理组或多个集群的大集群。如果是一个大集群,我想知道一个 kafka 集群可以有多大。kafka有一个controller节点,不知道能支持多少broker。另一个是 _consume_offset_ topic ,它可以有多大,我们可以向它添加更多分区。
解决方案
我亲自使用过从 3 个代理到 20 个代理的生产 Kafka 集群。他们都工作得很好,这取决于你投入了什么样的工作量。对于 Kafka,我的一般建议是拥有少量更大/更强大的代理,而不是拥有一堆小型服务器。
对于常设集群,您添加的每个代理都会增加节点之间的“串扰”,因为它们必须移动分区、复制数据以及保持元数据同步。这种额外的网络喋喋不休会影响代理可以处理的负载量。作为一般规则,添加代理会增加整体容量,但您必须移动分区,以便在整个集群中正确平衡负载。因此,最好从 10 个节点开始,这样主题和分区会从一开始就均匀分布,而不是从 6 个节点开始,然后再添加 4 个节点。
不管集群的大小,一次总是只有一个控制器节点。如果该节点发生故障,另一个节点将接管作为控制器,但在给定时间只有一个节点可以处于活动状态,假设集群未处于不稳定状态。
该__consumer_offsets
主题可以有任意数量的分区,但默认设置为 50 个分区。由于这是一个紧凑的主题,假设没有发生过多的提交(这在生产环境中已经发生过两次),那么默认设置应该足以满足几乎任何情况。您可以通过查找以offsets.
官方 Kafka 文档开头的代理属性来查找消费者偏移主题的配置设置。
您可以在官方 Kafka 文档页面获取更多详细信息:https ://kafka.apache.org/documentation/
推荐阅读
- java - 如何检查spring boot应用程序在自动配置类中是否有某个注解
- php - 如果原始数据与其他人具有相同的名称字符串,如何回显原始数据
- java - 如何在 Java 中将 OpenSSH 私钥转换为 RSA 私钥?
- ruby - ArgumentError:通过 jenkins 执行 shell 运行 minitest 时的日期无效
- matlab - 找不到具有匹配签名的构造函数“Stateflow.State”。错误 Matlab
- twilio-programmable-chat - 未处理的承诺拒绝错误:“无法连接到 twilsock”
- r - Leaflet r地图保存问题
- javascript - Javascript appendChild 不适用于 li 元素
- linux - 以 iso 格式创建 OS 映像
- reactjs - import & export may only appear at the top level - CRA React App with Typescript