Estoy planeando comenzar a implementar el siguiente caso de uso de IoT.
Caso de uso
Los dispositivos IoT enviarán 100k mensajes / minuto a la puerta de enlace a través de repetidores y la puerta de enlace transferirá los mensajes a la nube. Quiero rastrear a los empleados en una organización. Los sensores se fijarán en su tarjeta de identificación. El sensor envía los datos relacionados con la ubicación (aprox. 15 KB / mensaje) a la puerta de enlace a través de repetidores. Es para el propósito analítico. Después de que los datos pasen a la nube, haré algunos análisis y los almacenaré en la base de datos y los mostraré en una página web. En base a estos datos analíticos, mostraré la ubicación actual del usuario y también las ubicaciones móviles del usuario de un cierto período de tiempo pasado (última 1 hora o 2 horas o 1 día).
Haré algo de procesamiento sobre los datos y los enviaré al front end / DB.
He revisado los conceptos básicos de IoT y su arquitectura. Entonces decidí usar la arquitectura de pila "SMACK" (Spark, Mesos, Akka, Cassandra, Kafka).
Decidí usar el "cliente nativo de Kafka" en la puerta de enlace para publicar los mensajes en la nube.
¿Debo usar el protocolo MQTT para transferir el mensaje a Kafka? ¿O MQTT no es necesario para el caso de uso anterior?
En caso afirmativo, ¿cuál sería el beneficio de usar MQTT con la arquitectura "SMACK"?
Respuestas:
No tiene que usar MQTT. Los clientes de Kafka instalados en las tarjetas de identificación de los empleados pueden enviar datos al agente de Kafka en la nube directamente. Entonces, mientras usa Kafka para la puerta de enlace, en realidad puede usar kafka para los sensores en sí.
Kafka y MQTT no son intercambiables, tienen diferentes lados fuertes (consumo de energía, consumo de ancho de banda, rendimiento ...) pero creo que lo sabes, suponiendo por la complejidad de tu stack. Kafka puede manejar 100k mensajes / minuto.
Si de todos modos decide usar MQTT, aquí hay una publicación de blog sobre cómo IBM usa MQTT y Kafka en el mismo proyecto. Su proyecto también se trata de movilidad, por lo que creo que podría ayudar.
Administrar dispositivos IoT con Kafka y MQTT
fuente
No hay ningún problema con casi cualquier tipo de agente MQTT para manejar esta carga, especialmente para los mensajes qos = 0 (probablemente en su caso). Tenemos una carga constante en nuestro intermediario con 100.000 mensajes entrantes (0.5 KB) por segundo (+ SSL). El problema puede aparecer desde el lado del tráfico, no desde pps.
Con respecto a la arquitectura de su sistema, mi consejo personal es tratar de hacerlo lo más simple posible. Y simple, solo unos pocos componentes / servicios intermedios. Si puede conectar directamente dos servicios, hágalo. Siempre tendrá la posibilidad de hacerlo más complejo cuando comience a agregar funciones.
fuente