2016-05-23 26 views
6

Sto sviluppando un'app di messaggistica mobile. Stavo passando attraverso la tecnologia necessaria e ho trovato due MQTT & Apache Kafta. A me sembra che entrambi facciano la stessa cosa allo stesso modo (in termini di sottoscrizione di una pubblicazione & a un argomento).Qual è la differenza tra il broker MQTT e Apache Kafka

Ho sentito che MQTT è adatto per i cellulari in quanto è molto leggero? Quindi, in pratica, qual è la differenza tra questi due e quali sono i vantaggi di ciascuno su altri?

+0

Stackoverflow non è la sede per chiedere confronti di tecnologie – hardillb

risposta

16

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).

+0

kafta è ideale per messaggi di app per dispositivi mobili come whatsapp? – manish

+0

sì, perché no! dipende da noi come progettiamo l'architettura .. –

+0

perché ho chiesto perché sono venuto a sapere che MQTT è 'leggero' e ingombro ridotto quindi adatto ai dispositivi mobili. Che mi dici di kafta? – manish

Problemi correlati