Home topics Cos'è Apache Kafka? Apache Kafka
Scopri Apache Kafka, la tecnologia di streaming open source alla base di alcune delle esperienze utente in tempo reale basate sugli eventi più diffuse sul web, tra cui AirBnB, Netflix e Pinterest
immagine astratta nera e blu
Cos'è Apache Kafka?

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):

Come funziona Kafka

Kafka ha tre funzionalità principali:

  1. Consente alle applicazioni di pubblicare o sottoscrivere flussi di dati o eventi.
  2. Archivia i record accuratamente (ad esempio, nell'ordine in cui si sono verificati) in modo tollerante agli errori e durevole.
  3. Elabora i record in tempo reale (mentre si verificano).

Gli sviluppatori possono avvalersi di queste funzionalità di Kafka mediante quattro API:

  • API Producer: consente a un'applicazione di pubblicare un flusso in un argomento Kafka. Un argomento è un log denominato che memorizza i record nell'ordine in cui si sono verificati l'uno rispetto all'altro. Dopo essere stato scritto in un argomento, un record non può essere modificato o eliminato; rimane nell'argomento per un periodo di tempo preconfigurato - ad esempio, per due giorni - o fino all'esaurimento dello spazio di storage.
  • API Consumer: consente a un'applicazione di sottoscrivere uno o più argomenti e di inserire ed elaborare il flusso memorizzato nell'argomento. Può funzionare con i record nell'argomento in tempo reale o può inserire ed elaborare i record antecedenti.
  • API Streams: è progettata sulla base delle API Consumer e Producer e aggiunge funzionalità complesse di elaborazione che consentono a un'applicazione di eseguire un'elaborazione continua e di front-to-back del flusso - nello specifico, utilizzare i record di uno o più argomenti per analizzarli, aggregarli o trasformarli come richiesto e pubblicare i flussi che ne risultano negli stessi argomenti o in argomenti differenti. Mentre le API Producer e Consumer possono essere utilizzate per l'elaborazione semplice dei flussi, è l'API Streams che consente lo sviluppo delle più avanzate applicazioni di streaming di dati ed eventi.
  • API Connector: consente agli sviluppatori di creare connettori che rappresentano producer e consumer riutilizzabili in grado di semplificare e automatizzare l'integrazione di una fonte di dati in un cluster Kafka. Esamina alcuni connettori già pronti per gli archivi dati più diffusi (link esterno a ibm.com).
Prestazioni di Kafka

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".

Casi di utilizzo di Kafka

Kafka viene utilizzato principalmente per la creazione di due tipi di applicazioni:

  • Pipeline dei dati di streaming in tempo reale: applicazioni progettate in modo specifico per spostare milioni e milioni di dati o record di eventi tra i sistemi aziendali - su larga scala e in tempo reale - e spostarli in modo affidabile, senza alcun rischio di danneggiamento e duplicazione dei dati, e altri problemi che normalmente si verificano quando si spostano enormi quantità di dati a velocità elevate.
  • Applicazioni di streaming in tempo reale: applicazioni basate su flussi di record o eventi e che generano dei flussi propri. Quando trascorri del tempo online, ti imbatti in decine di queste applicazioni ogni giorno, dal sito di vendita al dettaglio che aggiorna continuamente la quantità di prodotti presso il tuo negozio locale ai siti che mostrano suggerimenti personalizzati o inserzioni pubblicitarie basate sull'analisi del flusso di clic.
Confronto tra Kafka e RabbitMQ

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 è una piattaforma di elaborazione dei flussi che consente alle applicazioni di pubblicare, utilizzare ed elaborare un volume elevato di flussi di record in modo veloce e durevole; e
  • RabbitMQ è un broker di messaggi che consente alle applicazioni che utilizzano protocolli di messaggistica differenti di inviare e ricevere messaggi reciprocamente.
Tecnologie Apache spesso utilizzate con Kafka

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

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

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

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

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.

Soluzioni correlate
Servizi di modernizzazione delle applicazioni

Crea, modernizza e gestisci le applicazioni in modo sicuro su qualsiasi cloud con fiducia.

Esplora i servizi di consulenza per la modernizzazione delle applicazioni
Automazione basata sull'AI

Dai tuoi flussi di lavoro di business alle tue operazioni IT, la nostra automazione basata sull'AI può aiutarti.

Esplora l'automazione basata sull'AI
IBM Cloud Pak for Integration

Connetti applicazioni, servizi e dati con IBM Cloud Pak for Integration, la piattaforma di integrazione più completa disponibile sul mercato.

Esplora IBM Cloud Pak for Integration
Passa alla fase successiva

Kafka rimarrà parte della modernizzazione delle applicazioni poiché l'esigenza di migliorare le esperienze dei clienti e un numero crescente di applicazioni ha un impatto sul business e sulle operazioni IT. Quando si tratta di soddisfare tali esigenze, anche il passaggio a una maggiore automazione è di aiuto. Collaborando con IBM, avrai accesso alle funzionalità di automazione basate sull'AI, inclusi dei flussi di lavoro predefiniti per contribuire ad accelerare l'innovazione rendendo ogni processo più intelligente. Scopri di più su IBM Event Streams for IBM Cloud, una piattaforma di streaming di eventi Kafka-as-a-Service completamente gestita per lo sviluppo di applicazioni basate sugli eventi in IBM Cloud.

Scopri di più su IBM Event Streams