2015-10-27 21 views
5

Come possiamo utilizzare il protocollo mqtt con kafka come broker di messaggi?utilizzando il protocollo mqtt con kafka come broker di messaggi

I client (app android/ios/desktop java ecc.) Produrranno e consumeranno messaggi utilizzando le librerie lato client phao mqtt che sono disponibili in diverse lingue usando kafka come broker di messaggi.

Qualche consiglio?

risposta

1

Questa non è una buona idea. Un client MQTT di solito è molto leggero con risorse limitate. Questi dispositivi o IoT hanno poca memoria/potenza della CPU. Un cliente Kafka è generalmente pesante. Ad esempio, il client Kafka deve tenere traccia dell'offset. Richiede anche l'interazione con Zookeepers. In breve, Kafka non è adatto come broker MQTT. Stai meglio scegliendo un broker MQTT come Mosquito.

3

AFAIK, non esiste un connettore MQTT "ufficiale" per Kafka. Ma puoi usare il ponte MQTT-Kafka. Per l'ispirazione guarda https://github.com/km4rcus/mqttKafkaBridge (Si noti che c'è un bug in questa implementazione: gli argomenti di kafka non possono contenere "/" quindi probabilmente vorrai sostituirli con "_" nel messaggioArrivato nel file Bridge.java)

Nota che questo codice è solo una soluzione molto semplice, non scalabile. È una buona idea scrivere probabilmente la tua implementazione personalizzata in base alle tue aspettative. Ma dovresti mantenerlo il più semplice possibile - è un singolo punto di errore. Finché i dati vengono acquisiti in Kafka, ottieni delle garanzie ma non ottieni alcuna garanzia dal broker MQTT. Quando il bridge si blocca, stai semplicemente perdendo i tuoi dati ...

0

Come menzionato da @Miroslav Prymek non c'è un ponte ufficiale. Quello è stato creato da Jacklund. Ho aggiornato il bridge per supportare Kafka v 0.8.1.1. Contiene anche un binario precompilato compatibile con JRE 1.7. Ecco il link allo MQTT Kafka Bridge.

0

È possibile utilizzare Mosca, un adattatore mqtt scritto in javascript.

Mosca è un mediatore MQTT node.js, che può essere usato indipendente o incorporato in un'altra applicazione Node.js

Mosca supporta backend diversi come redis e mongodb, ma anche Kafka. Un'applicazione Kafka MQTT Bridge è included in the Mosca examples.

This article on linkedin descrive la soluzione in modo più completo.

Disclaimer: Sono un contributore dell'applicazione di esempio Mosca Kafka Bridge.

4

È possibile utilizzare un connettore sorgente Kafka che trasmetterà dati da un broker MQTT come Mosquitto in un cluster Kafka. Vedi https://github.com/evokly/kafka-connect-mqtt

Il modo più semplice per eseguire il connettore è in modalità standalone, in cui una singola istanza verrà eseguita sul cluster Kafka su un singolo nodo. È anche possibile eseguirlo in modalità distribuita (anche se con molta più configurazione) e questo distribuirà il connettore attraverso il cluster per una maggiore velocità effettiva. Nella modalità distribuita è possibile progettare una topologia che consenta il ridimensionamento orizzontale, il throughput parallelo e l'alta disponibilità. L'implementazione di ulteriori garanzie richiede ulteriori bilanciamenti del carico, più broker MQTT e ultimi scenari di testamento e testamento per far fronte ai crash dei connettori, ma questo probabilmente non rientra nell'ambito di questa domanda.

L'utilizzo dell'approccio connettore ha il vantaggio del cluster Kafka assicurandosi che il connettore sia attivo e riavviandolo se necessario. La modalità distribuita offre ancora più vantaggi.

Problemi correlati