Technologieaustausch

Ableitung des Kafka-Grundgerüstdiagramms

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Einpunktmodell

1. Substantivkonzept

  1. Makler : Bezieht sich auf einen Knoten im Kafka-Cluster. Ein Kafka-Cluster besteht aus mehreren Brokern, die zusammenarbeiten, um die Speicherung, Übertragung und den Verbrauch von Nachrichten zu verwalten. Der Broker verwaltet eine oder mehrere Partitionen.

  2. Thema : Der Produzent sendet die Nachricht an das angegebene Thema, und der Verbraucher abonniert das Thema, um die Nachricht zu erhalten. Das Thema selbst ist nur eine logische Gruppierung und hat kein Konzept für physische Speicherung.

  3. Partition : Es handelt sich um eine Teilmenge von Topic und die Grundeinheit für die tatsächliche Speicherung und Verarbeitung von Nachrichten in Kafka. Jedes Thema kann in mehrere Partitionen unterteilt werden, und jede Partition ist eine geordnete, unveränderliche Nachrichtensequenz.

  4. Replik: Eine Partition kann mehrere Kopien haben.

  5. Führender Makler: Bei mehreren Kopien einer Partition ist der Broker für die Verarbeitung aller Lese- und Schreibanforderungen für die Partition verantwortlich.

  6. FollowerBroker: Bei mehreren Kopien einer Partition befindet sich der Broker, der für die Synchronisierung der Daten des Anführers verantwortlich ist, in der Partition.

Fügen Sie hier eine Bildbeschreibung ein

Der Produzent sendet die Nachricht (Datensatz) an Kafka, und der Verbraucher erhält die Daten über den Offset (Offset, ähnlich einem Array-Index).

Gleichzeitig verfügt jede Partition über eine eigene Protokolldatei. Kafka verwendet Protokolldateien, um Daten auf der Festplatte zu speichern.

2. Verteilte Cluster-Horizontalerweiterung

1. Thema mehrere Partitionen

Fügen Sie hier eine Bildbeschreibung ein

Über die Produktion

Produzenten stellen über Bootstrap Broker eine Verbindung zum Kafka-Cluster her. In diesem Schritt wird die erste Verbindung hergestellt und die Metadaten des Clusters abgerufen.

Sobald der Produzent diese Metadaten erhält, weiß er, wer der Leader-Broker für jede Partition ist und kann daher Nachrichten direkt an den richtigen Leader-Broker senden.

Der Produzent muss beim Senden einer Nachricht ein Thema angeben, die Partitionierung ist jedoch optional.

  • Keine Partition angegeben : Wenn der Produzent die Partitionen nicht manuell angibt, verteilt Kafka Nachrichten gemäß der Standardpartitionierungsstrategie an Partitionen. Die Standardpartitionierungsstrategie lautet wie folgt:
    • Wenn die Nachricht einen Schlüssel hat, bestimmt Kafka die Partition anhand des Hash-Werts des Schlüssels. Derselbe Schlüssel wird immer derselben Partition zugewiesen.
    • Wenn die Nachricht keinen Schlüssel hat, verwendet Kafka eine Abfrage oder eine zufällige Verteilung der Nachricht auf die Partition, um sicherzustellen, dass die Nachricht gleichmäßig verteilt wird.
  • Partition angeben : Produzenten können beim Senden von Nachrichten auch explizit Partitionen angeben. Auf diese Weise werden Nachrichten direkt an die angegebene Partition gesendet.

Wenn in Kafka ein Produzent eine Nachricht an einen Broker sendet, besteht die erste Operation des Brokers darin, die Nachricht auf der Festplatte aufzuzeichnen, um die Persistenz und Zuverlässigkeit der Nachricht sicherzustellen.

Über Konsum

Konsumenten gehören bei Kafka meist einer Konsumentengruppe an. Jede Verbrauchergruppe verfügt über eine eindeutige Gruppen-ID. Das Konzept der Verbrauchergruppen wird verwendet, um einen Lastausgleich und den parallelen Verbrauch von Nachrichten zu erreichen.

Wenn mehrere Verbraucher derselben Gruppe angehören, weist Kafka die Themenpartition den Verbrauchern in der Gruppe zu.Jede Partition kann nur von einem Verbraucher innerhalb der Gruppe genutzt werden, wodurch ein Lastausgleich erreicht werden kann.

  • Ein einzelner Verbraucher abonniert ein Thema

    • Wenn nur ein Verbraucher ein Thema abonniert, erhält der Verbraucher alle Nachrichten im Thema.
  • Mehrere Verbraucher gehören derselben Gruppe an

    • Partitionen in einem Thema werden auf die Verbraucher in der Gruppe verteilt. Jede Partition wird nur von einem Verbraucher in der Gruppe genutzt.
    • Wenn die Anzahl der Verbraucher die Anzahl der Partitionen übersteigt, werden die überschüssigen Verbraucher keiner Partition zugewiesen und bleiben im Leerlauf. Diese Verbraucher können ihre Partitionen automatisch übernehmen, wenn andere Verbraucher aussteigen, und so eine hohe Verfügbarkeit erreichen.
    • Wenn die Anzahl der Verbraucher geringer ist als die Anzahl der Partitionen, werden einigen Verbrauchern mehrere Partitionen zugewiesen.
  • Mehrere Verbraucher gehören unterschiedlichen Gruppen an

    • Jede Gruppe konsumiert alle Nachrichten im Thema unabhängig. Das heißt, die Nachricht wird an alle Verbraucher in der Gruppe gesendet.

Informationen zum Hinzufügen neuer Partitionen

Kafka erstellt neue Partitionen im Cluster. Diese neuen Partitionen werden verschiedenen Brokern zugewiesen, um eine ausgewogene Speicherung und hohe Datenverfügbarkeit zu erreichen. Kafka verteilt oder gleicht Daten nicht automatisch von vorhandenen Partitionen auf neue Partitionen aus. Neue Partitionen sind ab dem Zeitpunkt ihrer Erstellung leer und Daten werden nur dann in diese neuen Partitionen geschrieben, wenn nachfolgende Produzenten Nachrichten senden. Die Verbrauchergruppe erkennt die Änderung der Anzahl der Partitionen und löst eine Neuverteilung aus.

2. Mehrere Kopien von Partitionen

Fügen Sie hier eine Bildbeschreibung ein

Kafka ermöglicht, dass jede Partition über mehrere Replikate (Replica) verfügt, die auf verschiedenen Brokern gespeichert werden. Ein Replikat wird als Leader bezeichnet und ist für die Verarbeitung aller Lese- und Schreibanforderungen verantwortlich. Die anderen Replikate sind Follower und für die Synchronisierung der Daten des Leaders verantwortlich.

Nur eine Kopie mehrerer Kopien kann gleichzeitig lesen und schreiben, nämlich die Leader-Kopie. Die anderen Kopien werden zu Follower-Kopien und werden als Backups verwendet.