Mit der letzten Version von Kafka 0.11.0.0 stellt das Apache-Team idempotente Producer und Transaktionen vor. Ist es möglich zu garantieren, dass eine ganze Reihe von Nachrichten (zum Beispiel 1 Million), die wir protokollieren wollen, erst am Ende festgeschrieben werden? Ich möchte das, wenn zum Beispiel die Produzenten die Verbindung zu den Brokern verlieren und sie nicht wieder herstellen können, werden keine Nachrichten von den Konsumenten gesehen werden. Ist es möglich?Garantierte einmalige globale Transaktion für Kafka-Produzenten
Antwort
Ja, dies ist möglich mit Transaktionen in Ihrem Hersteller. Sie starten eine Transaktion, veröffentlichen alle Ihre Nachrichten und bestätigen die Transaktion. Alle Nachrichten werden einzeln nach Kafka geschrieben, aber die Benutzer im neuen READ_COMMITTED-Modus sehen die Nachrichten erst, nachdem die Transaktion vom Hersteller festgeschrieben wurde und ein spezieller Transaktionsmarker zum Kafka-Commit-Protokoll hinzugefügt wird.
Verbraucher, die nicht im READ_COMMITTED-Modus sind, können die Nachrichten so sehen, wie sie einzeln geschrieben werden, obwohl sie möglicherweise noch nicht (oder nie) festgeschrieben wurden.
Es gibt eine Grenze für die Länge einer offenen Transaktion, die nicht festgeschrieben werden kann. Wenn der Produzent stirbt und die Transaktion nicht explizit beendet wird, werden Timeout- und Rollback- und READ_COMMITTED-Konsumenten diese Nachrichten nie sehen.
- 1. Einmalige Bindung für eckige translate
- 2. Was ist eine globale Transaktion?
- 3. Garantierte Versandsequenz
- 4. Einmalige Initialisierung für Nunit
- 5. Garantierte Lieferung in SignalR
- 6. Garantierte Semaphor-Reihenfolge?
- 7. Winkel einmalige Bindungen für Objekteigenschaften
- 8. Einmalige Initialisierung für JavaScript-Variable
- 9. Kamel-garantierte Lieferung mit Redis
- 10. WebSocket garantierte Lieferung frei Framework
- 11. Freeradius: Session Timeout Attribut für einmalige Anmeldung
- 12. Einmalige Seitenstruktur für alle Sprachen erstellen
- 13. Ansible-Inventardatei für einmalige Ansible-Wiedergabe schreiben
- 14. Wie einmalige Authentifizierung für zwei verschiedene Server?
- 15. Streifen für einmalige Zahlung. - Ruby on Rails
- 16. Logbücher für eine Heroku einmalige dyno, die
- 17. Einmalige Aufnahme von Kamerabildern
- 18. Transaktion für die Sammlung
- 19. SOAP für verteilte Transaktion
- 20. Verwechslung von Storm Acker und garantierte Nachrichtenverarbeitung
- 21. garantierte Mindest Constant Folding in C
- 22. iPhone Einmalige Ereignisse Programmierung
- 23. Split Einmalige Formel
- 24. Einmalige Bindung mit Filter
- 25. Einmalige Ausführung der Funktion
- 26. FoxPro Einmalige Zufallszahl
- 27. Wie garantierte Deadlock über Warte/notify
- 28. Kann garantierte UB zur Kompilierungszeit zurückgewiesen werden?
- 29. Globale Einstellung für AsNoTracking()?
- 30. Globale Seitenumbrucheinstellungen für Rest
Das kann ich pro Produzent garantieren, oder? Wenn ich mit 3 Produzenten parallelisieren möchte, kann ich keine globale Einzeltransaktion garantieren ... Richtig? – rh0x
Korrekt. Pro Produzent, nicht global –