Che cosa è Kafka?

Questa API asincrona viene implementata utilizzando il protocollo Apache Kafka. È una piattaforma di eventi di pubblicazione-sottoscrizione progettata per essere tollerante ai malfunzionamenti, fornendo una piattaforma con velocità di trasmissione elevata e bassa latenza per la gestione dei feed di dati in tempo reale.

Kafka viene eseguito come un cluster di uno o più server (broker Kafka). Il carico è bilanciato nel cluster distribuendolo tra i server.

Concetti chiave

Argomento

Un flusso di messaggi viene archiviato in categorie denominate argomenti. Gli argomenti sono rappresentati come canali in un documento AsyncAPI. Ogni argomento si articola in una o più partizioni. Ogni partizione è un elenco ordinato di messaggi. Ai messaggi in una partizione viene assegnato un numero crescente monotono denominato offset.

Messaggio/Record

L'unità di dati in Kafka che comprende due parti: intestazioni e valore. Le intestazioni sono comunemente utilizzate per i dati relativi al messaggio e il valore è il corpo del messaggio.

Producer

Un processo che pubblica i flussi di messaggi negli argomenti Kafka. Un producer può pubblicare in uno o più argomenti e può facoltativamente scegliere la partizione in cui sono archiviati i dati.

Consumer

Un processo che consuma i messaggi da argomenti Kafka ed elabora il feed dei messaggi. Un consumer può utilizzare da uno o più argomenti o partizioni.

Gruppo di consumer

Un gruppo denominato di uno o più consumer che insieme consumano i messaggi da una serie di argomenti. Ciascun consumatore nel gruppo legge i messaggi da specifiche partizioni a cui è assegnato. Ogni partizione è assegnata a un solo consumer nel gruppo. L'assegnazione è controllata dalle proprietà 'client.id' e 'group.id' del consumer.

Utilizzo da questa API

Si richiederà a un client Kafka di connettersi ed effettuare una sottoscrizione. Le librerie client Kafka sono disponibili per una varietà di linguaggi di programmazione e il codice di esempio per ogni canale è un punto di partenza per utilizzare un client Kafka Java per utilizzare eventi utilizzando un consumer Kafka.