如果一个主题有数百万个分区,我们会有什么问题吗?由于我们的业务需求,我们正在考虑是否可以为kafka中的每个用户进行分区。我们拥有数百万用户。任何见解将不胜感激!
问问题
423 次
1 回答
3
是的,我认为如果您有数百万个分区,您最终会遇到问题,原因如下:
(最重要的是!!)客户来来去去,所以你会需要不断地改变分区的数量或者有很多未使用的分区(因为你不能减少一个主题内的分区数量)。
更多分区需要更多打开文件句柄:更多分区意味着磁盘上有更多目录和分段文件。
更多分区可能会增加不可用性:计划内的故障一次将领导者从代理中移出,每个分区的停机时间最短。在硬故障中,所有领导者都立即无法使用。
更多分区可能会增加端到端延迟:对于要被消费者看到的消息,它必须被提交。Broker 使用单个线程从领导者复制数据,从而导致每个分区的开销。
更多分区可能需要客户端中的更多内存
Confluent 的博客中提供了更多详细信息,关于如何选择 Kafka 集群中的主题/分区数量?.
此外,根据 Confluent 为 Kafka 开发人员提供的培训材料,建议:
“当前的限制(2-4K 分区/代理,每个集群 100s K 分区)是最大值。大多数环境都远低于这些值(通常每个代理在 1000-1500 范围内或更少)。”
此博客解释说“Apache Kafka 支持每个集群 200K 分区”。
这可能会随着 Zookeeper KIP-500的更换而改变,但同样,看看上面的第一个要点仍然是一个不健康的软件设计。
于 2020-11-11T11:41:46.477 回答