Kafka
Ein von LinkedIn in Scala entwickeltes und verteiltes Open-Source Messaging System.
Der Sender sendet Nachrichten an Kafka, Nachrichten werden zu einem Thema gespeichert.
Empfänger abonnieren diese Themen um Nachrichten zu erhalten. Jede Nachricht enthält einen Schlüssel, einen Wert und einen Zeitstempel.
Kafka verfolgt die Idee eines verteilten Log Systems, eine Sammlung von Nachrichten welche sequentiell in eine Datei geschrieben werden.
Empfänger holen Nachrichten in Reihenfolge ab und merken sich den Index.
Kafka wird im Cluster betrieben und jede Node ist ein Broker, Broker können leaders
oder replicas
sein.
Die Broker speichern die Nachrichten in Partitionen, eine oder mehrere Partitionen bilden ein Thema.
Kafka behält die Nachrichten für eine bestimmte Zeit, speichert und repliziert die Daten.
Die Empfänger werden in Gruppen orientiert, so genannte consumer groups
.
Ein Thema hat eine Anzahl von Partitionen und einen Replikationsfaktor.
Kafka nutzt ein eigenes binäres Protokoll welches alle APIs als Request/Response definiert.
Nachrichten Austausch
Sender senden die Nachrichten immer zu einem Thema.
Empfänger sind dafür verantwortlich ihren Status über einen Index (Offset) zu kontrollieren.
Einzelnes Thema 1:1
Ein Sender sendet Nachrichten an ein einzelnes Thema die von einem Empfänger abgeholt werden. Bei Kafka würde man von einem Sender auf einer Partition mit einem Empfänger einer Consumer Gruppe sprechen.
Einzelnes Thema 1:N
Ein Sender sendet Nachrichten an ein einzelnes Thema die von mehreren Empfängern abgeholt werden. Bei Kafka würde man von einem Sender auf einer Partition mit mehreren Empfängern mehrerer Consumer Gruppen sprechen.
Mehrere Themen 1:N
Ein Sender sendet Nachrichten an ein mehrere Themen die von mehreren Empfängern abgeholt werden.
Mehrere Themen N:M
Mehrere Sender sendet Nachrichten an ein mehrere Themen die von mehreren Empfängern abgeholt werden.