Apache Kafka (Kafka) è una piattaforma di streaming open source distribuita che consente (tra le altre cose) lo sviluppo di applicazioni in tempo reale basate sugli eventi. Quindi, cosa significa tutto ciò?
Oggi, miliardi di fonti di dati generano un flusso continuo di record di dati, inclusi i flussi di eventi. Un evento è un record digitale di un'azione che si è verificata e della data/ora in cui si è verificata. Generalmente, un evento è un'azione che favorisce un'altra azione come parte di un processo. Alcuni esempi di eventi sono un cliente che effettua un ordine, sceglie un posto su un aereo o inoltra un modulo di registrazione. Un evento non deve necessariamente coinvolgere una persona - ad esempio, il report della temperatura di un termostato collegato in un dato momento rappresenta anch'esso un evento.
Questi flussi offrono opportunità per le applicazioni che rispondono ai dati o agli eventi in tempo reale. Una piattaforma di streaming consente agli sviluppatori di realizzare applicazioni che utilizzano ed elaborano continuamente questi flussi a velocità estremamente elevate, con un alto livello di fedeltà e accuratezza, in base al corretto ordine in cui si verificano.
LinkedIn ha sviluppato Kafka nel 2011 come broker di messaggi con un'elevata velocità di trasmissione per uso proprio, quindi lo ha reso open source e lo ha donato alla fondazione Apache Software Foundation (link esterno a ibm.com). Oggi, Kafka si è evoluto nella piattaforma di streaming più utilizzata, in grado di acquisire ed elaborare bilioni di record al giorno senza alcun ritardo percettibile nelle prestazioni, al crescere del volume dei dati. Le organizzazioni Fortune 500, come ad esempio Target, Microsoft, AirBnB e Netflix, si affidano a Kafka per offrire ai propri clienti esperienze basate sui dati e in tempo reale.
Il seguente video fornisce ulteriori informazioni su Kafka (9:10):
Kafka ha tre funzionalità principali:
Gli sviluppatori possono avvalersi di queste funzionalità di Kafka mediante quattro API:
Kafka è una piattaforma distribuita - funziona come un cluster tollerante agli errori e ad elevata disponibilità che può estendersi su più server e anche su più data center. Gli argomenti Kafka sono partizionati e replicati in modo tale da poter eseguire la scalabilità per servire elevati volumi di consumer simultanei senza ripercussioni sulle prestazioni. Di conseguenza, secondo Apache.org, "Kafka offrirà lo stesso livello di prestazioni sia che tu abbia 50 KB o 50 TB di storage persistente sul server".
Kafka viene utilizzato principalmente per la creazione di due tipi di applicazioni:
RabbitMQ è un broker di messaggi open source molto diffuso, un tipo di middleware che consente ad applicazioni, sistemi e servizi di comunicare convertendo i protocolli di messaggistica tra loro.
Poiché Kafka nasce come una sorta di broker di messaggi (e può, in teoria, essere utilizzato ancora come tale) e dal momento che RabbitMQ supporta (tra gli altri) un modello di messaggistica di pubblicazione/sottoscrizione, Kafka e RabbitMQ vengono spesso paragonati come alternativa l'uno all'altro. Ma i confronti non sono realmente pratici e spesso si addentrano in dettagli tecnici irrilevanti quando si sceglie tra i due. Ad esempio, che gli argomenti Kafka possono includere più sottoscrittori, mentre ogni messaggio RabbitMQ può averne soltanto uno, oppure che gli argomenti Kafka sono duraturi, mentre i messaggi RabbitMQ vengono eliminati dopo l'utilizzo.
In definitiva:
Kafka è spesso utilizzato con diverse altre tecnologie Apache come parte di una più ampia elaborazione di flussi, un'architettura basata sugli eventi o una soluzione di analytics di big data.
Apache Spark è un motore di analytics per l'elaborazione dei dati su larga scala. Puoi utilizzare Spark per eseguire l'analytics sui flussi forniti da Apache Kafka e produrre applicazioni di elaborazione dei flussi in tempo reale, come la già citata analisi del flussi di clic.
Apache NiFi è un sistema di gestione del flusso di dati con un'interfaccia visiva con trascinamento della selezione. Poiché può essere eseguito come un producer Kafka e un consumer Kafka, NiFI è lo strumento ideale per gestire le sfide relative al flusso di dati che Kafka non è in grado di affrontare.
Apache Flink è un motore per l'esecuzione di calcoli sui flussi di eventi su larga scala con velocità elevata e latenza ridotta in modo sistematico. Flink è in grado di inserire i flussi come un consumer Kafka, eseguire operazioni basate su tali flussi in tempo reale e pubblicare i risultati in Kafka o in un'altra applicazione.
Apache Hadoop è un framework di software distribuito che consente di archiviare enormi quantità di dati in un cluster di computer da utilizzare per l'analytics di big data, il machine learning, il data mining e altre applicazioni basate sui dati che elaborano dati strutturati e non strutturati. Kafka viene spesso utilizzato per creare una pipeline dei dati di streaming in tempo reale su un cluster Hadoop.
Crea, modernizza e gestisci le applicazioni in modo sicuro su qualsiasi cloud con fiducia.
Dai tuoi flussi di lavoro di business alle tue operazioni IT, la nostra automazione basata sull'AI può aiutarti.
Connetti applicazioni, servizi e dati con IBM Cloud Pak for Integration, la piattaforma di integrazione più completa disponibile sul mercato.