Apache Kafka è una popolare piattaforma di streaming per la gestione di flussi di eventi utilizzata per raccogliere, elaborare e archiviare dati di flussi di eventi o dati che non hanno un inizio o una fine discreti. Kafka rende possibile una nuova generazione di applicazioni distribuite in grado di scalare per gestire miliardi di flussi di eventi al minuto.
Prima dell'arrivo dei sistemi di flussi di eventi come Apache Kafka e Google Cloud Pub/Sub, il trattamento dei dati è stato generalmente gestito con job in batch periodici, in cui i dati non elaborati vengono prima archiviati e poi elaborati a intervalli di tempo arbitrari. Una società di telecomunicazioni, ad esempio, può aspettare fino alla fine della giornata, della settimana o del mese per analizzare i milioni di registrazioni delle chiamate e calcolare i costi accumulati.
Uno dei limiti dell'elaborazione batch è che non avviene in tempo reale. Sempre più spesso le organizzazioni vogliono analizzare i dati in tempo reale per prendere decisioni aziendali tempestive e intervenire in caso di eventi interessanti. La stessa società di telecomunicazioni di cui sopra, ad esempio, potrebbe trarre vantaggio dal fatto di mantenere i clienti informati in tempo reale sulle tariffe, per migliorare la customer experience complessiva.
È qui che entrano in gioco i flussi di eventi. Per flussi di eventi si intende il processo di elaborazione continua di flussi infiniti di eventi, nel momento in cui vengono creati, per acquisire il valore temporale dei dati e creare applicazioni basate su push che intervengono ogni volta che si verifica un evento interessante. Esempi di flussi di eventi includono l'analisi continua dei file di log generati dalle applicazioni web rivolte ai clienti, il monitoraggio e la risposta al comportamento dei clienti mentre navigano su siti web di e-commerce, il monitoraggio continuo del sentiment dei clienti analizzando i cambiamenti nei dati sui flussi di clic generati dai social network, o la raccolta e la risposta ai dati di telemetria generati dai dispositivi IoT (Internet of Things).
Scopri Scopri il servizio gestito Google Cloud per Apache Kafka, che automatizza le operazioni e la sicurezza di Kafka e semplifica lo streaming dei dati in BigQuery.
Scopri di più sull'offerta completamente gestita e integrata di Apache Kafka Confluent Cloud su Google Cloud.
Iniziamo? I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Kafka acquisisce i flussi di dati e registra esattamente quanto accaduto e in che momento. Questo record viene denominato log commit immutabile. È immutabile perché può essere aggiunto, ma non può essere modificato in altro modo. Da qui puoi sottoscrivere il log (accedere ai dati) e pubblicare sul log stesso (aggiungere altri dati) da un numero qualsiasi di applicazioni di flussi di dati in tempo reale, oltre che da altri sistemi.
Ad esempio, potresti usare Kafka per acquisire tutti i flussi di dati delle transazioni dal tuo sito web e inserire questi dati in un'applicazione che tiene traccia delle vendite dei prodotti in tempo reale, li confronta con la quantità di prodotto disponibile e, a sua volta, consente il rifornimento dell'inventario just-in-time.
Kafka è open source
Significa che il suo codice sorgente è disponibile gratuitamente a chiunque voglia usarlo, modificarlo e distribuirlo come propria versione, per qualsiasi scopo. Non sono previste tariffe per la licenza o altre limitazioni. Kafka trae inoltre vantaggio da una community globale di sviluppatori con cui collabora e da cui riceve un contributo. Di conseguenza, Kafka offre una vasta gamma di connettori, plug-in, strumenti di monitoraggio e strumenti di configurazione che fanno parte di un ecosistema in crescita.
Scalabilità e velocità
Kafka non si limita a scalare con volumi di dati sempre crescenti, ma mette a disposizione questi dati in tempo reale in tutta l'azienda. Il fatto di essere una piattaforma distribuita rappresenta inoltre un grande vantaggio per Kafka, poiché l'elaborazione viene suddivisa tra più macchine, fisiche o virtuali. Ne derivano due vantaggi: con un po' di lavoro, ha la possibilità di fare lo scale out per aggiungere macchine qualora sia necessaria una maggiore potenza di elaborazione o capacità di archiviazione; è inoltre affidabile, perché la piattaforma continua a funzionare anche in caso di errore di una singola macchina. Tuttavia, questa caratteristica di Kafka può essere molto difficile da gestire su vasta scala.
Nonostante tutti i suoi vantaggi, eseguire il deployment della tecnologia di Kafka rappresenta una sfida. I cluster Kafka on-premise sono difficili da configurare, scalare e gestire in produzione. Una volta stabilita l'infrastruttura on-premise su cui eseguire Kafka, è necessario eseguire il provisioning delle macchine e la configurazione di Kafka. È inoltre necessario progettare il cluster di macchine distribuite per garantire la disponibilità, assicurarsi che i dati siano archiviati e sicuri, configurare il monitoraggio e scalare attentamente i dati per supportare le variazioni del carico. Occorre quindi provvedere alla manutenzione di questo infrastruttura, sostituendo le macchine in caso di errore ed eseguendo patch e aggiornamenti di routine.
Un approccio alternativo consiste nell'utilizzare Kafka come servizio gestito nel cloud. Un fornitore di terze parti si occupa del provisioning, della creazione e della manutenzione dell'infrastruttura Kafka, mentre tu crei ed esegui le applicazioni. In questo modo risulta più facile eseguire il deployment di Kafka senza la necessità di competenze specifiche di gestione della sua infrastruttura. Dedicherai meno tempo alla gestione dell'infrastruttura e più tempo alla creazione di valore per la tua azienda.
Kafka consente l'elaborazione di flussi di eventi attraverso cinque funzioni principali:
Pubblica
Un'origine dati può pubblicare o collocare un flusso di eventi di dati in uno o più argomenti Kafka o in raggruppamenti di eventi di dati simili. Ad esempio, è possibile acquisire flussi di dati da un dispositivo IoT, come un router di rete, e pubblicarli in un'applicazione che esegue la manutenzione predittiva per calcolare quando potrebbe verificarsi un errore del router.
Consuma
Un'applicazione può sottoscrivere uno o più argomenti Kafka o acquisirne i dati ed elaborare il flusso di dati che ne deriva. Un'applicazione, ad esempio, può ricavare dati da più flussi di social media e analizzarli per determinare il tenore delle conversazioni online su un brand.
Processo
L'API Kafka Streams può funzionare come un elaboratore di flussi, consumando i flussi di dati in entrata provenienti da uno o più argomenti e producendo un flusso di dati in uscita verso uno o più argomenti.
Connetti
Puoi anche creare connessioni riutilizzabili di produttori o consumatori che collegano gli argomenti Kafka ad applicazioni esistenti. Sono già disponibili centinaia di connettori esistenti, compresi i connettori ai servizi fondamentali come Dataproc, BigQuery e altri ancora.
Negozio
Apache Kafka assicura un'archiviazione duratura. Può agire come fonte attendibile in grado di distribuire i dati su più nodi per un deployment a disponibilità elevata all'interno di un singolo data center o in più zone di disponibilità.
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.