Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Eclipse Hono unterstützt Apache Kafka für Messaging

Eclipse Hono ist ein Open-Source-Projekt zur Anbindung einer großen Anzahl heterogener Geräte an ein (Cloud-)Backend. Hono definiert Service-Schnittstellen, die eine einheitliche Kommunikation zwischen Geräten, die sehr unterschiedliche Protokolle verwenden können, sowie Geschäftsanwendungen ermöglichen. Das Projekt existiert bereits seit einiger Zeit und wird seit mehreren Jahren erfolgreich im Bosch IoT Device Management eingesetzt. Neu ist, dass es jetzt Apache Kafka für Messaging unterstützt. Die daraus resultierenden Vorteile und Änderungen bei der Verwendung von Hono werden in diesem Artikel vorgestellt.

Von Geräten kommende Daten werden in Hono durch Protokolladapter in ein einheitliches Nachrichtenformat umgewandelt (z. B. gibt es einige für MQTT, HTTP und CoAp) und an ein Messaging-System übergeben. Geschäftsanwendungen lesen diese Nachrichten, bei denen es sich entweder um Telemetrienachrichten handelt oder Ereignisse , direkt aus dem Nachrichtensystem (sie können auch Befehl und Kontrolle verwenden um Nachrichten an Geräte zu senden und Antworten zu erhalten). Für Messaging, das nicht Teil von Hono ist, aber extern bereitgestellt werden muss, wurde bisher das AMQP 1.0-Protokoll verwendet.

Seit Version 1.7 unterstützt Hono Apache Kafka für Messaging als technische Vorschau . Eine Schlüsselfunktion von Hono ist die Definition und Implementierung von APIs zum Weiterleiten von Nachrichten an und von einem Messaging-System. Da die API-Definitionen auf Messaging basieren und direkt von seinen Eigenschaften abhängen, ist die Unterstützung eines neuen Messaging-Systems eine grundlegende Innovation für Hono. Für alle Messaging-APIs in Hono (Telemetrie , Ereignis , und Befehl und Kontrolle ) wurden neue Spezifikationen auf Basis von Kafka erstellt, sowohl für den Protokolladapter als auch für die Geschäftsanwendung. Es wurde darauf geachtet, dass sie sich den AMQP-basierten APIs so ähnlich wie möglich verhalten.

Vorteile

Apache Kafka ist eine verteilte Event-Streaming-Plattform, die für einen sehr hohen Durchsatz entwickelt wurde und gleichzeitig bestimmte Garantien in der Reihenfolge der Nachrichten bietet. Es passt aus mehreren Gründen hervorragend zu den Anforderungen von Hono in Bezug auf Messaging. Die wichtigsten Vorteile sind:

Änderungen

AMQP 1.0 ist ein Kommunikationsprotokoll, bei dem sich Peers miteinander verbinden, um Nachrichten auszutauschen. Im Gegensatz dazu besteht ein Kafka-Cluster aus Brokern, die das Schreiben (und Lesen) von Daten in einen permanenten Speicher koordinieren. Dieser Unterschied hat zwei Konsequenzen:Erstens steht eine Nachricht eine Weile zum Abruf bereit, bevor sie schließlich gelöscht wird. Um diesen Effekt in Hono mit AMQP zu erzielen, stellen Sie normalerweise einen separaten Message Broker bereit, in dem Ereignisse werden gespeichert, um Nachrichtenverluste zu vermeiden, falls die Geschäftsanwendung vorübergehend nicht verfügbar ist. Bei Kafka wird jede Nachricht gespeichert. Dazu gehören auch Telemetrienachrichten (die Speicherdauer hängt jedoch von der Konfiguration der Telemetriethemen im Kafka-Cluster ab). Zum anderen entkoppelt die Kommunikation über den Permanentspeicher Sende- und Empfangsvorgang voneinander:Der Protokolladapter kann sich nicht mehr an das Gerät zurückmelden, wenn gerade kein Consumer angeschlossen ist. Stattdessen werden die Nachrichten einfach gespeichert, ohne zu „wissen“, ob oder wann eine Geschäftsanwendung sie liest.

Ausprobieren

Bei der Installation von Hono müssen Sie entweder ein AMQP-Messaging-Netzwerk oder einen Kafka-Cluster bereitstellen. Es besteht auch die Möglichkeit, Hono so zu konfigurieren, dass beide verwendet werden Messaging-Systeme. Anschließend kann jeder Mandant (eine Untergruppe von Geräten und Konfigurationen) so konfiguriert werden, dass er entweder AMQP oder Kafka verwendet. Das Hono-Projekt bietet eine öffentlich zugängliche Sandbox-Umgebung im Internet, in der Sie mithilfe von AMQP- oder Kafka-basiertem Messaging mit Hono experimentieren können.

Praktisches Beispiel

Im Folgenden führen wir Sie durch ein kleines Beispiel für die Verwendung von Apache Kafka-basiertem Messaging in der Hono-Sandbox. Sie senden eine Telemetrienachricht an den HTTP-Protokolladapter und lesen sie dann aus dem Kafka-Cluster.

Wir simulieren ein internetfähiges Gerät, indem wir HTTP-Befehle über die Befehlszeile senden. Dazu verwenden wir das beliebte Open-Source-Tool curl . Falls noch nicht auf Ihrem Computer installiert, beachten Sie bitte die Installationshinweise auf der curl-Homepage. Zur Simulation der Geschäftsanwendung verwenden wir den Kommandozeilen-Client von Hono, der von der Hono-Downloadseite heruntergeladen werden kann. Bitte beachten Sie, dass Java mindestens in Version 11 installiert sein muss, um es ausführen zu können.

Wenn einer der unten aufgeführten Befehle nicht funktioniert (was bei solchen Anweisungen immer passieren kann), schlagen Sie bitte im Kafka Messaging Guide nach, wo die Erklärungen weitere Details enthalten.

Gerät registrieren

Zuerst müssen Sie einen neuen Mandanten in der Sandbox erstellen, um Störungen anderer Benutzer zu vermeiden. Der folgende Befehl erstellt einen Mandanten mit einer zufälligen ID und konfiguriert ihn für die Verwendung von Kafka für Messaging.

$ curl -i -H "Inhaltstyp:Anwendung/json" --data-binary '{ "ext":{ "messaging-type":"kafka" } }' http://hono.eclipseprojects.io:28080/v1/tenants

Die Ausgabe sollte Folgendes enthalten:{"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} .

Kopieren Sie nun diese ID und legen Sie sie wie folgt als Umgebungsvariable fest:

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

Registrieren Sie ein Gerät für den Mieter:

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

und geben Sie die zurückgegebene ID erneut wie folgt als Umgebungsvariable an:

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

Legen Sie abschließend ein Passwort für das Gerät fest:

$ export MY_PWD=my-pwd $ curl -i -X ​​PUT -H "Inhaltstyp:Anwendung/json" --data-binary '[{ "type":"gehashtes Passwort", "auth-id":"'$MY_DEVICE'", "Geheimnisse":[{ "pwd-plain":"'$MY_PWD'" }] }]' http://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

Nachricht senden

Nachdem Sie nun ein Gerät registriert haben, können Sie Nachrichten senden und empfangen.

Öffnen Sie ein zweites Terminalfenster, um die Nachrichten zu empfangen. Gehen Sie in das Verzeichnis, in das Sie den Hono-Befehlszeilenclient heruntergeladen haben. Starten Sie nun den Client mit dem folgenden Befehl und stellen Sie sicher, dass Sie my-tenant . ersetzen mit der ID des soeben erstellten Mieters:

# im Verzeichnis, in das die Datei hono-cli-*-exec.jar heruntergeladen wurde $ java -jar hono-cli-*-exec.jar --spring.profiles.active=receiver,sandbox,kafka --tenant.id="my-tenant"

Der Client ist bereit, Nachrichten zu empfangen, wenn die Ausgabe eine Zeile ähnlich der folgenden enthält:
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] erfolgreich erstellt, zum Beenden Strg-C drücken

Jetzt können Sie von Ihrem simulierten Gerät eine Nachricht an Hono senden. Wechseln Sie dazu zurück in das erste Terminalfenster. Der folgende Befehl sendet eine Telemetrienachricht an den HTTP-Protokolladapter:

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

Die Nachricht sollte nun im zweiten Terminal gedruckt werden.

Sie können auch eine Veranstaltung senden :

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

Jetzt sollte es Ihnen hoffentlich gelungen sein, Nachrichten von einem Gerät an Hono zu senden und sie vom Kafka-Cluster zu empfangen. Als nächsten Schritt können Sie sich die detaillierteren Beispiele in Honos Kafka Messaging Guide ansehen. Es zeigt Ihnen auch, wie Sie einen Befehl von der Geschäftsanwendung an das Gerät senden und darauf reagieren. Wenn Sie tiefer graben möchten, sollten Sie sich die Spezifikationen der Kafka-basierten APIs ansehen, die in den API-Spezifikationen von Hono zu finden sind.

Schlussfolgerung

Das Messaging-System ist die Grundlage für die Kernfunktionalität von Eclipse Hono, da seine Schnittstellen darüber hinaus bereitgestellt werden. Die Unterstützung von Kafka neben AMQP 1.0 ist für Hono eine sehr tiefgreifende Veränderung, bei der großen Wert darauf gelegt wurde, sicherzustellen, dass Schnittstellen einfach aufeinander abgebildet werden können. Die Hauptvorteile von Kafka sind seine Skalierbarkeit, seine Bestellgarantien, seine breite Akzeptanz und die Fülle an kommerziellen Serviceangeboten. Der Hauptunterschied zum Messaging mit AMQP besteht darin, dass alle Nachrichtentypen vermittelt werden. Dies bedeutet, dass Nachrichten auch dann zugestellt werden können, wenn der Empfänger für einen Moment getrennt wurde. Auch die Kommunikation ist zeitlich entkoppelt, sodass eine direkte Rückmeldung vom Empfänger an den Absender einer Nachricht nicht mehr möglich ist. In einem kurzen Praxisbeispiel haben wir Ihnen gezeigt, wie Sie Nachrichten von einem simulierten Gerät an die Hono-Sandbox senden und aus dem Kafka-Cluster konsumieren.


Industrietechnik

  1. Kritische Temperaturen für Supraleiter
  2. Dielektrische Festigkeiten für Isolatoren
  3. Regeln für Derivate
  4. Regeln für Antiderivate
  5. Veröffentlichung der neuen MongoDB-basierten Geräteregistrierung in Eclipse Hono
  6. Eclipse Hono 1.0.0 veröffentlicht:Eine offene IoT-Konnektivitätsplattform
  7. X.509-basierte Geräteauthentifizierung in Eclipse Hono
  8. Leiterplatten für raue Umgebungen
  9. Design für die Herstellung von Leiterplatten
  10. Leiterplattenfertigung für 5G