Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 为什么在受限的网络中使用kafka会导致性能严重下降?_Apache Kafka - Fatal编程技术网

Apache kafka 为什么在受限的网络中使用kafka会导致性能严重下降?

Apache kafka 为什么在受限的网络中使用kafka会导致性能严重下降?,apache-kafka,Apache Kafka,我试图在一个有24个节点的场景中使用ApacheKafka,其中节点之间的连接以数据包丢失和长往返时间(约1到4秒)为特征 我使用KAFKA作为一个发布/订阅代理,因此所有的消费者和生产者都从一个集中的代理接收信息 我确保为每个消费者/发布者分配一个唯一的组ID 如果我在企业网络(非常小的RTT,没有数据包丢失)中运行我的代码,那么一切都很好,但是如果我尝试在受约束的网络中运行我的代码,我可以观察到消息被传递到中央代理,但随后不会反弹到其他消费者。实际上,每个节点都会接收前两条消息中的大部分,但

我试图在一个有24个节点的场景中使用ApacheKafka,其中节点之间的连接以数据包丢失和长往返时间(约1到4秒)为特征

我使用KAFKA作为一个发布/订阅代理,因此所有的消费者和生产者都从一个集中的代理接收信息

我确保为每个消费者/发布者分配一个唯一的组ID

如果我在企业网络(非常小的RTT,没有数据包丢失)中运行我的代码,那么一切都很好,但是如果我尝试在受约束的网络中运行我的代码,我可以观察到消息被传递到中央代理,但随后不会反弹到其他消费者。实际上,每个节点都会接收前两条消息中的大部分,但随后它会停止接收新消息

到目前为止,我没有发现任何错误或异常

我还在代理机器中部署了一个消费者,它似乎可以很好地接收消息

我还尝试从其中一个节点使用console consumer实用程序,但它也无法接收消息,因此我开始怀疑问题是否与代理配置有关

我有其他基于TCP的协议(NAT、MQTT、REDIS),它们工作得很好

我想知道是否有任何特定的配置我必须添加,使卡夫卡更容错。以下是我的消费者和生产者配置:

消费者:

properties.put (ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, _server);
properties.put (ConsumerConfig.GROUP_ID_CONFIG, _groupID);
properties.put (ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, 
KafkaBroker.KEY_DESERIALIZER);
properties.put (ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, 
KafkaBroker.VALUE_DESERIALIZER);
properties.put ("enable.auto.commit", "true");
properties.put ("auto.commit.interval.ms", "1000");
properties.put ("session.timeout.ms", "30000");
制作人:

properties.put ("acks", "all");
properties.put (ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, _server);
properties.put (ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
KafkaBroker.KEY_SERIALIZER);  
properties.put (ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, 
KafkaBroker.VALUE_SERIALIZER);
//If the request fails, the producer can automatically retry,
properties.put (ProducerConfig.RETRIES_CONFIG, 0);
properties.put (ProducerConfig.CLIENT_ID_CONFIG, _clientID);