Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Eclipse Hono compatible con Apache Kafka para mensajería

Eclipse Hono es un proyecto de código abierto para conectar una gran cantidad de dispositivos heterogéneos a un back-end (en la nube). Hono define interfaces de servicio que permiten una comunicación uniforme entre dispositivos, que pueden utilizar protocolos muy diferentes, así como aplicaciones comerciales. El proyecto existe desde hace algún tiempo y se ha utilizado con éxito en Bosch IoT Device Management durante varios años. La novedad es que ahora es compatible con Apache Kafka para la mensajería. Los beneficios resultantes y los cambios en el uso de Hono se presentan en este artículo.

Los datos que provienen de los dispositivos se transforman en Hono a un formato de mensaje uniforme mediante adaptadores de protocolo (por ejemplo, hay algunos para MQTT, HTTP y CoAp) y se pasan a un sistema de mensajería. Las aplicaciones comerciales leen estos mensajes, que son mensajes de telemetría o eventos , directamente desde el sistema de mensajería (también pueden usar Command and Control para enviar mensajes a dispositivos y recibir respuestas). Para la mensajería, que no es parte de Hono pero debe proporcionarse externamente, hasta ahora se ha utilizado el protocolo AMQP 1.0.

Desde la versión 1.7, Hono es compatible con Apache Kafka para la mensajería como una vista previa técnica . . Una característica clave de Hono es la definición e implementación de API para reenviar mensajes hacia y desde un sistema de mensajería. Dado que las definiciones de API se basan en la mensajería y dependen directamente de sus propiedades, la compatibilidad con un nuevo sistema de mensajería es una innovación fundamental para Hono. Para todas las API de mensajería en Hono ( telemetría , evento y comando y control ), se crearon nuevas especificaciones basadas en Kafka, tanto de cara al adaptador de protocolo como a la aplicación empresarial. Se tuvo cuidado para garantizar que se comporten de la manera más similar posible a las API basadas en AMQP.

Beneficios

Apache Kafka es una plataforma de transmisión de eventos distribuida diseñada para un rendimiento muy alto al tiempo que brinda ciertas garantías en el orden de los mensajes. Se adapta perfectamente a los requisitos de Hono con respecto a la mensajería por varias razones. Los beneficios clave son:

Cambios

AMQP 1.0 es un protocolo de comunicación donde los pares se conectan entre sí para intercambiar mensajes. Por el contrario, un clúster de Kafka consta de intermediarios que coordinan la escritura (y lectura) de datos en el almacenamiento permanente. Esta diferencia tiene dos consecuencias:primero, un mensaje está disponible para su recuperación durante un tiempo antes de que finalmente se elimine. Para lograr este efecto en Hono con AMQP, normalmente proporciona un agente de mensajes separado donde eventos se almacenan para evitar la pérdida de mensajes en caso de que la aplicación empresarial no esté disponible temporalmente. Con Kafka, todos los mensajes se almacenan. Esto incluye mensajes de telemetría (el tiempo de almacenamiento, sin embargo, depende de la configuración de los temas de telemetría en el clúster de Kafka). En segundo lugar, la comunicación a través del almacenamiento permanente desacopla las operaciones de envío y recepción entre sí:el adaptador de protocolo ya no puede informar al dispositivo si actualmente no hay ningún consumidor conectado. En cambio, simplemente almacena los mensajes sin "saber" si una aplicación comercial los leerá o cuándo.

Probándolo

Al instalar Hono, debe implementar una red de mensajería AMQP o un clúster de Kafka. También existe la posibilidad de configurar Hono para usar ambos sistemas de mensajería. Luego, cada inquilino (un subconjunto de dispositivos y configuración) se puede configurar para usar AMQP o Kafka. El proyecto Hono proporciona un entorno de prueba de acceso público en Internet donde puede experimentar con Hono utilizando AMQP o mensajería basada en Kafka.

Ejemplo práctico

A continuación, lo guiamos a través de un pequeño ejemplo de cómo usar la mensajería basada en Apache Kafka en la zona de pruebas de Hono. Enviará un mensaje de telemetría al adaptador de protocolo HTTP y luego lo leerá desde el clúster de Kafka.

Simulamos un dispositivo habilitado para Internet enviando comandos HTTP desde la línea de comandos. Para ello, utilizamos la popular herramienta de código abierto curl . Si actualmente no está instalado en su computadora, consulte las instrucciones de instalación en la página de inicio de curl. Para simular la aplicación empresarial, utilizamos el cliente de línea de comandos de Hono, que se puede descargar desde la página de descarga de Hono. Tenga en cuenta que Java debe estar instalado al menos en la versión 11 para poder ejecutarlo.

Si alguno de los comandos que se muestran a continuación no funciona (lo que siempre puede suceder con tales instrucciones), consulte la Guía de mensajería de Kafka donde las explicaciones cubren más detalles.

Registro de un dispositivo

Primero, debe crear un nuevo inquilino en la zona de pruebas para evitar interferir con otros usuarios. El siguiente comando crea un inquilino con una ID aleatoria y lo configura para usar Kafka para la mensajería.

$ curl -i -H "tipo de contenido:aplicación / json" --data-binary '{ "ext":{ "tipo-mensajería":"kafka" } } 'http://hono.eclipseprojects.io:28080/v1/tenants

La salida debe contener algo como: {"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} .

Ahora copie este ID y configúrelo como una variable de entorno de la siguiente manera:

$ export MY_TENANT =85f63e23-1b78-4156-8500-debcbd1a8d35

Registrar un dispositivo para el inquilino:

$ curl -i -X ​​POST http://hono.eclipseprojects.io:28080/v1/devices/$MY_TENANT

y una vez más proporcione el ID devuelto como una variable de entorno de la siguiente manera:

$ exportar MY_DEVICE =4412abe2-f219-4099-ae14-b446604ae9c6

Finalmente, establezca una contraseña para el dispositivo:

$ export MY_PWD =my-pwd $ curl -i -X ​​PUT -H "tipo de contenido:aplicación / json" --data-binary '[{ "tipo":"contraseña-hash", "auth-id":"'$ MY_DEVICE'", "secretos":[{ "pwd-plain":"'$ MY_PWD'" }] }] 'http://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

Envío de un mensaje

Ahora que ha registrado un dispositivo, puede enviar y recibir mensajes.

Abra una segunda ventana de terminal para recibir los mensajes. Vaya al directorio donde descargó el cliente de línea de comandos Hono. Ahora inicie el cliente con el siguiente comando, asegurándose de reemplazar my-tenant con el ID del inquilino que acaba de crear:

# en el directorio donde se descargó el archivo hono-cli - * - exec.jar $ java -jar hono-cli - * - exec.jar --spring.profiles.active =receptor, caja de arena, kafka --tenant.id ="my-tenant"

El cliente está listo para recibir mensajes si la salida contiene una línea similar a la siguiente:
10:23:01.807 [vert.x-eventloop-thread-0] INFO org.eclipse.hono.cli. app.Receiver - Receiver [tenant:85f63e23-1b78-4156-8500-debcbd1a8d35, mode:all] creado correctamente, presione ctrl-c para salir

Ahora puede enviar un mensaje desde su dispositivo simulado a Hono. Para hacer esto, vuelva a la primera ventana de terminal. El siguiente comando envía un mensaje de telemetría al adaptador de protocolo HTTP:

$ curl -i -u $ MY_DEVICE @ $ MY_TENANT:$ MY_PWD -H "content-type:application / json" --data-binary '{"temp":42}' http://hono.eclipseprojects.io:8080 / telemetría

El mensaje ahora debería imprimirse en la segunda terminal.

También puedes enviar un evento :

$ curl -i -u $ MY_DEVICE @ $ MY_TENANT:$ MY_PWD -H "content-type:application / json" --data-binary '{"hello":"kafka"}' http://hono.eclipseprojects.io :8080 / evento

Ahora debería haber tenido éxito en enviar mensajes desde un dispositivo a Hono y recibirlos del clúster de Kafka. Como siguiente paso, puede echar un vistazo a los ejemplos más detallados en la Guía de mensajería de Kafka de Hono. También le muestra cómo enviar un comando desde la aplicación empresarial al dispositivo y responder a él. Si desea profundizar, es posible que desee echar un vistazo a las especificaciones de las API basadas en Kafka, que se pueden encontrar en las Especificaciones de API de Hono.

Conclusión

El sistema de mensajería es la base de la funcionalidad principal de Eclipse Hono porque sus interfaces se proporcionan encima. La compatibilidad con Kafka junto con AMQP 1.0 es un cambio muy profundo para Hono, donde se ha puesto gran énfasis en garantizar que las interfaces se puedan mapear fácilmente entre sí. Los beneficios clave de Kafka son su escalabilidad, sus garantías de pedidos, su adopción a gran escala y la gran cantidad de ofertas de servicios comerciales. Las principales diferencias con la mensajería con AMQP son que todos los tipos de mensajes se gestionan. Esto significa que los mensajes se pueden entregar incluso si el destinatario se desconectó por un momento. La comunicación también se desacopla en términos de tiempo, por lo que ya no es posible la retroalimentación directa del destinatario al remitente de un mensaje. En un breve ejemplo práctico, le mostramos cómo enviar mensajes desde un dispositivo simulado al sandbox de Hono y consumirlos desde el clúster de Kafka.


Tecnología Industrial

  1. Temperaturas críticas para superconductores
  2. Resistencia dieléctrica para aisladores
  3. Reglas para derivados
  4. Reglas para antiderivadas
  5. Lanzamiento del nuevo registro de dispositivos basado en MongoDB en Eclipse Hono
  6. Lanzamiento de Eclipse Hono 1.0.0:una plataforma de conectividad IoT abierta
  7. Autenticación de dispositivo basada en X.509 en Eclipse Hono
  8. PCB para entornos hostiles
  9. Diseño para la fabricación de PCB
  10. Fabricación de PCB para 5G
  11. Cómo prepararse para la Industria 4.0