Il motivo principale dietro kafka è ridimensionamento.
MQTT è un protocollo con specifiche pubbliche per comunicazioni di broker client/messaggi leggeri, consentendo scambi di pubblicazione/sottoscrizione. Esistono molteplici implementazioni di librerie client e broker (Mosquitto, JoramMQ ...) e sono praticamente compatibili. MQTT specifica solo il trasporto, e vagamente la parte dell'applicazione (cioè come i dati vengono gestiti e possibilmente archiviati, come i clienti sono autorizzati ...). Le specifiche non sono chiare se i dati consumati su un argomento sono solo in tempo reale o se possibile persistenti. La specifica non dice nulla su come il broker dei messaggi che implementa MQTT potrebbe/dovrebbe ridimensionare.
D'altra parte, Apache Kafka è un broker di messaggi basato su un "registro di commit" interno: il suo obiettivo è archiviare enormi quantità di dati su disco e consentire il consumo in tempo reale o successivo (a condizione che i dati siano ancora disponibile su disco). È progettato per essere distribuibile come cluster di più nodi, con buone proprietà scalabili. Kafka usa il proprio protocollo di rete.
Quindi si stanno confrontando due cose diverse: un protocollo pub/sub standard (con più implementazioni) e uno specifico software di archiviazione/distribuzione di messaggi, vagamente della stessa famiglia con il proprio protocollo.
Direi che se è necessario memorizzare una quantità massiccia di messaggi, per garantire l'elaborazione in batch, guarda più a Kafka. Se hai molti client/app che scambiano messaggi in tempo reale su molti argomenti, guarda più alle implementazioni dei broker di messaggi MQTT (o anche AMQP).
fonte
2016-05-24 07:30:49
Stackoverflow non è la sede per chiedere confronti di tecnologie – hardillb