Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Eclipse Hono prenant en charge Apache Kafka pour la messagerie

Eclipse Hono est un projet open source permettant de connecter un grand nombre d'appareils hétérogènes à un back-end (cloud). Hono définit des interfaces de service qui permettent une communication uniforme entre les appareils, qui peuvent utiliser des protocoles très différents, ainsi que des applications commerciales. Le projet existe depuis un certain temps déjà et est utilisé avec succès dans Bosch IoT Device Management depuis plusieurs années. Ce qui est nouveau, c'est qu'il prend désormais en charge Apache Kafka pour la messagerie. Les avantages qui en résultent et les changements dans l'utilisation de Hono sont présentés dans cet article.

Les données provenant des appareils sont transformées dans Hono en un format de message uniforme par des adaptateurs de protocole (par exemple, il y en a pour MQTT, HTTP et CoAp) et transmis à un système de messagerie. Les applications métier lisent ces messages, qui sont soit des messages de télémétrie ou événements , directement depuis le système de messagerie (ils peuvent également utiliser Commande et Contrôle pour envoyer des messages aux appareils et recevoir des réponses). Pour la messagerie, qui ne fait pas partie de Hono mais doit être fournie en externe, le protocole AMQP 1.0 a été utilisé jusqu'à présent.

Depuis la version 1.7, Hono prend en charge Apache Kafka pour la messagerie en tant qu'aperçu technique . Une caractéristique clé de Hono est la définition et la mise en œuvre d'API pour le transfert de messages vers et depuis un système de messagerie. Étant donné que les définitions de l'API sont basées sur la messagerie et dépendent directement de ses propriétés, la prise en charge d'un nouveau système de messagerie est une innovation fondamentale pour Hono. Pour toutes les API de messagerie dans Hono (télémétrie , événement , et commande et contrôle ), de nouvelles spécifications basées sur Kafka ont été créées, tant pour l'adaptateur de protocole que pour l'application métier. Des précautions ont été prises pour s'assurer qu'elles se comportent de manière aussi similaire que possible aux API basées sur AMQP.

Avantages

Apache Kafka est une plateforme de streaming d'événements distribuée conçue pour un très haut débit tout en offrant certaines garanties dans l'ordre des messages. Il convient parfaitement aux exigences de Hono en matière de messagerie pour plusieurs raisons. Les principaux avantages sont :

Modifications

AMQP 1.0 est un protocole de communication où les pairs se connectent pour échanger des messages. En revanche, un cluster Kafka se compose de courtiers qui coordonnent l'écriture (et la lecture) des données vers un stockage permanent. Cette différence a deux conséquences :Premièrement, un message est disponible pour la récupération pendant un certain temps avant d'être finalement supprimé. Pour obtenir cet effet dans Hono avec AMQP, vous fournissez généralement un courtier de messages distinct où les événements sont stockés pour éviter la perte de messages en cas d'indisponibilité temporaire de l'application métier. Avec Kafka, chaque message est stocké. Cela inclut les messages de télémétrie (la durée de stockage dépend toutefois de la configuration des rubriques de télémétrie dans le cluster Kafka). Deuxièmement, la communication via un stockage permanent découple les opérations d'envoi et de réception les unes des autres :l'adaptateur de protocole ne peut plus faire rapport à l'appareil s'il n'y a actuellement aucun consommateur connecté. Au lieu de cela, il stocke simplement les messages sans « savoir » si ou quand une application commerciale les lira.

Essayer

Lors de l'installation de Hono, vous devez déployer soit un réseau de messagerie AMQP, soit un cluster Kafka. Il y a aussi la possibilité de configurer Hono pour utiliser les deux systèmes de messagerie. Ensuite, chaque locataire (un sous-ensemble d'appareils et de configuration) peut être configuré pour utiliser AMQP ou Kafka. Le projet Hono fournit un environnement sandbox accessible au public sur Internet où vous pouvez expérimenter Hono à l'aide de la messagerie AMQP ou Kafka.

Exemple pratique

Dans ce qui suit, nous vous présentons un petit exemple d'utilisation de la messagerie basée sur Apache Kafka dans le bac à sable Hono. Vous enverrez un message de télémétrie à l'adaptateur de protocole HTTP, puis le lirez à partir du cluster Kafka.

Nous simulons un appareil compatible Internet en envoyant des commandes HTTP à partir de la ligne de commande. Pour cela, nous utilisons l'outil open source populaire curl . S'il n'est actuellement pas installé sur votre ordinateur, veuillez vous référer aux instructions d'installation sur la page d'accueil de curl. Pour simuler l'application métier, nous utilisons le client en ligne de commande de Hono, qui peut être téléchargé à partir de la page de téléchargement Hono. Veuillez noter que Java doit être installé au moins dans la version 11 pour pouvoir l'exécuter.

Si l'une des commandes ci-dessous ne fonctionne pas (ce qui peut toujours arriver avec de telles instructions), veuillez vous référer au Guide de messagerie Kafka où les explications couvrent plus de détails.

Enregistrer un appareil

Tout d'abord, vous devez créer un nouveau locataire dans le bac à sable pour éviter d'interférer avec les autres utilisateurs. La commande suivante crée un locataire avec un ID aléatoire et le configure pour utiliser Kafka pour la messagerie.

$ curl -i -H "type de contenu :application/json" --data-binary '{ "ext":{ "message-type":"kafka" } }' http://hono.eclipseprojects.io:28080/v1/tenants

La sortie doit contenir quelque chose du genre :{"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} .

Copiez maintenant cet ID et définissez-le comme variable d'environnement comme suit :

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

Enregistrez un appareil pour le locataire :

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

et fournissez à nouveau l'ID renvoyé en tant que variable d'environnement comme suit :

$ exporter MON_APPAREIL=4412abe2-f219-4099-ae14-b446604ae9c6

Enfin, définissez un mot de passe pour l'appareil :

$ export MY_PWD=my-pwd $ curl -i -X ​​PUT -H "type de contenu :application/json" --data-binary '[{ "type":"mot de passe haché", "auth-id":"'$MY_DEVICE'", "secrets":[{ "pwd-plain":"'$MY_PWD'" }] }]' http://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

Envoi d'un message

Maintenant que vous avez enregistré un appareil, vous pouvez envoyer et recevoir des messages.

Ouvrez une deuxième fenêtre de terminal pour recevoir les messages. Accédez au répertoire où vous avez téléchargé le client de ligne de commande Hono. Démarrez maintenant le client avec la commande suivante, en veillant à remplacer my-tenant avec l'ID du locataire que vous venez de créer :

# dans le répertoire où le fichier hono-cli-*-exec.jar a été téléchargé $ java -jar hono-cli-*-exec.jar --spring.profiles.active=receiver,sandbox,kafka --tenant.id="mon-locataire"

Le client est prêt à recevoir des messages si la sortie contient une ligne semblable à la suivante :
10:23:01.807 [vert.x-eventloop-thread-0] INFO  org.eclipse.hono.cli. app.Receiver - Receiver [locataire :85f63e23-1b78-4156-8500-debcbd1a8d35, mode :all] créé avec succès, appuyez sur ctrl-c pour quitter

Vous pouvez maintenant envoyer un message depuis votre appareil simulé à Hono. Pour ce faire, revenez à la première fenêtre de terminal. La commande suivante envoie un message de télémétrie à l'adaptateur de protocole HTTP :

$ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "content-type:application/json" --data-binary '{"temp":42}' http://hono.eclipseprojects.io:8080 /télémétrie

Le message devrait maintenant être imprimé dans le deuxième terminal.

Vous pouvez également envoyer un événement :

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

Maintenant, espérons-le, vous devriez avoir réussi à envoyer des messages d'un appareil à Hono et à les recevoir du cluster Kafka. Dans une prochaine étape, vous pouvez jeter un œil aux exemples plus détaillés du guide de messagerie Kafka de Hono. Il vous montre également comment envoyer une commande de l'application métier à l'appareil et y répondre. Si vous souhaitez approfondir, vous pouvez jeter un œil aux spécifications des API basées sur Kafka, qui peuvent être trouvées dans les spécifications de l'API de Hono.

Conclusion

Le système de messagerie est la base des fonctionnalités de base d'Eclipse Hono, car ses interfaces sont fournies par-dessus. La prise en charge de Kafka aux côtés d'AMQP 1.0 est un changement très profond pour Hono, où l'accent a été mis sur la garantie que les interfaces peuvent être facilement mappées les unes aux autres. Les principaux avantages de Kafka sont son évolutivité, ses garanties de commande, son adoption à grande échelle et la richesse de ses offres de services commerciaux. Les principales différences par rapport à la messagerie avec AMQP sont que tous les types de messages sont négociés. Cela signifie que les messages peuvent être remis même si le destinataire a été déconnecté pendant un moment. La communication est également découplée en termes de temps de sorte qu'un retour direct du destinataire vers l'expéditeur d'un message n'est plus possible. Dans un bref exemple pratique, nous vous avons montré comment envoyer des messages à partir d'un appareil simulé vers le bac à sable Hono et les consommer à partir du cluster Kafka.


Technologie industrielle

  1. Température critique pour les supraconducteurs
  2. Forces diélectriques pour les isolants
  3. Règles pour les produits dérivés
  4. Règles pour les dérivés
  5. Libération du nouveau registre d'appareils basé sur MongoDB dans Eclipse Hono
  6. Lancement d'Eclipse Hono 1.0.0 :une plate-forme de connectivité IoT ouverte
  7. Authentification de périphérique basée sur X.509 dans Eclipse Hono
  8. PCB pour environnements difficiles
  9. Conception pour la fabrication de PCB