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 :
- Mise à l'échelle :plusieurs serveurs Kafka sont exploités simultanément en tant que cluster qui peut être étendu selon les besoins. Kafka est optimisé pour permettre à de nombreux processus d'écrire et de lire des données simultanément. Avec AMQP 1.0, plusieurs processus peuvent également consommer des messages de la même adresse en parallèle. Cependant, cela signifie qu'ils perdent leur commande.
- Commande des messages :L'une des fonctionnalités principales de Kafka est le partitionnement des données au moyen d'une clé de partition, qui permet de sélectionner des données dont la commande doit être maintenue et des données pouvant être traitées en parallèle. Dans Hono, cela nous permet de garantir facilement que tous les événements d'un appareil sont fournis à l'application métier dans le bon ordre. Les données de télémétrie de l'appareil peuvent être traitées en parallèle, et son ordre est également garanti. Les messages de tous les autres appareils peuvent être consommés en parallèle, de manière totalement indépendante, même dans plusieurs instances de l'application métier utilisées simultanément.
- Adoption à grande échelle :Kafka est utilisé par un grand nombre d'entreprises et est soutenu par de nombreuses autres technologies. Plusieurs entreprises proposent Kafka en tant que service pouvant être réservé sur différentes plateformes cloud. Cela permet de fournir facilement à Hono un système de messagerie géré par des professionnels. Le verrouillage du fournisseur est également évité.
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-debcbd1a8d35Enregistrez un appareil pour le locataire :
$ curl -i -X POST http://hono.eclipseprojects.io:28080/v1/devices/$MY_TENANTet fournissez à nouveau l'ID renvoyé en tant que variable d'environnement comme suit :
$ exporter MON_APPAREIL=4412abe2-f219-4099-ae14-b446604ae9c6Enfin, 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_DEVICEEnvoi 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 :
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étrieLe 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énementMaintenant, 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
- Température critique pour les supraconducteurs
- Forces diélectriques pour les isolants
- Règles pour les produits dérivés
- Règles pour les dérivés
- Libération du nouveau registre d'appareils basé sur MongoDB dans Eclipse Hono
- Lancement d'Eclipse Hono 1.0.0 :une plate-forme de connectivité IoT ouverte
- Authentification de périphérique basée sur X.509 dans Eclipse Hono
- PCB pour environnements difficiles
- Conception pour la fabrication de PCB