Apache Kafka - Introduzione
In Big Data, viene utilizzato un enorme volume di dati. Per quanto riguarda i dati, abbiamo due sfide principali: la prima è come raccogliere grandi volumi di dati e la seconda è analizzare i dati raccolti. Per superare queste sfide, è necessario un sistema di messaggistica.
Kafka è progettato per sistemi distribuiti ad alta velocità. Kafka tende a funzionare molto bene come sostituto di un broker di messaggi più tradizionale. Rispetto ad altri sistemi di messaggistica, Kafka ha un throughput migliore, partizionamento integrato, replica e tolleranza agli errori intrinseca, che lo rendono adatto per applicazioni di elaborazione di messaggi su larga scala.
Cos'è un sistema di messaggistica?
Un sistema di messaggistica è responsabile del trasferimento dei dati da un'applicazione all'altra, quindi le applicazioni possono concentrarsi sui dati, ma non preoccuparsi di come condividerli. La messaggistica distribuita si basa sul concetto di accodamento dei messaggi affidabile. I messaggi vengono accodati in modo asincrono tra le applicazioni client e il sistema di messaggistica. Sono disponibili due tipi di modelli di messaggistica: uno è punto a punto e l'altro è il sistema di messaggistica di pubblicazione-sottoscrizione (pub-sub). La maggior parte degli schemi di messaggistica seguepub-sub.
Sistema di messaggistica punto a punto
In un sistema point-to-point, i messaggi vengono mantenuti in una coda. Uno o più consumatori possono utilizzare i messaggi nella coda, ma un particolare messaggio può essere utilizzato da un massimo di un solo consumatore. Una volta che un consumatore legge un messaggio nella coda, scompare da quella coda. L'esempio tipico di questo sistema è un sistema di elaborazione degli ordini, in cui ogni ordine verrà elaborato da un elaboratore degli ordini, ma anche più elaboratori degli ordini possono funzionare allo stesso tempo. Il diagramma seguente mostra la struttura.
Sistema di messaggistica di pubblicazione-sottoscrizione
Nel sistema di pubblicazione-sottoscrizione, i messaggi vengono mantenuti in un argomento. A differenza del sistema point-to-point, i consumatori possono iscriversi a uno o più argomenti e consumare tutti i messaggi in quell'argomento. Nel sistema Pubblica-Sottoscrivi, i produttori di messaggi sono chiamati editori e i consumatori di messaggi sono chiamati abbonati. Un esempio di vita reale è Dish TV, che pubblica diversi canali come sport, film, musica, ecc. E chiunque può iscriversi al proprio set di canali e ottenerli ogni volta che i canali a cui si è iscritti sono disponibili.
Cos'è Kafka?
Apache Kafka è un sistema di messaggistica di pubblicazione-sottoscrizione distribuito e una coda robusta in grado di gestire un elevato volume di dati e consente di passare messaggi da un endpoint a un altro. Kafka è adatto sia per il consumo di messaggi offline che online. I messaggi Kafka vengono mantenuti sul disco e replicati all'interno del cluster per prevenire la perdita di dati. Kafka si basa sul servizio di sincronizzazione ZooKeeper. Si integra molto bene con Apache Storm e Spark per l'analisi dei dati in streaming in tempo reale.
Benefici
Di seguito sono riportati alcuni vantaggi di Kafka:
Reliability - Kafka è distribuito, partizionato, replicato e con tolleranza ai guasti.
Scalability - Il sistema di messaggistica Kafka si ridimensiona facilmente senza tempi di inattività ..
Durability- Kafka utilizza il
registro di commit distribuito, il
che significa che i messaggi persistono sul disco il più velocemente possibile, quindi è durevole.Performance- Kafka ha un throughput elevato sia per la pubblicazione che per la sottoscrizione dei messaggi. Mantiene prestazioni stabili anche se vengono archiviati molti TB di messaggi.
Kafka è molto veloce e garantisce zero downtime e zero perdita di dati.
Casi d'uso
Kafka può essere utilizzato in molti casi d'uso. Alcuni di loro sono elencati di seguito:
Metrics- Kafka viene spesso utilizzato per i dati di monitoraggio operativo. Ciò comporta l'aggregazione di statistiche da applicazioni distribuite per produrre feed centralizzati di dati operativi.
Log Aggregation Solution - Kafka può essere utilizzato in un'organizzazione per raccogliere i registri da più servizi e renderli disponibili in un formato standard a più consumatori.
Stream Processing- Framework popolari come Storm e Spark Streaming leggono i dati da un argomento, li elabora e scrivono i dati elaborati in un nuovo argomento dove diventano disponibili per utenti e applicazioni. La forte durabilità di Kafka è anche molto utile nel contesto dell'elaborazione del flusso.
Necessità di Kafka
Kafka è una piattaforma unificata per la gestione di tutti i feed di dati in tempo reale. Kafka supporta la consegna dei messaggi a bassa latenza e garantisce la tolleranza ai guasti in presenza di guasti alla macchina. Ha la capacità di gestire un gran numero di consumatori diversi. Kafka è molto veloce, esegue 2 milioni di scritture / sec. Kafka mantiene tutti i dati sul disco, il che significa essenzialmente che tutte le scritture vanno alla cache della pagina del sistema operativo (RAM). Ciò rende molto efficiente il trasferimento dei dati dalla cache della pagina a un socket di rete.