0

Es gibt mehrere Anwendungen, die zusammen integriert werden müssen und Probleme austauschen müssen. So wird einer von ihnen das Problem bekommen und dann etwas tun und später den Status dieses Problems ändern. Und die anderen Anwendungen, die an diesem Problem beteiligt sein könnten, sollten die neuen Informationen erhalten. Dies wird fortgesetzt, bis das Problem den endgültigen Status geschlossen erreicht. Das Problem muss dem Problem zugeordnet werden, da diese Anwendungen nicht alle das gleiche Datenformat unterstützen.Macht es Sinn, Apache Kafka für dieses Szenario zu verwenden?

  1. Ich bin mir nicht sicher, ob die ganze Ausgabe immer oder nur der neue Status als Event gesendet werden soll.
  2. Wie unterstützt Kafka die Datentransformation?
  3. Was passiert, wenn mein Problem eine Anlage hat? (> 5 MB)

Vielen Dank für Ihre Beratung

+0

Es ist besser, nur den aktualisierten Status auf "etwas" zu senden, anstatt das ganze "etwas" zu übergeben, esp. wenn das "Etwas" groß ist, und wenn die Anwendungen sich nicht um andere Dinge als den Status kümmern. – user3366706

Antwort

1

Ja, es macht Sinn.

Kafka kann Transformationen sowohl durch die Kafka Streams API, als auch KSQL durchführen, eine Streaming-SQL-Engine, die auf Kafka Streams aufbaut.

Normalerweise wird Kafka für kleinere Nachrichten verwendet; Ein Muster, das für größere Inhalte in Betracht gezogen werden muss, ist es in einem Objektspeicher (z. B. S3 oder ähnlich, abhängig von der gewählten Architektur) zu speichern und einen Zeiger darauf in Ihrer Kafka-Nachricht zu referenzieren.

0
  1. Ich bin mir nicht sicher, ob ich die ganze Ausgabe immer oder nur den neuen Status als Event senden soll.

Sie können dies in beide Richtungen tun. Wenn Sie das gesamte Issue senden und anschließend alle nachfolgenden Aktualisierungen für dasselbe Problem wie Kafka-Nachrichten mit einem gemeinsamen Kafka-Nachrichtenschlüssel (möglicherweise eine eindeutige Issue-ID) veröffentlichen, können Sie Ihr Kafka-Thema als komprimiertes Thema konfigurieren und die Broker automatisch Löschen Sie ältere Kopien der Daten, um Speicherplatz zu sparen.

Wenn Sie sich dafür entschieden haben, nur Deltas (Änderungen) zu senden, müssen Sie eine ausreichend lange Aufbewahrungszeit einhalten, damit der erste vollständige Datensatz niemals abläuft, solange das Problem noch besteht und Updates veröffentlicht werden. Die Standard-Aufbewahrungsfrist beträgt 7 Tage.

  1. Wie unterstützt Kafka die Datentransformation?

Ja. In Kafka Connect über Single Message Transforms (SMT) oder in Kafka Streams mit nativem Streams-Code (in Java).

  1. Was passiert, wenn mein Problem eine Anlage hat? (> 5 MB)

Sie kafka für große Nachrichten konfigurieren können, aber wenn sie viel größer als 5 oder 10 MB sind dann Es ist normalerweise besser, einem Anspruchsprüfungsmuster zu folgen und sie extern bei Kafka zu speichern und nur einen Referenzlink zu den extern gespeicherten Daten zu veröffentlichen, so dass der Verbraucher den Anhang out of band von Kafka abrufen kann.

Verwandte Themen