Java Kafka将主题存储在多节点集群的何处?

Java Kafka将主题存储在多节点集群的何处?,java,apache-kafka,Java,Apache Kafka,我有一个3节点的Kafka群集,我正在使用以下命令在其中一个节点中创建一个主题: bin/kafka-create-topic.sh--zookeeper host1.com:2181,host2.com:2181,host3.com:2181--replica 1--partition 1--topic test 所以,现在当我将消息推送到主题时,我的一个主机被主题消息超载,因为Kafka将消息存储在磁盘空间中。我想知道是否有任何配置可以设置为在集群中分发存储过程 谢谢,主题可以分为多个分区(

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

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


谢谢,

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

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

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

将主题更改为使用多个分区是分发卡夫卡主题的方式。Kafka代理不会将消息分发到不同的节点。生产者的责任是确定消息发送到哪个分区。这是您可以确定的,或者让生产者使用循环方法来分发到分区,正如@om nom指出的那样

在Kafka producer中,可以指定一个分区键来指示消息的目标分区。默认情况下,基于散列的分区器用于确定给定密钥的分区id,用户也可以使用自定义分区器

为了减少开放套接字的数量,在0.8.0()中,当分区键未指定或为空时,生产者将选择一个随机分区,并在切换到另一个分区之前坚持一段时间(默认值为10分钟)。


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

将主题更改为使用多个分区是分发卡夫卡主题的方式。Kafka代理不会将消息分发到不同的节点。生产者的责任是确定消息发送到哪个分区。这是您可以确定的,或者让生产者使用循环方法来分发到分区,正如@om nom指出的那样

在Kafka producer中,可以指定一个分区键来指示消息的目标分区。默认情况下,基于散列的分区器用于确定给定密钥的分区id,用户也可以使用自定义分区器

为了减少开放套接字的数量,在0.8.0()中,当分区键未指定或为空时,生产者将选择一个随机分区,并在切换到另一个分区之前坚持一段时间(默认值为10分钟)。


这2个节点的其余部分将用于复制副本。对吗?这2个节点的其余部分将用于复制副本。对吗?