¿Cuál es la diferencia entre el corredor MQTT y Apache Kafka?
apache-kafka iot (2)
El motivo principal detrás de Kafka es la escalabilidad.
MQTT es un protocolo con especificación pública para comunicaciones livianas de intermediario de clientes / mensajes, que permite intercambios de publicación / suscripción. Existen múltiples implementaciones de bibliotecas y agentes de clientes (Mosquitto, JoramMQ ...) y son virtualmente compatibles. MQTT simplemente especifica el transporte, y vagamente la parte de la aplicación (es decir, cómo se manejan y posiblemente se almacenan los datos, cómo están autorizados los clientes ...). La especificación no está clara si los datos consumidos en un tema son solo en tiempo real o posiblemente persistentes. La especificación no indica nada sobre cómo el intermediario de mensajes que implementa MQTT podría / debería escalar.
Por otro lado, Apache Kafka es un intermediario de mensajes basado en un "registro de confirmación" interno: su enfoque es almacenar grandes cantidades de datos en el disco, y permitir el consumo en tiempo real o más tarde (siempre que los datos todavía estén disponibles en el disco). ). Está diseñado para ser desplegable como un grupo de nodos múltiples, con buenas propiedades de escalabilidad. Kafka utiliza su propio protocolo de red.
Por lo tanto, está comparando dos cosas diferentes aquí: un protocolo estándar de publicación / suscripción (con implementaciones múltiples) y un software específico de almacenamiento / distribución de mensajes, vagamente de la misma familia con su propio protocolo.
Yo diría que si necesita almacenar una gran cantidad de mensajes, para garantizar el procesamiento por lotes, mire más a Kafka. Si tiene muchos clientes / aplicaciones que intercambian mensajes en tiempo real sobre muchos temas independientes, consulte las implementaciones del intermediario de mensajes MQTT (o incluso AMQP).
Estoy desarrollando una aplicación de mensajería móvil. Estaba pasando por la tecnología necesaria y encontré dos MQTT y Apache Kafta. Para mí, ambos parecen hacer lo mismo de la misma manera (en términos de suscripción y publicación de un tema).
He oído que MQTT es apto para móviles, ya que es muy ligero. Básicamente, ¿cuál es la diferencia entre estos dos y cuáles son las ventajas de cada uno sobre el otro?
MQTT es un protocolo estándar (con muchas implementaciones). Kafka (que también es un protocolo) se usa normalmente descargándolo del sitio web de Apache o, por ejemplo, una imagen de Confluent Docker.
Es como comparar manzanas y naranjas, ambas existen por razones muy diferentes.
La mayoría de los casos de uso que veo en entornos de IoT combinan tanto MQTT como Apache Kafka. Los dispositivos de borde hablan el protocolo MQTT (por los beneficios que tiene en los entornos de borde. Luego se envían a Apache Kafka para que los eventos ingresen al resto de la arquitectura empresarial).
Puede hacerlo mediante un MQTT Broker como HiveMQ + Apache Kafka o mediante un MQTT Proxy (para que no necesite el MQTT Broker). Ambas opciones tienen compensaciones, por supuesto.
Vea este ejemplo de cómo combinar MQTT con Apache Kafka . O vaya directamente al código Github: " Deep Learning UDF for KSQL for Streaming Anomaly Detection of MQTT IoT Sensor Data ".
También creé una demostración en vivo sobre cómo integrar Apache Kafka y MQTT .