¿Debo usar el protocolo MQTT?

8

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"?

SKK
fuente
2
1.5 megabytes por minuto? ¿Por empleado, todo el día? Olvídate de los protocolos, probablemente deberías dar un paso atrás y volver a considerar los datos en sí mismos, encontrando una manera de destilarlos antes de la transmisión.
Chris Stratton el
Mis pensamientos exactamente (+1). ¿Cuántos empleados tienes? Siempre en un sitio grande (ish) con 2.000 empleados, está rastreando su ubicación casi una vez por segundo, ¿quién necesita esa precisión? ¿Qué puedes hacer con eso? ¿Y por qué necesito 15kB para lat / long? ¿Cuál es el resto y con qué frecuencia cambia?
Mawg dice que reinstale a Mónica el
Solo curiosidad: ¿cómo estás rastreando los ID? ¿RFID pasivo de largo alcance? ¿Bluetooth? Si hay algo más que RFID pasivo, puedo prever problemas de batería.
Mawg dice que reinstale a Mónica el

Respuestas:

5

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

atakanyenel
fuente
Atayenel, gracias por explicar en detalle. En mi caso, debería usar la puerta de enlace en lugar de enviar directamente el mensaje del sensor. ¿Proveedores de servicios de Google (MQTT) e IBM IOT que usan MQTT? Después de leer el siguiente enlace, tengo algunas confusiones ... ¿Sabes por qué? ¿Hay alguna razón específica? cloud.google.com/iot/docs/concepts/protocols
SKK
¿Kafka puede manejar esa cantidad de datos?
Mawg dice que reinstale a Mónica el
Kafka es mejor que mqtt en rendimiento de datos. Entonces, si mqtt lo maneja, kafka también puede manejarlo.
atakanyenel
@atayenel gracias por tus comentarios. ¿Qué me sugiere los requisitos mínimos de hardware aproximados para mi caso de uso?
SKK
@SKK No puedo decirlo exactamente, pero puedes ver esta pregunta .
atakanyenel
2

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.

shal
fuente
Gracias. ¿Quieres que use una arquitectura simple en lugar de SMACK?
SKK
¿Puedes mirar en este iot.stackexchange.com/q/2718/5382 ?
SKK
Depende absolutamente de usted, pero en mi opinión lo crearía lo más simple posible, concentrándome en las tareas importantes al principio. El caso habitual es que su comprensión del proyecto antes y después (o en el medio) es totalmente diferente y, a menudo, tiene una conclusión final "si lo hago de nuevo lo haré diferente"))
shal