Apache Kafka
Per una definizione di alto livello, presentiamo una breve definizione per Apache Kafka:
Apache Kafka è un registro distribuito, tollerante ai guasti, in modo orizzontale.
Quelle erano alcune parole di alto livello su Apache Kafka. Comprendiamo i concetti in dettaglio qui.
Scailing verticale e orizzontale
Un argomento in Apache Kafka è proprio come una coda in cui vengono archiviati i messaggi. Questi messaggi sono archiviati per una quantità di tempo configurabile e il messaggio non viene eliminato fino a quando questo momento non viene raggiunto, anche se è stato consumato da tutti i consumatori noti.
Kafka è scalabile in quanto sono i consumatori che in realtà immagazzinano che quale messaggio è stato recuperato da loro dura come un valore di "offset". Diamo un'occhiata a una figura per capirlo meglio:
Argomento Partizione e offset del consumatore in Apache Kafka
Iniziare con Apache Kafka
Per iniziare a utilizzare Apache Kafka, deve essere installato sulla macchina. Per fare questo, leggi Installa Apache Kafka su Ubuntu.
Assicurati di avere un'installazione attiva Kafka se vuoi provare esempi che presentiamo più avanti nella lezione.
Come funziona?
Con Kafka, il Produttore Pubblica applicazioni messaggi che arriva a un kafka Nodo e non direttamente a un consumatore. Da questo nodo Kafka, i messaggi vengono consumati dal Consumatore applicazioni.
Produttore e consumatore Kafka
Partizioni di argomento
Persistenza al disco
Kafka persiste che il messaggio registra dai produttori sul disco e non li tiene nella memoria. Una domanda che potrebbe sorgere è come questo renda le cose fattibili e veloci? Ci sono stati diversi motivi dietro questo che lo rendono 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 del 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, esiste ancora un leader della partizione nodo attraverso il quale le applicazioni leggono e scrivono i 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 del messaggio sono altamente importanti per un'applicazione, la garanzia del record del messaggio sarà aumentata in uno dei nodi aumentando il fattore di replica del cluster.
Cos'è lo zookeeper?
Zookeeper è un negozio di valore chiave distribuito altamente tollerante ai guasti. Apache Kafka dipende pesantemente dallo zookeeper per archiviare meccanici di cluster come il battito cardiaco, distribuire aggiornamenti/configurazioni, ecc.).
Permette ai broker Kafka di iscriversi a se stessi e sapere ogni volta che si verifica un cambiamento relativo a un leader di partizione e distribuzione dei nodi.
Le applicazioni produttrici e consumatori comunicano direttamente con lo 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
Un processore di flusso è un componente principale in un cluster Kafka che prende un flusso continuo di dati di registrazione dei messaggi da argomenti di input, elabora questi dati e crea un flusso di dati per output che possono essere qualsiasi cosa, dalla spazzatura a un database.
È completamente possibile eseguire una semplice elaborazione direttamente utilizzando le API produttrici/consumatori, sebbene per elaborazioni complesse come la combinazione di flussi, Kafka fornisce una libreria API di flussi integrata, ma si prega di notare che questa API è pensata per essere utilizzata all'interno della nostra base di codice e non è T Run su un broker. Funziona in modo simile all'API del consumatore e ci aiuta a scalare il lavoro di elaborazione del flusso su più applicazioni.
Quando usare Apache Kafka?
Come abbiamo studiato nelle sezioni sopra, Apache Kafka può essere utilizzata per gestire un gran numero di record di messaggi che possono appartenere a un numero praticamente infinito di argomenti nei nostri sistemi.
Apache Kafka è un candidato ideale quando si tratta di utilizzare un servizio che può consentirci di seguire l'architettura basata su eventi nelle nostre applicazioni. Ciò è dovuto alle sue capacità di persistenza dei dati, all'architettura tollerante e altamente distribuita in cui le applicazioni critiche possono fare affidamento sulle sue prestazioni.
L'architettura scalabile e distribuita di Kafka rende molto semplice l'integrazione con i microservizi e consente a un'applicazione di disaccoppiarsi con molta logica aziendale.
Creazione di un nuovo argomento
Possiamo creare un argomento di prova Test sul server Apache Kafka con il seguente comando:
Crea un argomento
sudo kafka-topics.SH --Create-Zookeeper Localhost: 2181-Reflition-Factor 1
--Partizioni 1 -Test del topio
Ecco cosa torniamo con questo comando:
Crea nuovo argomento Kafka
Conferma della creazione di argomenti di Kafka
Scrivere messaggi su un argomento
Come abbiamo studiato in precedenza, una delle API presenti in Apache Kafka è il API produttore. Useremo questa API per creare un nuovo messaggio e pubblicare sull'argomento che abbiamo appena creato:
Scrivere un messaggio all'argomento
sudo kafka-tumole-produttore.SH-Locale-list-list: 9092-Test-topic
Vediamo l'output per questo comando:
Pubblica il messaggio all'argomento Kafka
Digitando un messaggio
Leggere i messaggi dall'argomento
Ora che abbiamo pubblicato un messaggio sull'argomento Kafka che abbiamo creato, questo messaggio sarà lì per un po 'di tempo configurabile. Possiamo leggerlo ora usando il API del consumatore:
Leggere i messaggi dall'argomento
sudo kafka-consumatore-consumatore.SH --Zookeeper Localhost: 2181 --
Test dell'argomento-From-Beginning
Ecco cosa torniamo con questo comando:
Comanda di leggere il messaggio da Kafka Topic
Pubblica e consumo allo stesso tempo
Conclusione
In questa lezione, abbiamo esaminato come iniziamo a usare Apache Kafka che è un eccellente broker di messaggi e possiamo anche fungere da unità speciale di persistenza di dati di dati.