Condivisione della tecnologia

Deduzione del diagramma del quadro di base di Kafka

2024-07-12

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

1. Modello a punto singolo

1. Concetto di sostantivo

  1. Broker : si riferisce a un nodo nel cluster Kafka. Un cluster Kafka è costituito da più broker che collaborano per gestire l'archiviazione, la trasmissione e il consumo dei messaggi. Il broker gestisce una o più partizioni.

  2. Argomento : il produttore invia il messaggio all'argomento specificato e il consumatore si iscrive all'argomento per ottenere il messaggio. L'argomento stesso è solo un raggruppamento logico e non ha il concetto di archiviazione fisica.

  3. Partizione : è un sottoinsieme di Topic e l'unità di base per l'archiviazione e l'elaborazione effettiva dei messaggi in Kafka. Ogni argomento può essere suddiviso in più partizioni e ciascuna partizione è una sequenza di messaggi ordinata e immutabile.

  4. Replica: Una partizione può avere più copie.

  5. Broker leader: in più copie di una partizione, il broker responsabile dell'elaborazione di tutte le richieste di lettura e scrittura per la partizione.

  6. SeguaceBroker: In caso di copie multiple di una partizione, il broker responsabile della sincronizzazione dei dati del leader si trova nella partizione.

Inserisci qui la descrizione dell'immagine

Il produttore invia il messaggio (record) a Kafka e il consumatore ottiene i dati tramite l'offset (offset, simile a un indice di array).

Allo stesso tempo, ogni partizione avrà il proprio file di registro. Kafka utilizza i file di registro per salvare i dati su disco.

2. Espansione orizzontale del cluster distribuito

1. Argomento su più partizioni

Inserisci qui la descrizione dell'immagine

A proposito di produzione

I produttori si connettono al cluster Kafka tramite Bootstrap Broker. Questo passaggio consiste nello stabilire la connessione iniziale e ottenere i metadati del cluster.

Una volta ottenuti questi metadati, il produttore sa chi è il broker leader per ciascuna partizione e può quindi inviare messaggi direttamente al broker leader corretto.

Il produttore deve specificare un argomento quando invia un messaggio, ma il partizionamento è facoltativo.

  • Nessuna partizione specificata : se il produttore non specifica manualmente le partizioni, Kafka distribuirà i messaggi alle partizioni in base alla strategia di partizionamento predefinita. La strategia di partizionamento predefinita è la seguente:
    • Se il messaggio ha una chiave, Kafka determinerà la partizione in base al valore hash della chiave. La stessa chiave è sempre assegnata alla stessa partizione.
    • Se il messaggio non ha una chiave, Kafka utilizzerà il polling o la distribuzione casuale del messaggio nella partizione per garantire che il messaggio sia distribuito uniformemente.
  • Specificare la partizione : i produttori possono anche specificare esplicitamente le partizioni durante l'invio di messaggi. In questo modo, i messaggi vengono inviati direttamente alla partizione specificata.

In Kafka, quando un produttore invia un messaggio a un broker, la prima operazione del broker è registrare il messaggio su disco per garantire la durabilità e l'affidabilità del messaggio.

A proposito di consumi

I consumatori in Kafka appartengono solitamente a un gruppo di consumatori. Ogni gruppo di consumatori ha un ID gruppo univoco. Il concetto di gruppi di consumatori viene utilizzato per ottenere il bilanciamento del carico e il consumo parallelo dei messaggi.

Quando più consumatori appartengono allo stesso gruppo, Kafka assegnerà la partizione Argomento ai consumatori del gruppo.Ciascuna partizione può essere utilizzata da un solo consumatore all'interno del gruppo, che può ottenere il bilanciamento del carico.

  • Un singolo consumatore si iscrive a un argomento

    • Se solo un consumatore si iscrive a un argomento, il consumatore riceverà tutti i messaggi nell'argomento.
  • Più consumatori appartengono allo stesso gruppo

    • Le partizioni in un argomento vengono distribuite tra i consumatori del gruppo. Ciascuna partizione verrà utilizzata da un solo consumatore nel gruppo.
    • Se il numero di consumatori supera il numero di partizioni, i consumatori in eccesso non verranno assegnati ad alcuna partizione e rimarranno inattivi. Questi consumatori possono assumere automaticamente il controllo delle proprie partizioni quando altri consumatori escono, ottenendo così un'elevata disponibilità.
    • Se il numero di consumatori è inferiore al numero di partizioni, ad alcuni consumatori verranno assegnate più partizioni.
  • Più consumatori appartengono a gruppi diversi

    • Ogni gruppo utilizzerà tutti i messaggi nell'argomento in modo indipendente. Cioè, il messaggio verrà trasmesso a tutti i consumatori del gruppo.

Informazioni sull'aggiunta di nuove partizioni

Kafka creerà nuove partizioni nel cluster. Queste nuove partizioni verranno assegnate a diversi broker per ottenere uno storage bilanciato e un'elevata disponibilità dei dati. Kafka non ridistribuisce o bilancia automaticamente i dati dalle partizioni esistenti a nuove partizioni. Le nuove partizioni sono vuote dal momento in cui vengono create e i dati verranno scritti in queste nuove partizioni solo quando i produttori successivi invieranno messaggi. Il gruppo di consumatori percepirà il cambiamento nel numero di partizioni e attiverà un riequilibrio.

2. Copie multiple di partizioni

Inserisci qui la descrizione dell'immagine

Kafka consente a ciascuna partizione di avere più repliche (Replica), archiviate su broker diversi. Una replica è chiamata Leader ed è responsabile dell'elaborazione di tutte le richieste di lettura e scrittura. Le altre repliche sono Follower e sono responsabili della sincronizzazione dei dati del Leader.

Solo una copia di più copie può leggere e scrivere contemporaneamente, ovvero la copia Leader. Le altre copie diventano copie Follower e vengono utilizzate come backup.