首页 文章

Kafka将主题存储在多节点集群中的哪个位置?

提问于
浏览
0

我有一个3节点Kafka集群,我使用以下命令在其中一个节点中创建一个主题: bin/kafka-create-topic.sh --zookeeper host1.com:2181,host2.com:2181,host3.com:2181 --replica 1 --partition 1 --topic test

所以,现在当我将消息推送到主题时,我的一个主机正在过载主题消息,因为Kafka将消息存储在磁盘空间中 . 我想知道是否有任何配置要设置为跨群集分发存储过程 .

谢谢,

2 回答

  • 2

    正如@ om-nom-nom指出的那样,您正在使用单个分区创建主题 . 因此该主题将仅在您创建它的节点上 . 因此,即使您有3节点设置,也永远不会使用其他两个节点 .

    更改主题以使用多个分区是您分发Kafka主题的方式 . Kafka代理不会将消息分发到不同的节点 . 生产环境 者有责任确定消息所在的分区 . 这是你可以确定的,或让 生产环境 者使用循环方法分发到分区,正如@ om-nom-nom指出的那样 .

    在Kafka 生产环境 者中,可以指定分区键以指示消息的目标分区 . 默认情况下,基于散列的分区程序用于确定给定密钥的分区ID,人们也可以使用自定义分区程序 . 要减少打开套接字的数量,在0.8.0(https://issues.apache.org/jira/browse/KAFKA-1017)中,当未指定分区键或为null时, 生产环境 者将选择一个随机分区并粘贴在切换到另一个之前一段时间(默认为10分钟) . 资源

  • 1

    主题可以切成多个分区(您的配置仅使用1),默认情况下将以循环方式在代理之间分配 .

相关问题