0

Ich benutze Kafka 0.10.2.0. Ich habe 3 Broker und mache einige Failover-Tests. Manchmal, wenn einer der Kafka-Broker ungehörig geschlossen wird, verliere ich Daten. Kafka Broker Konfiguration:Kafka Wie verhindert man den Verlust von Daten über Makler

zookeeper.connection.timeout.ms=6000 
num.partitions=50 
min.insync.replicas=2 
unclean.leader.election.enable=false 
group.max.session.timeout.ms=10000 
group.min.session.timeout.ms=1000 

Consumer-Konfiguration:

props.put(ConsumerConfig.GROUP_ID_CONFIG, getTopicName() + "group"); 
props.put(ConsumerConfig.CLIENT_ID_CONFIG, getClientId()); 
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); 
props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, 30000); 
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, 500); 
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 3000); 

Producer Konfiguration:

props.put(ProducerConfig.LINGER_MS_CONFIG, 1); 
props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432); 
props.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 1); 
props.put(ProducerConfig.CLIENT_ID_CONFIG, getClientId()); 
props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 800); 
props.put(ProducerConfig.RETRIES_CONFIG, Integer.MAX_VALUE); 
props.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 800); 

Was kann ich tun, um zu stoppen, Daten über kafka Makler zu verlieren?

+0

Set Produzent Config 'acks = http://kafka.apache.org/documentation/#producerconfigs all' Siehe –

+0

Ich habe bereits acks alle zu Produzenten hinzugefügt. – melihcoskun

+0

Mit unreinem Führer Wahl deaktiviert, und Acks = alles, was Sie sollten keine Daten verlieren. Wenn Sie dieses Szenario zuverlässig reproduzieren können, melden Sie bitte einen möglichen Fehler an [email protected] (http://kafka.apache.org/contact) oder öffnen Sie ein Jira: https://issues.apache.org/jira/browse/KAFKA-1? jql = Projekt% 20% 3D% 20KAFKA –

Antwort

1
+0

Ja, alle Themen haben einen Replikationsfaktor 3. Ich habe die Folie bereits überprüft. Ich benutze Autocommit falsch und ich habe keine Probleme beim Commit der Nachricht. Ich bin mir sicher, dass der Produzent die Nachricht korrekt zu den Themen sendet. Aber danach, wenn der Broker ausfällt, verliere ich Daten. Es ist nicht immer passiert, aber wenn man die Tests macht: fange an, Nachrichten an kafka zu senden, schließe einen der Broker, öffne es dann wieder und schließe den anderen Broker ... Ich verliere Daten über diese Fälle. – melihcoskun

+0

Woher wissen Sie, dass die Daten verloren gegangen sind? Wenn Sie Nachrichten von Anfang an mit Console-Consumer-Offset konsumieren, sind die Daten nicht mehr im Kafka-Protokoll? Wenn Sie zurück zum ursprünglichen Broker wechseln, sind die Nachrichten noch da? –

+0

Ich beginne den Offset nicht von Anfang an, ich benutze manuelle Commit mit commitSync.Strategy = früheste. Ich weiß, dass Daten verloren gehen, weil ich in den Logs Nachrichten sehen kann, die bereits an Broker geliefert wurden. Wenn ich also Nachrichten über Kafka-Themen habe und den Kafka-Broker erneut gestartet habe, kann ich auf Verbraucherseite beim Aufruf der Poll-Methode sehen, dass einige Nachrichten übersprungen werden. Kann Offset-Position geändert werden, aber warum oder was soll ich tun? – melihcoskun

Verwandte Themen