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.