L’elaborazione di un flusso di dati può essere rappresentata nell’immaginario comune come “un fiume che scorre verso la sua foce”. Difatti, allo stesso modo in cui l’acqua scorre attraverso un fiume, così i pacchetti di informazioni si muovono nel flusso infinito della loro elaborazione in tempo reale.

Nello scenario tecnologico moderno si trovano molti esempi di rappresentazione dii tale “flusso” di dati: si pensi ai dati provenienti da sensori montati su macchinari industriali, le attività generate dagli utenti sui social, o ancora le informazioni geolocalizzate rilevate in tempo reale dai dispositivi mobile. Sono solo pochi esempi che esprimono come il mondo reale sia un continuo produttore di dati, aggiornati nell’ordine dei millisecondi.

Il Data Streaming, o Stream Processing, è l’approccio che nasce allo scopo di permettere l’elaborazione di questi “dati in movimento”.

In tale contesto si inserisce Apache Kafka, un motore di stream processing che permette di costruire pipeline di dati in real-time e applicazioni in streaming. Esso riceve dati da diversi tipi di sorgenti (detti producer), e li elabora rendendoli disponibili ai riceventi (consumer). All’interno dell’architettura è possibile costruire applicazioni attraverso la libreria Kafka Streams per effettuare operazioni di filtraggio e arricchimento dati.

Kafka è stata la scelta di grandi aziende, tra cui Linkedin, Twitter, Netflix e Mozilla per gestire e elaborare grandi volumi di dati.

L’elevata flessibilità, scalabilità e tolleranza agli errori di questa piattaforma open source risulta interessante per l’utilizzo di applicazioni più disparate. In particolare, Apache Kafka risulta adatto per svolgere le seguenti attività:

  • Storage distribuito: consente la memorizzazione dei messaggi per prevenire la perdita dei dati, con la facoltà di stabilire un preciso tempo di conservazione degli stessi;
  • ETL (Extract, Transform, Load): raccolta, trasformazione e caricamento del dato su altri sistemi. Grazie al contributo di Kafka Connect è disponibile una serie di connettori dedicati (Elasticsearch, NEO4J, Cassandra, etc…);
  • Stream Processing: capacità di effettuare operazioni sui dati in tempo reale, agendo direttamente sul dato durante il flusso.

 

Sulla base di queste operazioni, Apache Kafka viene utilizzato in architetture applicative per diversi scopi e contesti, tra cui: 

  • IoT, sensor data analysis: possibilità di gestire le enormi quantità di dati generate dai sensori con bassissima latenza;
  • Micro-servizi e comunicazione asincrona: la piattaforma può essere utilizzata come strumento per lo scambio di messaggi asincroni in un ecosistema di micro-servizi. Esso velocizza le comunicazioni tra le applicazioni e riduce al minimo il rischio di perdita di informazioni. Inoltre garantisce anche un alto livello di fault tolerance.

 

APACHE KAFKA: LA SOLUZIONE IDEALE PER L'ELABORAZIONE IN STREAMING

Come accennato in precedenza, Apache Kafka si offre come una delle soluzioni più performanti e scalabili per il data streaming. Infatti, esso:

  • permette di superare un modello di elaborazione di dati in Batch, eseguita in background e a intervalli prestabiliti;
  • fornisce un processing e un arricchimento dei dati in real time, garantendo al contempo robustezza e semplicità d’uso.

Tramite Api Stream si ha uno strumento che rende più immediata l’elaborazione del flusso di messaggi. Vengono infatti semplificate:

  • operazioni senza stato, come filtraggio e trasformazione dei messaggi di flusso
  • operazioni con stato, come join e aggregazione in una finestra temporale

Kafka permette così di operare Real time analytics, eseguire monitoraggio e ottenere il maggior valore possibile dai dati elaborati in streaming.

 

CASI D'UTILIZZO DI APACHE KAFKA PER IL DATA STREAMING

Sono diverse le modalità di utilizzo per il Data Streaming a seconda della diversità del caso d’uso. Si prenda ad esempio un sito web di viaggi, sul quale vanno aggiornati prezzi di hotel e voli che cambiano continuamente; ad ogni utente deve giungere un determinato messaggio con l’informazione in questione. Tramite Apache Kafka ogni componente ottiene la copia del messaggio, poiché tutti i nodi di un singolo sistema di abbonati formano un singolo gruppo di consumatori.

Tutte le attività di un sito web (visualizzazioni di pagina, ricerche o altre azioni che gli utenti possono intraprendere) possono essere monitorati e analizzati tramite Kafka, considerato che in origine era stata sviluppata per fare questo tipo di operazioni su LinkedIn. Il feed può essere elaborato in tempo reale per ottenere informazioni sul coinvolgimento degli utenti, sui drop-off, sui flussi di pagine e così via.

Le potenzialità continuano: le funzionalità di Data Streaming di Kafka si rivelano utili anche per elaborare in tempo reale dati sulla posizione, provenienti da GPS o dispositivi smartphone relativi, ad esempio, al percorso di un veicolo. I dati in arrivo possono essere pubblicati su argomenti Kafka ed elaborati con l’API Stream.

Articoli Recenti