Vai al contenuto principale

Apache Kafka per Principianti: una Guida Completa

Esplora Apache Kafka con la nostra guida per principianti. Impara le basi, inizia subito e scopri funzionalità avanzate e applicazioni reali di questo potente sistema di eventi-
Aggiornato 3 giu 2026  · 8 min leggi

Microservizi e architetture event-based definiscono ormai il panorama delle applicazioni moderne. I giorni dell'elaborazione a lotti sono finiti. Per soddisfare le esigenze di velocità e disponibilità, gli sviluppatori puntano a una quasi real time-ness e a un'architettura applicativa completamente disaccoppiata.

Le applicazioni disaccoppiate utilizzano di solito un sistema di gestione degli eventi per facilitare l'integrazione tra servizi diversi. Un altro impiego di un event store è nelle architetture basate su event sourcing, dove tutta la logica applicativa è espressa in termini di eventi. È qui che entra in gioco Apache Kafka.

In sostanza, Kafka è un framework per event store distribuiti e stream processing che può essere usato come message broker, event store, sistema di gestione code, ecc. Puoi leggere il nostro confronto tra Kafka e Amazon SQS in una guida separata e scoprire come funzionano le partizioni di Kafka nel nostro tutorial.

Se vuoi creare un piano di studio, dai un'occhiata a questo blog su come imparare Apache Kafka.

TL;DR

  • Apache Kafka è una piattaforma open-source distribuita per lo streaming di eventi, sviluppata originariamente in LinkedIn, oggi usata da oltre l'80% delle aziende Fortune 100
  • Concetti chiave: broker (server), topic (categorie di dati), producer (scrittori) e consumer (lettori)
  • Kafka gestisce milioni di messaggi al secondo con tolleranza ai guasti integrata, scalabilità orizzontale e replay dei messaggi
  • Funzionalità avanzate includono Kafka Streams per l'elaborazione in tempo reale e Kafka Connect per l'integrazione dati con sistemi esterni
  • Casi d'uso comuni: activity tracking, messaging tra microservizi, log aggregation, stream processing e raccolta metriche

Che cos'è Apache Kafka?

Apache Kafka è un framework open-source distribuito per l'event streaming, sviluppato in LinkedIn da un team che includeva Jay Kreps, Jun Rao e Neha Narkhede. Lo strumento è ottimizzato per acquisire ed elaborare dati in streaming in tempo reale; per questo può essere usato per implementare pipeline dati ad alte prestazioni, applicazioni di analytics in streaming e servizi di integrazione dati.

Dopo aver archiviato gli eventi, la piattaforma di streaming degli eventi li indirizza ai servizi pertinenti. Gli sviluppatori possono scalare e mantenere un sistema di questo tipo senza dipendere da altri servizi. Poiché Kafka è un pacchetto all-in-one che può fungere da message broker, event store o framework di stream processing, è perfetto per questo tipo di necessità.

Grazie all'elevata capacità e durabilità, centinaia di sorgenti dati possono fornire simultaneamente enormi flussi continui di dati che possono essere elaborati in modo sequenziale e progressivo dal sistema di message broker di Apache Kafka.

Kafka vs. broker di messaggi tradizionali

Kafka differisce da broker di messaggi tradizionali come RabbitMQ in diversi aspetti fondamentali:

Funzionalità Apache Kafka Broker tradizionali (es. RabbitMQ)
Retention dei messaggi Configurabile (da giorni ad anni); i messaggi persistono dopo il consumo Messaggi eliminati dopo l'acknowledgment del consumer
Modello di consumo Basato su pull; i consumer leggono al proprio ritmo Basato su push; il broker consegna ai consumer
Throughput Milioni di messaggi al secondo Migliaia o decine di migliaia al secondo
Ordinamento Garantito all'interno di una partition Varia in base all'implementazione
Replay I consumer possono rileggere i messaggi passati a qualsiasi offset Non supportato dopo la consegna
Caso d'uso principale Event streaming, log aggregation, pipeline in tempo reale Code di task, pattern request-reply

Perché dovrei scegliere Kafka?

Vantaggi chiave di Apache Kafka:

Alto throughput

L'architettura ben progettata di Kafka, che include data partitioning, batch processing, tecniche zero-copy e log append-only, gli consente di raggiungere un elevato throughput e gestire milioni di messaggi al secondo, adattandosi a scenari di dati ad alta velocità e alto volume. Il protocollo di comunicazione leggero che favorisce un'interazione efficace client-broker rende così possibile lo streaming di dati in tempo reale.

Scalabilità

Apache Kafka fornisce il bilanciamento del carico tra server partizionando un topic in più partition. Questo permette di distribuire i cluster di produzione tra aree geografiche o availability zone e scalarli in su o in giù in base alle esigenze. In altre parole, Apache Kafka può essere facilmente scalato per gestire trilioni di messaggi al giorno su un gran numero di partition.

Bassa latenza

Apache Kafka utilizza un cluster di server con bassa latenza (fino a 2 millisecondi) per consegnare i messaggi in modo efficiente a un throughput limitato dalla rete, disaccoppiando i flussi di dati.

Durabilità e affidabilità

Apache Kafka migliora tolleranza ai guasti e durabilità dei dati in due modi chiave:

  • Distribuisce l'archiviazione dei flussi di dati in un cluster fault-tolerant per proteggere dai guasti dei server
  • Salva i messaggi su disco e offre replica intra-cluster.

Alta disponibilità

Grazie ai broker basati su cluster, Kafka rimane operativo durante un'interruzione di un server. Funziona perché quando uno dei server ha problemi, Kafka è abbastanza intelligente da inviare le richieste a broker diversi.

Componenti fondamentali di Kafka

Apache Kafka permette di analizzare i dati in tempo reale, archiviare i record nell'ordine in cui sono stati creati e pubblicarli/sottoscriverli.

image1.png

I componenti fondamentali di Apache Kafka

Apache Kafka è un cluster orizzontalmente scalabile di server commodity che elabora dati in tempo reale da più sistemi e applicazioni "producer" (ad es. logging, monitoring, sensori e applicazioni Internet of Things) e li rende disponibili a più sistemi e applicazioni "consumer" (ad es. analytics in tempo reale) con latenza molto bassa – come mostrato nello schema sopra.

Nota che applicazioni che dipendono dall'elaborazione dati in tempo reale e sistemi di analytics possono essere entrambe considerate consumer. Per esempio, un'applicazione per micromarketing o logistica basata sulla posizione.

Ecco alcuni termini chiave da conoscere per capire meglio i componenti fondamentali di Kafka:

  • Broker sono server nel cluster che archiviano i dati e servono i client.
  • Topic sono categorie o feed su cui vengono pubblicati i record. Nota che esistono due tipi di topic: compacted e regular. I record archiviati nei topic compacted non sono limitati da tempo o spazio. I messaggi più vecchi del topic con la stessa chiave vengono aggiornati da messaggi più recenti e Apache Kafka non rimuove il messaggio più recente a meno che non sia l'utente a farlo. Al contrario, i record archiviati nei topic regular possono essere configurati per scadere, consentendo di eliminare i dati obsoleti e liberare spazio di archiviazione.
  • Producer sono applicazioni client che pubblicano (scrivono) eventi sui topic Kafka.
  • Consumer sono applicazioni che leggono ed elaborano eventi dai topic Kafka. Grazie alla Streams API per Apache Kafka, si possono scrivere programmi Java che recuperano dati dai Topic e restituiscono i risultati ad Apache Kafka. Anche sistemi esterni di stream processing come Apache Spark, Apache Apex, Apache Flink, Apache NiFi e Apache Storm possono elaborare questi flussi di messaggi.
  • Kafka usa una libreria client chiamata "Streams" per creare microservizi e applicazioni in cui i dati sono archiviati in cluster per input e output.

Per iniziare con Kafka

Importante (aggiornamento 2025): Apache Kafka 4.0, rilasciato a marzo 2025, ha rimosso completamente ZooKeeper a favore della modalità KRaft (Kafka Raft). Le istruzioni di setup qui sotto usano ZooKeeper e si applicano solo a Kafka 3.x. Per Kafka 4.x, ZooKeeper non è più necessario né supportato. Se parti da zero, valuta di usare Docker con modalità KRaft per un setup più semplice.

Spesso si consiglia di avviare Apache Kafka 3.x con Zookeeper per la massima compatibilità. Inoltre, Kafka può incorrere in diversi problemi quando installato su Windows perché non è progettato nativamente per questo sistema operativo. Di conseguenza, si consiglia di avviare Apache Kafka su Windows usando WSL2 o Docker.

Non è consigliato usare la JVM per eseguire Kafka su Windows poiché manca di alcune caratteristiche POSIX tipiche di Linux. Prima o poi incontrerai difficoltà se provi a eseguire Kafka su Windows senza WSL2.

Detto ciò, il primo passo per installare Apache Kafka su Windows è installare WSL2.

Passaggio 1: Installa WSL2

WSL2, ovvero Windows Subsystem for Linux 2, dà al tuo PC Windows accesso a un ambiente Linux senza bisogno di una macchina virtuale.

La maggior parte dei comandi Linux è compatibile con WSL2, avvicinando il processo d'installazione di Kafka alle istruzioni fornite per Mac e Linux.

Consiglio: Assicurati di usare Windows 10 versione 2004 o superiore (Build 19041 e successive) prima di installare WSL2. Premi il tasto Windows + R, digita "winver", quindi fai clic su OK per vedere la versione di Windows.

Il modo più semplice per installare Windows Subsystem for Linux (WSL) è eseguire il seguente comando in un PowerShell o Prompt dei comandi con privilegi di amministratore e poi riavviare il computer:

wsl --install

Nota che ti verrà chiesto di creare un account utente e una password per la nuova distribuzione Linux installata.

Segui i passaggi sul sito Microsoft Docs se rimani bloccato.

Passaggio 2: Installa Java

Se Java non è installato sulla tua macchina, dovrai scaricare l'ultima versione.

Passaggio 3: Installa Apache Kafka

Al momento di questo aggiornamento, l'ultima versione stabile di Apache Kafka è la 4.2.0, rilasciata a febbraio 2026. Kafka 4.0 (marzo 2025) ha sostituito ZooKeeper con la modalità KRaft per la gestione dei metadati. Per ottenere la versione stabile corrente, consulta la pagina dei download.

Scarica l'ultima versione dai Binary downloads.

Una volta completato il download, vai nella cartella in cui è stato scaricato Kafka ed estrai tutti i file dallo zip. Nota che abbiamo chiamato la nuova cartella "Kafka".

Passaggio 4: Avvia ZooKeeper

Zookeeper è richiesto per la gestione del cluster in Apache Kafka 3.x. Pertanto, Zookeeper deve essere avviato prima di Kafka. Non è necessario installare Zookeeper separatamente perché fa parte di Apache Kafka.

Apri il prompt dei comandi e vai alla directory root di Kafka. Da lì, esegui il seguente comando per avviare Zookeeper:

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

Passaggio 5: Avvia il server Kafka

Apri un altro prompt dei comandi ed esegui il seguente comando dalla root di Apache Kafka per avviare Apache Kafka:

.\bin\windows\kafka-server-start.bat .\config\server.properties

Passaggio 6: Crea un topic

Per creare un topic, avvia un nuovo prompt dei comandi dalla directory root di Kafka ed esegui il seguente comando:

.\bin\windows\kafka-topics.bat --create --topic MyFirstTopic --bootstrap-server localhost:9092

Questo creerà un nuovo topic Kafka chiamato "MyFirstTopic".

Nota: per confermare che sia stato creato correttamente, l'esecuzione del comando restituirà "Create topic <name of topic>."

Passaggio 7: Avvia il producer Kafka

Per inserire un messaggio nel topic Kafka, è necessario avviare un producer. Esegui il seguente comando:

.\bin\windows\kafka-console-producer.bat --topic MyFirstTopic --bootstrap-server localhost:9092

Passaggio 8: Avvia il consumer Kafka

Apri un altro prompt dei comandi dalla directory root di Kafka ed esegui il seguente comando per avviare il consumer Kafka:

.\bin\windows\kafka-console-consumer.bat --topic MyFirstTopic --from-beginning --bootstrap-server localhost:9092

Ora, quando un messaggio viene prodotto dal Producer, viene letto dal Consumer in tempo reale.

Un messaggio prodotto dal Producer e letto dal Kafka Consumer in tempo reale

Una GIF mostra un messaggio prodotto dal Producer e letto dal Kafka Consumer in tempo reale.

Hai appena creato il tuo primo topic Kafka e inviato un messaggio dal producer al consumer in tempo reale.

Funzionalità avanzate di Kafka

Kafka offre diverse funzionalità avanzate oltre al semplice passaggio di messaggi.

Kafka Streams

Con Apache Kafka, gli sviluppatori possono creare applicazioni di stream processing tolleranti ai guasti con Kafka Streams. Offre API e un Domain-Specific Language (DSL) ad alto livello per gestire, trasformare e valutare flussi continui di dati.

Alcune funzionalità chiave includono:

Stream processing

Kafka Streams rende possibile l'elaborazione in tempo reale di flussi di record. Ti permette di acquisire dati dai topic Kafka, elaborare e trasformare i dati, quindi restituire le informazioni elaborate ai topic Kafka. Lo stream processing consente analytics quasi in tempo reale, monitoraggio e arricchimento dei dati. Può essere applicato a singoli record o ad aggregazioni con window.

Event-time processing

Usando i timestamp associati ai record, puoi gestire record fuori ordine grazie al supporto di Kafka Streams per l'event-time processing. Fornisce operazioni di window con semantica event-time, consentendo window join, sessionizzazione e aggregazioni basate sul tempo.

Operazioni basate sul tempo e windowing

Kafka Streams offre diverse operazioni di windowing che permettono di effettuare calcoli su session window, tumbling window, sliding window e window a tempo fisso.

Trigger basati su eventi, analisi time-sensitive e aggregazioni basate sul tempo sono possibili tramite procedure con window.

Elaborazione stateful

Durante lo stream processing, Kafka Streams ti permette di mantenere e aggiornare lo stato. È fornito il supporto integrato per i state store. Nota: un state store è un archivio key-value che può essere aggiornato e interrogato all'interno di una topologia di elaborazione.

Operazioni stateful come join, aggregazioni e rilevamento di anomalie abilitano funzionalità avanzate di stream processing.

Exactly-once processing

Kafka Streams fornisce semantiche end-to-end per l'elaborazione exactly-once, garantendo che ogni record venga elaborato esattamente una volta, anche in caso di guasto. Ciò è ottenuto sfruttando le garanzie di durabilità integrate di Kafka e le funzionalità transazionali.

Kafka Connect

Il framework dichiarativo e plug-in per l'integrazione dati in Kafka si chiama Kafka Connect. È un componente open-source e gratuito di Apache Kafka che funge da hub dati centralizzato per un'integrazione semplice tra file system, database, indici di ricerca e key-value store.

La distribuzione Kafka include Kafka Connect di default. Per installarlo, devi solo avviare un processo worker.

Usa il seguente comando dalla directory root di Kafka per avviare il processo worker di Kafka Connect:

.\bin\windows\connect-distributed.bat 
.\config\connect-distributed.properties

Questo avvierà il worker di Kafka Connect in modalità distributed, abilitando alta disponibilità e scalabilità con l'esecuzione di numerosi worker in un cluster.

Nota: Il file .\config\connect-distributed.properties specifica le informazioni sul broker Kafka e altre proprietà di configurazione per Kafka Connect.

Kafka Connect usa dei connector per trasferire dati tra sistemi esterni e topic Kafka. I connector possono essere installati e configurati per soddisfare le tue esigenze specifiche di integrazione dati.

Per installare un connector è sufficiente scaricare e aggiungere il file JAR del connector alla directory plugin.path indicata nel file .\config\connect-distributed.properties.

È necessario creare un file di configurazione per il connector, in cui specificare la classe del connector e le altre caratteristiche. L'API REST di Kafka Connect e gli strumenti da riga di comando possono essere usati per creare e gestire i connector.

Quindi, per combinare dati da altri sistemi, devi configurare il Kafka Connector. Kafka Connect offre vari connector per integrare dati da diversi sistemi, come file system, code di messaggi e database. Seleziona un connector in base alle tue esigenze di integrazione - vedi la documentazione per l'elenco dei connector.

Applicazioni reali di Kafka

Ecco alcuni casi d'uso comuni di Apache Kafka.

Activity tracking

Un e-commerce online può usare Kafka per tracciare l'attività degli utenti in tempo reale. Ogni azione dell'utente, inclusa la visualizzazione di prodotti, l'aggiunta di articoli al carrello, gli acquisti, le recensioni, le ricerche e così via, può essere pubblicata come evento su specifici topic Kafka.

Altri microservizi possono archiviare o usare questi eventi per rilevamento frodi in tempo reale, reporting, offerte personalizzate e raccomandazioni.

Messaging

Con il suo throughput migliorato, il partitioning integrato, la replica, la tolleranza ai guasti e la scalabilità, Kafka è un valido sostituto dei broker di messaggi convenzionali.

Un'app per ride-hailing basata su microservizi può usarlo per facilitare lo scambio di messaggi tra vari servizi.

Per esempio, l'azienda di ride-booking potrebbe usare Kafka per comunicare con il servizio di driver-matching quando un passeggero effettua una prenotazione. Il servizio di driver-matching può quindi, in quasi tempo reale, trovare un autista in zona e rispondere con un messaggio.

Log aggregation

Tipicamente, questo comporta l'acquisizione di file di log fisici dai server e la loro archiviazione in una posizione centrale per l'elaborazione, come un file server o un data lake. Kafka astrae i dati come un flusso di messaggi e filtra le informazioni specifiche del file. Questo rende possibile l'elaborazione dei dati con latenza ridotta e facilita il consumo distribuito e le diverse sorgenti di dati.

Dopo che i log vengono pubblicati su Kafka, possono essere usati per il troubleshooting, il monitoraggio della sicurezza e il reporting di compliance da uno strumento di analisi dei log o da un sistema SIEM (Security Information and Event Management).

Stream processing

Diversi utenti Kafka elaborano i dati in pipeline di elaborazione a più stadi. I dati grezzi in input vengono prelevati dai topic Kafka, aggregati, arricchiti o altrimenti trasformati in nuovi topic per ulteriore consumo o elaborazione.

Per esempio, una banca può usare Kafka per elaborare transazioni in tempo reale. Ogni transazione avviata da un cliente viene quindi pubblicata come evento su un topic Kafka. Successivamente, un'applicazione può acquisire questi eventi, verificare e gestire le transazioni, bloccare quelle sospette e aggiornare istantaneamente i saldi dei clienti.

Metriche

Un provider di servizi cloud potrebbe usare Kafka per aggregare statistiche da applicazioni distribuite e generare flussi centralizzati in tempo reale di dati operativi. Metriche da centinaia di server, come consumo di CPU e memoria, numero di richieste, tassi di errore, ecc., potrebbero essere riportate a Kafka. Le applicazioni di monitoraggio potrebbero quindi usare queste metriche per identificare anomalie, inviare allerte e visualizzare in tempo reale.

Considerazioni finali

Apache Kafka è lo standard del settore per l'event streaming in tempo reale, usato da oltre l'80% delle aziende Fortune 100. Con Kafka 4.0 e la modalità KRaft, distribuire e gestire i cluster è più semplice rispetto alle versioni precedenti.

In questo articolo, ho trattato perché Kafka è importante, i suoi componenti fondamentali, un setup passo dopo passo, funzionalità avanzate come Kafka Streams e Kafka Connect, e applicazioni reali. Per continuare ad imparare, dai un'occhiata a:


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Argomenti

Inizia oggi il tuo percorso da Data Engineer!

Programma

Associate Data Engineer in Databricks

37 h
Learn data engineering on Databricks with SQL, Python, and Spark, and prepare for the Databricks Certified Data Engineer Associate certification.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro