Beginnend mit Apache Kafka

Veröffentlicht

(13. Juni 2019)

Was ist Apache Kafka?

Apache Kafka ist ursprünglich eine verteilte Messaging-Plattform, die nur auf Anhängen basiert entwickelt von LinkedIn und später gespendet an Apache Foundation .

(* Das Bild dient zur Verschönerung)

Anwendungsfälle

  • Messaging
  • Protokollaggregation
  • Stream-Verarbeitung
  • Commit-Protokoll
  • Ereignisbeschaffung usw.

Wie funktioniert es?

Kafka arbeitet im Pub-Sub-Modell. Es wird also einen Verbraucher / eine Verbrauchergruppe und einen Herausgeber geben.

Der Produzent veröffentlicht Daten zu einem bestimmten Thema und der Verbraucher, der das Thema abonniert hat, verbraucht Daten. Mehrere Produzenten könnten zu demselben Thema veröffentlichen, aber nur ein Verbraucher kann gleichzeitig Daten aus einem Thema konsumieren.

Nun können Sie fragen, ob nur einer Verbraucher dürfen jeweils von einem Thema konsumieren, und wenn Tausende von Ereignissen kommen, wie skalieren wir sie?

Okay. In diesem Fall können wir das Thema in Partitionen aufteilen, um Skalierbarkeit zu erreichen.

Wenn wir eine Partition des Themas durchführen, hat jede Nachricht in der Partition eine offset\_id / message\_id. Im Bild links haben wir 3 Partitionen erstellt und jeder Produzent sendet ein Ereignis an eine bestimmte Partition. Und der Verbraucher liest von einer bestimmten Partition. Wenn jetzt 300 Ereignisse / Sek. Gesendet werden, werden diese in 3 geteilt, sodass jede Partition 100 Nachrichten / Sek. Hat. Auf diese Weise können wir einen Lastausgleich erreichen. Wenn wir eine Partition durchführen, stellt Kafka nur die Nachrichtenreihenfolge auf Partitionsebene sicher . Um Ordnung bei der Partitionierung zu erreichen, müssen wir den Schlüssel verwenden.

Wenn Ereignisse zunehmen, müssen wir mehr Partitionen erstellen und mehr Konsumenten hinzufügen, um den Lastausgleich zu skalieren und zu erreichen

Sobald wir das Ereignis erhalten haben, müssen wir ein Protokoll an Kafka übergeben, damit Kafka versteht, dass das Ereignis verarbeitet wurde und Kafka es nicht erneut sendet. Wenn unsere App mitten in der Verarbeitung zerquetscht, sendet Kafka dieses Ereignis erneut zur Verarbeitung.

Replikationsfaktor:

Der Replikationsfaktor gibt an, wie Daten in Kafka mit verschiedenen Kafka-Brokern repliziert werden. Angenommen, wir haben den Replikationsfaktor N = 3 gewählt. Die Daten werden an zwei weitere Broker repliziert. Kafka funktioniert also immer noch, wenn der N-1-Broker ausfällt, da mindestens ein Broker mit den Daten am Leben ist, damit sie weiter funktionieren.

Was ist Apache Zookeeper?

Apache Zookeeper ist ein zentraler Dienst für verteilte Systeme für einen hierarchischen Schlüsselwertspeicher, der zur Bereitstellung eines verteilten Konfigurationsdienstes für die Synchronisierung verwendet wird Service- und Namensregistrierung für große verteilte Systeme. Apache Kafka funktioniert nicht ohne Zookeeper. Kafka-Clusterverwaltung, wenn ein Broker hoch- oder runter geht, wenn ein neues Thema erstellt wird … diese Art von Daten wird über Zookeeper mit einem anderen Kafka-Broker synchronisiert.

Spinup Kafka>

docker-compose up

Verbraucher (Golang)>

Produzent (Kotlin)>

Ergebnis>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Ressourcen:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.