Apache Kafka - WorkFlow

A partire da ora, abbiamo discusso i concetti fondamentali di Kafka. Facciamo ora luce sul flusso di lavoro di Kafka.

Kafka è semplicemente una raccolta di argomenti suddivisi in una o più partizioni. Una partizione Kafka è una sequenza di messaggi ordinata linearmente, in cui ogni messaggio è identificato dal loro indice (chiamato offset). Tutti i dati in un cluster Kafka sono l'unione disgiunta di partizioni. I messaggi in arrivo vengono scritti alla fine di una partizione ei messaggi vengono letti in sequenza dai consumatori. La durabilità è fornita replicando i messaggi a diversi broker.

Kafka fornisce sia il sistema di messaggistica pub-sub che quello basato su code in modo rapido, affidabile, persistente, con tolleranza agli errori e senza tempi di inattività. In entrambi i casi, i produttori inviano semplicemente il messaggio a un argomento e il consumatore può scegliere qualsiasi tipo di sistema di messaggistica a seconda delle proprie esigenze. Seguiamo i passaggi nella sezione successiva per capire come il consumatore può scegliere il sistema di messaggistica di sua scelta.

Flusso di lavoro della messaggistica Pub-Sub

Di seguito è riportato il flusso di lavoro passo passo della messaggistica Pub-Sub:

  • I produttori inviano messaggi a un argomento a intervalli regolari.

  • Il broker Kafka memorizza tutti i messaggi nelle partizioni configurate per quel particolare argomento. Assicura che i messaggi siano equamente condivisi tra le partizioni. Se il produttore invia due messaggi e ci sono due partizioni, Kafka memorizzerà un messaggio nella prima partizione e il secondo messaggio nella seconda partizione.

  • Il consumatore si abbona a un argomento specifico.

  • Una volta che il consumatore si iscrive a un argomento, Kafka fornirà al consumatore l'offset corrente dell'argomento e lo salverà anche nell'insieme Zookeeper.

  • Il consumatore richiederà il Kafka a intervalli regolari (come 100 Ms) per i nuovi messaggi.

  • Una volta che Kafka riceve i messaggi dai produttori, li inoltra ai consumatori.

  • Il consumatore riceverà il messaggio e lo elaborerà.

  • Una volta elaborati i messaggi, il consumatore invierà una conferma al broker Kafka.

  • Una volta che Kafka riceve un riconoscimento, modifica l'offset con il nuovo valore e lo aggiorna in Zookeeper. Poiché gli offset vengono mantenuti in Zookeeper, il consumatore può leggere correttamente il messaggio successivo anche durante gli oltraggi del server.

  • Questo flusso sopra si ripeterà fino a quando il consumatore interrompe la richiesta.

  • Il consumatore ha la possibilità di riavvolgere / saltare all'offset desiderato di un argomento in qualsiasi momento e leggere tutti i messaggi successivi.

Flusso di lavoro della messaggistica in coda / gruppo di consumatori

In un sistema di messaggistica in coda invece di un singolo consumatore, un gruppo di consumatori con lo stesso ID gruppo si iscriverà a un argomento. In termini semplici, i consumatori che si iscrivono a un argomento con lo stesso ID gruppo vengono considerati come un unico gruppo ei messaggi vengono condivisi tra di loro. Controlliamo l'effettivo flusso di lavoro di questo sistema.

  • I produttori inviano messaggi a un argomento a intervalli regolari.

  • Kafka memorizza tutti i messaggi nelle partizioni configurate per quel particolare argomento simile allo scenario precedente.

  • Un singolo consumatore si iscrive a un argomento specifico, presuppone Topic-01 con ID gruppo come Gruppo-1 .

  • Interagisce Kafka con il consumatore nello stesso modo come Bar-Sub Messaging fino nuovo consumatore sottoscrive lo stesso argomento, Topic-01 con lo stesso ID gruppo di Group-1 .

  • Quando arriva il nuovo consumatore, Kafka passa alla modalità di condivisione e condivide i dati tra i due consumatori. Questa condivisione continuerà fino a quando il numero di consumatori non raggiungerà il numero di partizioni configurate per quel particolare argomento.

  • Una volta che il numero di consumatori supera il numero di partizioni, il nuovo consumatore non riceverà ulteriori messaggi fino a quando uno qualsiasi dei consumatori esistenti non annulla l'iscrizione. Questo scenario si verifica perché a ogni consumatore in Kafka verrà assegnato un minimo di una partizione e una volta assegnate tutte le partizioni ai consumatori esistenti, i nuovi consumatori dovranno attendere.

  • Questa funzione è anche chiamata Consumer Group . Allo stesso modo, Kafka fornirà il meglio di entrambi i sistemi in modo molto semplice ed efficiente.

Ruolo di ZooKeeper

Una dipendenza critica di Apache Kafka è Apache Zookeeper, che è un servizio di configurazione e sincronizzazione distribuito. Zookeeper funge da interfaccia di coordinamento tra i broker Kafka e i consumatori. I server Kafka condividono le informazioni tramite un cluster Zookeeper. Kafka memorizza i metadati di base in Zookeeper come informazioni su argomenti, broker, offset dei consumatori (lettori di code) e così via.

Poiché tutte le informazioni critiche sono archiviate in Zookeeper e normalmente replica questi dati nel suo insieme, il guasto del broker / Zookeeper Kafka non influisce sullo stato del cluster Kafka. Kafka ripristinerà lo stato, una volta riavviato lo Zookeeper. Questo dà zero tempi di inattività per Kafka. L'elezione del leader tra il broker Kafka viene effettuata anche utilizzando Zookeeper in caso di fallimento del leader.

Per saperne di più su Zookeeper, fare riferimento al guardiano dello zoo

Continuiamo ulteriormente su come installare Java, ZooKeeper e Kafka sulla tua macchina nel prossimo capitolo.