2016-08-10 5 views

Antwort

1

Der Prozess ist transparent, solange innerhalb eines konfigurierbaren Zeitraums ein neuer Leiter für die fehlerhaften Partitionsleiter zugewiesen werden kann.

Nachrichten, die Partitionen zugeordnet sind, deren Leader in einem Broker fehlgeschlagen ist, werden im Producer für request.timeout.ms in die Warteschlange gestellt. Wenn innerhalb dieser Zeit ein neuer Leiter zugewiesen wird, was der Normalfall ist, wenn Sie mehr als einen Broker und einen RF> 1 haben, werden alle Nachrichten in der Warteschlange an den neuen Leiter gesendet. Wenn nach dieser Zeit kein neuer Vorspann für fehlgeschlagene Partitionen zugewiesen werden kann, wirft der Hersteller org.apache.kafka.common.errors.TimeoutException: Batch Expired.

Es kann auch vorkommen, dass der Produzent den Sendepuffer (mit konfigurierbarer Größe buffer.memory) füllt, bevor ein neuer Leader verfügbar ist. In diesem Fall wird der Producer für max.block.ms blockieren und danach eine TimeoutException auslösen.

0

Es hängt von Ihrem Hersteller bestätigt (acks) und retries Config und Broker Seite min.insync.replicas Config und Thema replication-factor.

Wenn Sie eine ordnungsgemäße Konfiguration und anständige Clustergröße haben, ist ein Replikat Failover in den meisten Fällen transparent. zum Beispiel acks = 1 und wiederholen Sie 2 oder 3 mal und min.insync.replicas weniger als Topic Replikationsfaktor.

Verwandte Themen