Apache Kafka

Apache Kafka Tutorial

Apache Kafka Tutorial
In questa lezione vedremo come possiamo usare Apache Kafka e qual è il suo uso. Esamineremo a fondo le varie terminologie coinvolte e inizieremo a lavorare anche con loro.

Apache Kafka

Per una definizione di alto livello, presentiamo una breve definizione per Apache Kafka:

Apache Kafka è un registro di commit distribuito, a tolleranza d'errore, scalabile orizzontalmente.

Quelle erano alcune parole di alto livello su Apache Kafka. Cerchiamo di capire i concetti in dettaglio qui.

Un argomento in Apache Kafka è proprio come una coda in cui sono archiviati i messaggi. Questi messaggi vengono archiviati per un periodo di tempo configurabile e il messaggio non viene eliminato fino a quando non viene raggiunto questo tempo, anche se è stato utilizzato da tutti i consumatori noti.

Kafka è scalabile in quanto sono i consumatori che effettivamente memorizzano che il messaggio che è stato recuperato da loro dura come un valore di "compensazione". Diamo un'occhiata a una figura per capirlo meglio:

Partizione degli argomenti e offset dei consumatori in Apache Kafka

Iniziare con Apache Kafka

Per iniziare a utilizzare Apache Kafka, deve essere installato sulla macchina. Per fare ciò, leggi Installa Apache Kafka su Ubuntu.

Assicurati di avere un'installazione Kafka attiva se vuoi provare gli esempi che presenteremo più avanti nella lezione.

Come funziona?

Con Kafka, il Produttore le applicazioni pubblicano messaggi che arriva a un Kafka Nodo e non direttamente a un Consumatore. Da questo nodo Kafka, i messaggi vengono consumati dal by Consumatore applicazioni.

Kafka Produttore e Consumatore


Poiché un singolo argomento può ottenere molti dati in una volta sola, per mantenere Kafka scalabile orizzontalmente, ogni argomento è diviso in partizioni e ogni partizione può vivere su qualsiasi macchina nodo di un cluster. Proviamo a presentarlo:

Partizioni argomento


Di nuovo, Kafka Broker non tiene traccia di quale consumatore ha consumato quanti pacchetti di dati. È il responsabilità dei consumatori di tenere traccia dei dati che ha consumato.

Persistenza su disco

Kafka mantiene i record dei messaggi ricevuti dai produttori su disco e non li conserva in memoria. Una domanda che potrebbe sorgere è come questo renda le cose fattibili e veloci? C'erano diverse ragioni alla base di ciò che lo rende un modo ottimale di gestire i record dei messaggi:

Distribuzione e replica dei dati

Come abbiamo studiato sopra che un argomento è diviso in partizioni, ogni record di messaggio viene replicato su più nodi del cluster per mantenere l'ordine e i dati di ciascun record nel caso in cui uno dei nodi muoia.

Anche se una partizione viene replicata su più nodi, c'è ancora un leader della partizione nodo attraverso il quale le applicazioni leggono e scrivono dati sull'argomento e il leader replica i dati su altri nodi, che sono definiti come seguaci di quella partizione.

Se i dati del record di messaggi sono molto importanti per un'applicazione, la garanzia che il record di messaggi sia sicuro in uno dei nodi può essere aumentata aumentando la fattore di replica del Cluster.

Cos'è Zookeeper??

Zookeeper è un negozio di valori-chiave distribuito altamente tollerante ai guasti. Apache Kafka dipende fortemente da Zookeeper per memorizzare i meccanismi del cluster come il battito cardiaco, la distribuzione di aggiornamenti/configurazioni, ecc.).

Consente ai broker Kafka di iscriversi a se stesso e sapere ogni volta che si verifica un cambiamento relativo a un leader di partizione e alla distribuzione del nodo.

Le applicazioni di produttori e consumatori comunicano direttamente con Zookeeper applicazione per sapere quale nodo è il leader della partizione per un argomento in modo che possano eseguire letture e scritture dal leader della partizione.

Streaming

Uno Stream Processor è un componente principale in un cluster Kafka che prende un flusso continuo di dati di record di messaggi da argomenti di input, elabora questi dati e crea un flusso di dati per argomenti di output che possono essere qualsiasi cosa, dal cestino a un database.

È completamente possibile eseguire semplici elaborazioni direttamente utilizzando le API produttore/consumatore, sebbene per elaborazioni complesse come la combinazione di flussi, Kafka fornisce una libreria API Streams integrata, ma si prega di notare che questa API è pensata per essere utilizzata all'interno della nostra base di codice e non t eseguito su un broker. Funziona in modo simile all'API consumer e ci aiuta a scalare il lavoro di elaborazione del flusso su più applicazioni.

Quando usare Apache Kafka?

Come abbiamo studiato nelle sezioni precedenti, Apache Kafka può essere utilizzato per gestire un gran numero di record di messaggi che possono appartenere a un numero virtualmente infinito di argomenti nei nostri sistemi.

Apache Kafka è un candidato ideale quando si tratta di utilizzare un servizio che può permetterci di seguire l'architettura basata sugli eventi nelle nostre applicazioni. Ciò è dovuto alle sue capacità di persistenza dei dati, tolleranza ai guasti e architettura altamente distribuita in cui le applicazioni critiche possono fare affidamento sulle sue prestazioni.

L'architettura scalabile e distribuita di Kafka rende l'integrazione con i microservizi molto semplice e consente a un'applicazione di disaccoppiarsi con molte logiche di business.

Creazione di un nuovo argomento

Possiamo creare un argomento di prova test sul server Apache Kafka con il seguente comando:

Creare un argomento

sudo kafka-argomenti.sh --create --zookeeper localhost:2181 --replication-factor 1
--partizioni 1 --test dell'argomento

Ecco cosa otteniamo indietro con questo comando:

Crea un nuovo argomento di Kafka


Verrà creato un argomento di test che possiamo confermare con il comando menzionato:

Conferma creazione argomento Kafka

Scrivere messaggi su un argomento

Come abbiamo studiato in precedenza, una delle API presenti in Apache Kafka è la API del produttore. Useremo questa API per creare un nuovo messaggio e pubblicarlo sull'argomento che abbiamo appena creato:

Scrivere un messaggio sull'argomento

sudo kafka-console-producer.sh --broker-list localhost:9092 --topic testing

Vediamo l'output di questo comando:

Pubblica messaggio su Kafka Topic


Una volta premuto il tasto, vedremo un nuovo segno di freccia (>) che significa che ora possiamo estrarre i dati:

Digitando un messaggio


Basta digitare qualcosa e premere per iniziare una nuova riga. Ho digitato 3 righe di testo:

Leggere i messaggi dall'argomento

Ora che abbiamo pubblicato un messaggio sull'argomento Kafka che abbiamo creato, questo messaggio rimarrà lì per un po' di tempo configurabile. Possiamo leggerlo ora usando il API consumatore Consumer:

Leggere i messaggi dall'argomento

sudo kafka-console-consumatore.sh --zookeeper localhost:2181 --
test dell'argomento --dall'inizio

Ecco cosa otteniamo indietro con questo comando:

Comando per leggere il messaggio dall'argomento di Kafka


Saremo in grado di vedere i messaggi o le righe che abbiamo scritto utilizzando l'API Producer come mostrato di seguito:

Se scriviamo un altro nuovo messaggio utilizzando l'API Producer, verrà visualizzato istantaneamente anche dal lato Consumer:

Pubblica e consuma contemporaneamente

Conclusione

In questa lezione, abbiamo esaminato come iniziare a utilizzare Apache Kafka, che è un eccellente broker di messaggi e può fungere anche da unità speciale di persistenza dei dati.

SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...
Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...