Kafka Consumer Group - Guida completa al gruppo di consumatori Kafka

Sommario:

Anonim

Introduzione a Kafka Consumer Group

Il gruppo di consumatori Kafka è sostanzialmente un numero di consumatori Kafka in grado di leggere i dati in parallelo da un argomento Kafka. Un gruppo di consumatori Kafka ha le seguenti proprietà:

  • Tutti i consumatori di un gruppo hanno lo stesso group.id.
  • Ogni partizione nell'argomento è letta da un solo consumatore.
  • Il numero massimo di consumatori è uguale al numero di partizioni nell'argomento. Se ci sono più consumatori che partizioni, alcuni dei consumatori rimarranno inattivi.
  • Un consumatore può leggere da più di una partizione.

Importanza del Kafka Consumer Group

Per un'organizzazione di vendita al dettaglio, ci sarà un gran numero di produttori che generano dati a un ritmo enorme. Ora, per leggere un grande volume di dati, abbiamo bisogno di più consumatori in esecuzione in parallelo. È relativamente più semplice nella parte del produttore in cui ciascun produttore genera dati indipendentemente dagli altri. Ma, dal lato dei consumatori, se abbiamo più di un consumatore che legge dallo stesso argomento, c'è un'alta probabilità che ogni messaggio venga letto più di una volta. Kafka risolve questo problema utilizzando Consumer Group. In ogni caso, solo un consumatore è autorizzato a leggere i dati da una partizione.

Partizioni di Kafka Consumer Group

Supponiamo di avere un argomento Kafka e ci siano 4 partizioni in esso. Quindi possiamo avere i seguenti scenari:

1. Numero di consumatori = Numero di partizioni

In questo caso, ciascun consumatore leggerà i dati da ciascuna partizione e questo è il caso ideale.

2. Numero di consumatori> Numero di partizioni

In questo caso, un consumatore rimarrà inattivo e porterà a un cattivo utilizzo della risorsa.

3. Numero di consumatori <Numero di partizioni

In questo caso, uno dei consumatori leggerà i dati da più di una partizione.

4. Numero del gruppo di consumatori> 1

In questo caso, l'argomento è sottoscritto da più di un gruppo di consumatori che si rivolge a due diverse applicazioni. Le due applicazioni possono essere eseguite indipendentemente l'una dall'altra.

Vantaggi del Kafka Consumer Group

Consumer Group aggiunge i seguenti vantaggi:

  • Scalabilità: un certo numero di consumatori che leggono i dati in parallelo aumenta decisamente il tasso di consumo dei dati e rende il sistema in grado di leggere un elevato volume di dati.
  • Tolleranza ai guasti: supponiamo di avere un solo consumatore (per la lettura di un volume di dati non così elevato), cosa accadrebbe se il consumatore fallisse per qualche motivo? L'intera pipeline si spezzerà.
  • Bilanciamento del carico: Kafka condivide le partizioni in modo equo per ciascun consumatore, rendendo così il processo di consumo dei dati fluido ed efficiente.
  • Riequilibrio: se viene aggiunto un nuovo consumatore o se ne esiste uno esistente, Kafka ribilancia il carico sui consumatori disponibili.

In che modo Kafka collega i due modelli?

Discutiamo prima i due modelli di messaggistica.

1. Code dei messaggi

In questo modello, un flusso di messaggi viene inviato da un produttore a un solo consumatore. Pertanto, ogni messaggio è di sola lettura una volta e una volta che un consumatore estrae un messaggio, il messaggio viene cancellato dalla coda. Un tipico esempio può essere l'emissione di uno stipendio in cui ogni stipendio deve essere emesso una sola volta. Inoltre, questo modello non garantisce che i messaggi vengano recapitati in ordine. La scalabilità dell'elaborazione dei messaggi è limitata a un singolo dominio.

2. Pubblica e sottoscrivi messaggi

In questo modello, i messaggi pubblicati da un produttore possono essere sottoscritti da più di un consumatore. Il produttore e il consumatore sono disaccoppiati in larga misura. Questo modello garantisce che ciascun consumatore riceverà messaggi in un argomento nell'ordine esatto generato dal produttore. Un esempio tipico può essere un piatto TV che pubblica canali diversi come musica, film, sport, ecc., E i consumatori possono abbonarsi a più di un canale. Dato che ci sono più abbonati a un argomento, ridimensionare l'elaborazione degli stream è una sfida.

Kafka è così popolare perché sebbene sia basato sul modello di pubblicazione / sottoscrizione, presenta i vantaggi di un sistema di code di messaggistica. Come discusso in precedenza, se abbiamo un gruppo di consumatori, Kafka garantisce che ogni messaggio in un argomento sia di sola lettura da un consumatore (che è simile a un sistema di coda messaggi). I vantaggi aggiuntivi sono che i messaggi vengono conservati dai broker (per qualche tempo rendendolo quindi tollerante ai guasti) e se abbiamo più di un gruppo di consumatori, possono leggere i messaggi dallo stesso argomento ma elaborarli in modo diverso.

Usa il caso implicazioni

Supponiamo di avere una semplice piattaforma cloud in cui consentiamo agli utenti le seguenti operazioni:

  • Archivia i file nel cloud.
  • Visualizza i loro file nel Cloud.
  • Scarica i loro file dal Cloud.

All'inizio avevamo una base di utenti molto piccola. Volevamo derivare varie statistiche (su base oraria) come utenti attivi, numero di richieste di upload, numero di richieste di download e così via. Per soddisfare i requisiti, abbiamo creato un cluster Kafka che produce i log (generati dalla nostra applicazione) in un argomento e c'è un'applicazione che consuma l'argomento (usando un consumatore) e quindi lo elabora per generare le statistiche richieste e infine visualizzare quelli in una pagina web.

Man mano che le persone hanno iniziato ad apprezzare i nostri servizi, sempre più persone hanno iniziato ad usarlo generando così un sacco di registri all'ora. Abbiamo scoperto che l'applicazione che utilizza l'argomento è diventata estremamente lenta in quanto utilizzavamo un solo consumatore. Al fine di risolvere il problema, abbiamo aggiunto alcuni consumatori al gruppo e riscontrato significativi miglioramenti nelle prestazioni.

Ci siamo imbattuti in un altro requisito, in cui abbiamo dovuto scrivere i log in un cluster HDFS e questo processo dovrebbe essere eseguito indipendentemente dall'applicazione precedente (Questo perché, con un ulteriore aumento dei dati, stavamo pianificando la disattivazione della prima applicazione e ricavare tutte le statistiche nell'ambiente HDFS). Per soddisfare questo requisito, abbiamo sviluppato un'altra applicazione che ha sottoscritto l'argomento utilizzando un diverso gruppo di consumatori e ha scritto i dati nel cluster HDFS.

Articoli consigliati

Questa è una guida per Kafka Consumer Group. Qui discutiamo dell'importanza del gruppo di consumatori Kafka e di come Kafka collega due modelli con le sue implicazioni sul caso d'uso. Puoi anche consultare i seguenti articoli per saperne di più-

  1. Applicazioni Kafka
  2. Come installare Kafka?
  3. Domande di intervista a Kafka
  4. Architettura HDFS
  5. Diversi tipi di strumenti Kafka