Cos'è Apache Kafka?

Giovane studente e donna adulta che lavorano alla stessa scrivania

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è Apache Kafka?

Apache Kafka è una piattaforma open source, distribuita ed event streaming che elabora dati in tempo reale. Kafka eccelle nel supportare applicazioni basate su eventi e nel creare pipeline di dati affidabili, offrendo bassa latenza e distribuzione dei dati ad alta velocità.

Oggi, miliardi di fonti di dati producono continuamente flussi di informazioni, spesso sotto forma di eventi, strutture dati fondamentali che registrano qualsiasi evento nel sistema o nell'ambiente. 

In genere, un evento è un'azione che guida un'altra azione come parte di un processo. Un cliente che effettua un ordine, sceglie un posto a sedere su un volo o invia un modulo di registrazione sono tutti esempi di eventi. Un evento non deve necessariamente coinvolgere una persona; ad esempio, anche la segnalazione della temperatura in un determinato momento da parte di un termostato collegato è un evento.

L'event streaming offre alle applicazioni l'opportunità di rispondere istantaneamente alle nuove informazioni. Le piattaforme di dati in streaming come Apache Kafka consentono agli sviluppatori di costruire sistemi che consumano, elaborano e agiscono sui dati man mano che arrivano, mantenendo l'ordine e l'affidabilità di ogni evento.

Kafka si è evoluta nella piattaforma di event-streaming più diffusa, in grado di ingerire ed elaborare trilioni di record al giorno senza alcun ritardo nelle prestazioni, per supportare volumi scalabili. Oltre l'80% delle organizzazioni Fortune 500 utilizzano Kafka, tra cui Target, Microsoft, AirBnB e Netflix, per offrire esperienze ai clienti in tempo reale e basate sui dati.

L'origine di Apache Kafka

Nel 2011, LinkedIn ha sviluppato Apache Kafka per soddisfare la crescente esigenza dell'azienda di un sistema ad alto rendimento e bassa latenza in grado di gestire enormi volumi di dati sugli eventi in tempo reale. Costruito utilizzando Java e Scala, Kafka è stato successivamente reso open source e donato alla Apache Software Foundation.

Mentre le organizzazioni già supportavano o utilizzavano i tradizionali sistemi di coda di messaggi (ad esempio, Amazon SQS di AWS), Kafka ha introdotto un'architettura di messaggistica fondamentalmente diversa.

A differenza delle code di messaggi convenzionali che eliminano i messaggi dopo la lettura, Kafka conserva i messaggi per una durata configurabile, consentendo a più consumatori di leggere gli stessi dati in modo indipendente. Questa funzionalità rende Kafka ideale per la messaggistica e il sourcing di eventi, l'elaborazione di stream e la creazione di pipeline di dati in tempo reale.

Oggi Kafka è diventato lo standard de facto per l'event streaming in tempo reale. I settori che utilizzano Kafka includono finanza, e-commerce, telecomunicazioni e trasporti, dove la capacità di gestire grandi volumi di dati in modo rapido e affidabile è essenziale.

Come funziona Apache Kafka

Kafka è una piattaforma distribuita; funziona come un cluster tollerante ai guasti e ad alta disponibilità che può estendersi su più server e persino su più data center.

Kafka ha tre principali funzionalità:

  1. Consente alle applicazioni di pubblicare o iscriversi a dati o stream di eventi.
  2. Memorizza i record con precisione nell'ordine in cui sono stati registrati, con uno storage resistente ai guasti e durevole.
  3. Elabora i record in tempo reale man mano che si verificano.

I produttori (applicazioni o argomenti) scrivono i record in argomenti denominati log che memorizzano i record nell'ordine in cui si sono verificati l'uno rispetto all'altro. Gli argomenti vengono quindi suddivisi in partizioni e distribuiti all'interno di un cluster di broker (server) Kafka.

All'interno di ogni partizione, Kafka mantiene l'ordine dei record e li memorizza in modo duraturo su disco per un periodo di retention configurabile. Sebbene l'ordine sia garantito all'interno di una partizione, non tra le partizioni. In base alle esigenze dell'applicazione, i consumatori possono leggere indipendentemente da queste partizioni in tempo reale o da un offset specifico.

Kafka garantisce l'affidabilità tramite la replica delle partizioni. Ogni partizione ha un leader (su un broker) e uno o più follower (repliche) su altri broker. Questa replica aiuta a tollerare guasti dei nodi senza perdita di dati.

Storicamente, Kafka si affidava ad Apache ZooKeeper, un servizio di coordinamento centralizzato per i broker distribuiti. ZooKeeper assicurava che i broker Kafka rimanessero sincronizzati, anche in caso di fallimento di alcuni broker. Nel 2011, Kafka ha introdotto la modalità KRaft (Kafka Raft Protocol), eliminando la necessità di ZooKeeper e consolidando questi compiti nei broker Kafka stessi. Questo spostamento riduce le dipendenze esterne, semplifica l'architettura e rende i cluster Kafka più tolleranti agli errori e più facili da gestire e scalare.

Veduta aerea di uno snodo di autostrade

Rimani con la testa nel cloud 


Ricevi la newsletter settimanale Think per una guida esperta sull'ottimizzazione delle impostazioni multicloud nell'era dell'AI.

API di Apache Kafka

Gli sviluppatori possono sfruttare le capacità di Kafka attraverso quattro application programming interface (API) principali:

  1. Producer API
  2. API per i consumatori
  3. Streams API
  4. Connector API
Producer API

La Producer API consente ad un'applicazione di pubblicare un flusso in un argomento Kafka. Una volta che un record è stato scritto su un argomento, non può essere modificato o eliminato. Rimane invece nell'argomento per un periodo di tempo preconfigurato, per due giorni o fino all'esaurimento dello storage.

API per i consumatori

La Consumer API abilita un'applicazione a iscriversi a uno o più argomenti e ad acquisire ed elaborare lo stream memorizzato nell'argomento. Può lavorare con i record del topic in tempo reale o acquisire ed elaborare i record passati.

Streams API

Questa API si basa sulle Producer e Consumer API e aggiunge funzionalità di elaborazione complesse che consentono a un'applicazione di eseguire un'elaborazione continua, front-to-backstream. In particolare, la Streams API prevede l'utilizzo di record di uno o più argomenti, l'analisi, l'aggregazione o la trasformazione secondo necessità e la pubblicazione degli stream risultanti sugli stessi argomenti o su altri argomenti.

Sebbene le Producer e Consumer API possano essere utilizzate per una semplice elaborazione di stream, la Streams API consente lo sviluppo di applicazioni di event streaming più sofisticate.

Connector API

Questa API consente agli sviluppatori di creare connettori, produttori o consumatori riutilizzabili, che semplificano e automatizzano l'integrazione di una fonte di dati in un cluster Kafka.

Casi d'uso di Apache Kafka

Gli sviluppatori utilizzano Kafka principalmente per creare due tipi di applicazioni:

  • Pipeline di dati in streaming in tempo reale
  • Applicazioni di streaming in tempo reale

Pipeline di dati in streaming in tempo reale

Applicazioni progettate specificamente per spostare milioni e milioni di dati o record di eventi tra sistemi aziendali, su larga scala e in tempo reale. Le app devono spostarli in modo affidabile, senza il rischio di danneggiamento, duplicazione dei dati o altri problemi che si verificano in genere quando si spostano volumi di dati così enormi ad alta velocità.

Ad esempio, gli istituti finanziari utilizzano Kafka per trasmettere migliaia di transazioni al secondo su gateway di pagamento, servizi di rilevamento delle frodi e sistemi contabili, garantendo un flusso di dati accurato e in tempo reale senza duplicazioni o perdite.

Applicazioni di streaming in tempo reale

Applicazioni che sono guidate da record o event streams e che generano flussi propri. Nel mondo dominato dal digitale, ci imbattiamo in queste app ogni giorno.

Gli esempi includono siti di e-commerce che aggiornano la disponibilità dei prodotti in tempo reale o piattaforme che forniscono contenuti e annunci personalizzati in base all'attività degli utenti in tempo reale. Kafka guida queste esperienze trasmettendo le interazioni degli utenti direttamente in analytics e motori di raccomandazione.

Altri casi d'uso di Apache Kafka

  • Microservizi: Kafka facilita la comunicazione tra microservizi abilitando la messaggistica asincrona basata sugli eventi. Questa caratteristica consente ai servizi di attivare azioni su altri servizi senza essere strettamente associati, supportando architetture di sistema scalabili e disaccoppiate.
  • Ambienti cloud-native containerizzati: Kafka si integra perfettamente con le piattaforme cloud-native utilizzando Docker per la containerizzazione e Kubernetes per l'orchestrazione dei container. Questa configurazione supporta una comunicazione scalabile, tollerante ai guasti e basata sugli eventi, riducendo al minimo la necessità di una gestione manuale dell'infrastruttura. Kafka può scalare e ripristinare automaticamente i guasti all'interno di Kubernetes, rendendolo ideale per ambienti di cloud computing dinamici che eseguono diversi carichi di lavoro applicativi.
  • Data lake e data warehouse: Kafka funge da pipeline di dati in tempo reale tra fonti di dati e piattaforme di archiviazione, come data lake o data warehouse. Questa funzionalità consente lo streaming di grandi volumi di dati per l'acquisizione e l'analisi tempestive, il che è essenziale per i moderni workflow di analisi e business intelligence.
  • Gestione dei dati IoT (Internet of Things): Kafka è adatto per l'elaborazione di flussi di dati continui da dispositivi IoT, consentendo il routing in tempo reale di dati ad alto rendimento e bassa latenza verso destinazioni come database, motori di analytics o strumenti di monitoraggio. Questa funzionalità supporta applicazioni sensibili al fattore tempo in settori come la produzione e l'assistenza sanitaria.
webMethods Hybrid Integration

Reinventa l'integrazione per l'era dell'AI

IBM Web Methods Hybrid Integration mostra come le aziende possono connettere senza problemi applicazioni cloud e on-premise, consentendo una trasformazione digitale agile e scalabile. 

L'ecosistema Apache Kafka

Kafka si integra con numerose altre tecnologie, molte delle quali fanno parte della Apache Software Foundation (ASF). Le organizzazioni in genere utilizzano queste tecnologie in architetture più ampie basate su eventi, elaborazione di stream o soluzioni di analytics dei big data.

Alcune di queste tecnologie sono open source, mentre Confluent, una piattaforma costruita attorno a Kafka, offre caratteristiche di livello aziendale e servizi gestiti per il trattamento dei dati in tempo reale su larga scala. Aziende come IBM, Amazon Web Services e altre offrono soluzioni basate su Kafka (ad esempio, IBM Event Streams, Amazon Kinesis) che si integrano con Kafka per l'event streaming scalabile.

L'ecosistema Apache Kafka comprende:

  • Apache Spark
  • Apache NiFi
  • Apache Flink
  • Apache Hadoop
  • Apache Camel
  • Apache Cassandra

Apache Spark

Apache Spark è un motore di analytics per trattamento dei dati su larga scala. È possibile utilizzare Spark per eseguire analytics sugli stream forniti da Apache Kafka e per produrre applicazioni di elaborazione dei flussi in tempo reale, come l'analisi del clickstream.

Apache NiFi

Apache NiFi è un sistema di gestione del flusso di dati con un'interfaccia visiva drag and drop. Poiché NiFi può essere eseguito come produttore e consumatore Kafka, è uno strumento ideale per gestire le sfide del flusso di dati che Kafka non può affrontare.

Apache Flink

Apache Flink è un motore per eseguire calcoli su larga scala su event streams con velocità costantemente elevate e bassa latenza. Flink può ingerire stream come consumatore di Kafka, eseguire operazioni in tempo reale sulla base di questi stream e pubblicare i risultati per Kafka o un'altra applicazione.

Apache Hadoop

Apache Hadoop è un framework che consente di memorizzare enormi quantità di dati in un cluster di computer da utilizzare nell'analytics dei big data, nel machine learning,nel data mining e in altre applicazioni basate sui dati che elaborano dati strutturati e dati non strutturati. Kafka viene spesso utilizzato per creare una pipeline di dati di streaming in tempo reale verso un cluster Hadoop.

Apache Camel

Apache Camel è un framework di integrazione con un motore di routing e mediazione basato su regole. Supporta Kafka come componente, consentendo una facile integrazione dei dati con altri sistemi (ad esempio database e code di messaggistica), consentendo così a Kafka di entrare a far parte di un'architettura più ampia basata sugli eventi.

Apache Cassandra

Apache Cassandra è un database NoSQL altamente scalabile progettato per gestire grandi quantità di dati su molti server commodity senza alcun punto di guasto singolo.

Kafka è comunemente utilizzato per trasmettere dati a Cassandra per l'ingestione di dati in tempo reale e per la creazione di applicazioni scalabili e tolleranti agli errori.

Kafka vs RabbitMQ

RabbitMQ è un popolare broker di messaggi open source che consente alle applicazioni, ai sistemi e ai servizi di comunicare traducendo i protocolli di messaggistica. Da quando Kafka è nato come broker di messaggi (e può ancora essere utilizzato come tale) e RabbitMQ supporta un modello di messaggistica pubblica/ad iscrizione (tra gli altri), Kafka e RabbitMQ vengono spesso confrontati come alternative. Tuttavia, hanno scopi diversi e sono progettati per affrontare vari tipi di casi d'uso.  Ad esempio, gli argomenti di Kafka possono avere più iscritti, mentre ogni messaggio RabbitMQ può averne solo uno. Inoltre, gli argomenti di Kafka sono durevoli, mentre i messaggi RabbitMQ vengono eliminati una volta letti.

Quando si sceglie tra una di esse, è essenziale considerare le esigenze specifiche dell'applicazione, ad esempio il throughput, la durabilità dei messaggi e la latenza. Kafka è adatto per l'event streaming su larga scala, mentre RabbitMQ eccelle in scenari che richiedono un routing flessibile dei messaggi e un'elaborazione a bassa latenza.

Apache Kafka e AI open source

L'integrazione di Apache Kafka e dell'AI open source trasforma il modo in cui le organizzazioni gestiscono i dati e l'intelligenza artificiale in tempo reale. Se combinato con strumenti di AI open source, Kafka consente l'applicazione di modelli AI pre-addestrati ai dati in tempo reale, supportando il processo decisionale e l'automazione in tempo reale.

L'AI open source ha reso l'intelligenza artificiale più accessibile e Kafka fornisce l'infrastruttura necessaria per elaborare i dati in tempo reale. Questa configurazione elimina la necessità di elaborazione in batch, consentendo alle aziende di agire immediatamente sui dati non appena vengono prodotti.

Ad esempio, un'azienda di e-commerce potrebbe utilizzare Kafka per trasmettere in streaming le interazioni con i clienti, come i clic o le visualizzazioni dei prodotti, man mano che si verificano. I modelli AI preformati elaborano quindi questi dati in tempo reale, fornendo consigli personalizzati o offerte mirate. Kafka gestisce il flusso di dati, mentre i modelli AI si adattano in base ai dati in arrivo, migliorando il coinvolgimento del cliente.

Combinando il trattamento dei dati in tempo reale con i modelli AI, le organizzazioni possono prendere decisioni più rapide nel rilevamento delle frodi, nella manutenzione predittiva o nella determinazione dei prezzi, abilitando sistemi più reattivi ed efficienti.

Benefici di Apache Kafka

  • Trattamento dei dati in tempo reale: Kafka consente pipeline di trattamento dei dati in tempo reale e applicazioni di streaming. Consente ai sistemi di pubblicare, iscriversi ed elaborare flussi di record man mano che si verificano, supportando casi d'uso come monitoraggio, avvisi e analytics.
  • Elevate prestazioni e scalabilità: gli argomenti Kafka vengono partizionati e replicati in modo tale da poter essere scalati per servire grandi volumi di consumatori simultanei senza influire sulle prestazioni.
  •  Sicurezza e conformità: Apache Kafka supporta la crittografia dei dati sia in transito che inattivi, insieme a controlli di accesso configurabili. Queste caratteristiche aiutano le organizzazioni a proteggere i dati sensibili e ad allinearsi agli standard di conformità dei settori.
  • Alta disponibilità: Kafka garantisce un'elevata disponibilità attraverso la data replication tra più broker. I messaggi rimangono disponibili anche in caso di guasto di un nodo e il sistema continua a funzionare senza perdite di dati o tempi di inattività.
  •  Gestione semplificata: Kafka include strumenti di monitoraggio, configurazione e automazione, che aiutano a ridurre l'onere operativo. Si integra bene con le piattaforme di orchestrazione e gestione, rendendo l'implementazione e la scalabilità più gestibili. Kafka espone anche metriche dettagliate sulle prestazioni e sullo stato di salute tramite JMX (Java Management Extensions), consentendo ai team di tenere traccia del throughput, della latenza, dello stato dei broker e del ritardo dei consumatori, che sono critici per un monitoraggio efficace e una pianificazione della capacità.
  • Integrazione estesa: con un'ampia gamma di connettori e API client, Kafka si integra facilmente con database, file system e servizi cloud. Ad esempio, Kafka Connect facilita lo spostamento dei dati senza interruzioni tra i sistemi, mentre Kafka Streams consente l'elaborazione dei flussi in tempo reale, migliorando ulteriormente le funzionalità di integrazione.
Soluzioni correlate
IBM Event Streams

IBM Event Streams è un software per lo streaming di eventi basato sull'open source Apache Kafka. È disponibile come servizio totalmente gestito su IBM Cloud o in self-hosting.

Esplora Event Streams
Software e soluzioni di integrazione

Sblocca il potenziale aziendale con le soluzioni di integrazione di IBM, collegando applicazioni e sistemi per accedere rapidamente e in modo sicuro ai dati d'importanza critica.

Esplora le soluzioni di integrazione
Servizi di consulenza cloud

Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM.

Esplora i servizi di consulenza cloud
Prossimi passi

IBM Event Streams è un software per lo streaming di eventi basato sull'open source Apache Kafka. È disponibile come servizio totalmente gestito su IBM Cloud o in self-hosting.

Esplora Event Streams Ottieni maggiori informazioni