Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Eclipse Hono ondersteunt Apache Kafka voor berichten

Eclipse Hono is een open source project voor het aansluiten van grote aantallen heterogene devices op een (cloud)backend. Hono definieert service-interfaces die uniforme communicatie mogelijk maken tussen apparaten, die zeer verschillende protocollen kunnen gebruiken, evenals zakelijke toepassingen. Het project loopt al een tijdje en wordt al enkele jaren met succes gebruikt in Bosch IoT Device Management. Wat nieuw is, is dat het nu Apache Kafka ondersteunt voor berichten. De resulterende voordelen en veranderingen in het gebruik van Hono worden in dit artikel geïntroduceerd.

Gegevens afkomstig van apparaten worden in Hono omgezet in een uniform berichtformaat door protocoladapters (er zijn er bijvoorbeeld enkele voor MQTT, HTTP en CoAp) en doorgegeven aan een berichtensysteem. Zakelijke applicaties lezen deze berichten, die ofwel telemetrieberichten . zijn of evenementen , rechtstreeks vanuit het berichtensysteem (ze kunnen ook Command and Control gebruiken) om berichten naar apparaten te verzenden en antwoorden te ontvangen). Voor berichten, die geen deel uitmaken van Hono maar extern moeten worden geleverd, is tot nu toe het AMQP 1.0-protocol gebruikt.

Sinds versie 1.7 ondersteunt Hono Apache Kafka voor berichten als een technische preview . Een belangrijk kenmerk van Hono is de definitie en implementatie van API's voor het doorsturen van berichten van en naar een berichtensysteem. Aangezien de API-definities zijn gebaseerd op berichten en rechtstreeks afhankelijk zijn van de eigenschappen ervan, is het ondersteunen van een nieuw berichtensysteem een ​​fundamentele innovatie voor Hono. Voor alle berichten-API's in Hono (telemetrie , evenement , en opdracht en controle ), werden nieuwe specificaties op basis van Kafka gecreëerd, zowel voor de protocoladapter als voor de bedrijfstoepassing. Er is voor gezorgd dat ze zich zo gelijk mogelijk gedragen als de op AMQP gebaseerde API's.

Voordelen

Apache Kafka is een gedistribueerd platform voor het streamen van evenementen dat is ontworpen voor een zeer hoge doorvoer en tegelijkertijd bepaalde garanties biedt in de volgorde van berichten. Het past om verschillende redenen uitstekend bij de vereisten van Hono met betrekking tot berichten. De belangrijkste voordelen zijn:

  • Schaal :Meerdere Kafka-servers worden gelijktijdig gebruikt als een cluster dat naar behoefte kan worden uitgebreid. Kafka is geoptimaliseerd zodat veel processen tegelijkertijd gegevens kunnen schrijven en lezen. Met AMQP 1.0 kunnen meerdere processen tegelijkertijd berichten van hetzelfde adres consumeren. Dat betekent echter dat ze hun bestelling kwijtraken.
  • Berichten bestellen :Een van de kernfuncties van Kafka is het partitioneren van gegevens door middel van een partitiesleutel, waarmee gegevens kunnen worden geselecteerd waarvoor de opdracht moet worden onderhouden en gegevens die parallel kunnen worden verwerkt. Hierdoor kunnen we er in Hono eenvoudig voor zorgen dat alle gebeurtenissen van een apparaat in de juiste volgorde aan de bedrijfsapplicatie worden geleverd. De telemetriegegevens van het apparaat kunnen parallel worden verwerkt en de volgorde is ook gegarandeerd. Berichten van alle andere apparaten kunnen parallel worden gebruikt, volledig onafhankelijk, zelfs in meerdere instanties van de zakelijke applicatie die tegelijkertijd wordt gebruikt.
  • Grootschalige adoptie :Kafka wordt gebruikt door een groot aantal bedrijven en wordt ondersteund door vele andere technologieën. Verschillende bedrijven bieden Kafka aan als een service die op verschillende cloudplatforms kan worden geboekt. Dit maakt het eenvoudig om Hono te voorzien van een professioneel bediend berichtensysteem. Vendor lock-in wordt ook vermeden.

Wijzigingen

AMQP 1.0 is een communicatieprotocol waarbij peers met elkaar verbinding maken om berichten uit te wisselen. Een Kafka-cluster daarentegen bestaat uit brokers die het schrijven (en uitlezen) van data naar permanente opslag coördineren. Dit verschil heeft twee gevolgen:Ten eerste is een bericht een tijdje beschikbaar om op te halen voordat het uiteindelijk wordt verwijderd. Om dit effect in Hono met AMQP te bereiken, geeft u doorgaans een aparte berichtenmakelaar op waar gebeurtenissen worden opgeslagen om berichtverlies te voorkomen als de bedrijfsapplicatie tijdelijk niet beschikbaar is. Met Kafka wordt elk bericht opgeslagen. Dit omvat telemetrieberichten (de opslagtijd is echter afhankelijk van de configuratie van de telemetrieonderwerpen in het Kafka-cluster). Ten tweede ontkoppelt communicatie via permanente opslag de verzend- en ontvangstbewerkingen van elkaar:de protocoladapter kan niet langer terugmelden naar het apparaat als er momenteel geen consument is aangesloten. In plaats daarvan slaat het de berichten gewoon op zonder te "weten" of en wanneer een zakelijke applicatie ze zal lezen.

Het uitproberen

Wanneer u Hono installeert, moet u een AMQP-berichtennetwerk of een Kafka-cluster implementeren. Er is ook de mogelijkheid om Hono te configureren om beide . te gebruiken berichtensystemen. Vervolgens kan elke Tenant (een subset van apparaten en configuratie) worden geconfigureerd om AMQP of Kafka te gebruiken. Het Hono-project biedt een openbaar toegankelijke sandbox-omgeving op internet waar u kunt experimenteren met Hono met behulp van AMQP of Kafka-gebaseerde berichtenuitwisseling.

Praktisch voorbeeld

Hieronder laten we u een klein voorbeeld zien van het gebruik van op Apache Kafka gebaseerde berichten in de Hono-sandbox. U stuurt een telemetriebericht naar de HTTP-protocoladapter en leest het vervolgens uit het Kafka-cluster.

We simuleren een apparaat met internettoegang door HTTP-opdrachten vanaf de opdrachtregel te verzenden. Hiervoor gebruiken we de populaire open-source tool curl . Als het momenteel niet op uw computer is geïnstalleerd, raadpleeg dan de installatie-instructies op de curl-homepage. Om de zakelijke toepassing te simuleren, gebruiken we Hono's opdrachtregelclient, die kan worden gedownload van de Hono-downloadpagina. Houd er rekening mee dat Java minimaal in versie 11 moet zijn geïnstalleerd om het te kunnen gebruiken.

Als een van de onderstaande commando's niet werkt (wat altijd kan gebeuren met dergelijke instructies), raadpleeg dan de Kafka Messaging Guide waar de uitleg meer details bevat.

Een apparaat registreren

Eerst moet u een nieuwe tenant in de sandbox maken om interferentie met andere gebruikers te voorkomen. De volgende opdracht maakt een tenant met een willekeurige ID en configureert deze om Kafka te gebruiken voor berichten.

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

De uitvoer moet iets bevatten in de trant van:{"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} .

Kopieer nu deze ID en stel deze als volgt in als een omgevingsvariabele:

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

Registreer een apparaat voor de huurder:

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

en geef nogmaals de geretourneerde ID als een omgevingsvariabele als volgt:

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

Stel ten slotte een wachtwoord in voor het apparaat:

$ export MY_PWD=mijn-wachtwoord $ curl -i -X ​​PUT -H "inhoudstype:applicatie/json" --data-binary '[{ "type":"gehasht wachtwoord", "auth-id":"'$MY_DEVICE'", "geheimen":[{ "pwd-plain":"'$MY_PWD'" }] }]' http://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

Een bericht verzenden

Nu je een apparaat hebt geregistreerd, kun je berichten verzenden en ontvangen.

Open een tweede terminalvenster om de berichten te ontvangen. Ga naar de map waar u de Hono-opdrachtregelclient hebt gedownload. Start nu de client met de volgende opdracht en zorg ervoor dat u my-tenant . vervangt met de ID van de huurder die u zojuist hebt gemaakt:

# in de map waar het bestand hono-cli-*-exec.jar is gedownload naar $ java -jar hono-cli-*-exec.jar --spring.profiles.active=ontvanger,sandbox,kafka --tenant.id="mijn-tenant"

De client is klaar om berichten te ontvangen als de uitvoer een regel bevat die lijkt op de volgende:
10:23:01.807 [vert.x-eventloop-thread-0] INFO  org.eclipse.hono.cli. app.Receiver - Ontvanger [tenant:85f63e23-1b78-4156-8500-debcbd1a8d35, mode:all] succesvol aangemaakt, druk op ctrl-c om af te sluiten

Nu kunt u een bericht van uw gesimuleerde apparaat naar Hono sturen. Schakel hiervoor terug naar het eerste terminalvenster. De volgende opdracht stuurt een telemetriebericht naar de HTTP-protocoladapter:

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

Het bericht zou nu in de tweede terminal moeten worden afgedrukt.

Je kunt ook een evenement sturen :

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

Nu zou het je hopelijk gelukt zijn om berichten van een apparaat naar Hono te sturen en ze te ontvangen van het Kafka-cluster. Als volgende stap kunt u de meer gedetailleerde voorbeelden bekijken in Hono's Kafka Messaging Guide. Het laat je ook zien hoe je een opdracht van de zakelijke applicatie naar het apparaat stuurt en erop reageert. Als je dieper wilt graven, kun je eens kijken naar de specificaties van de op Kafka gebaseerde API's, die je kunt vinden in Hono's API-specificaties.

Conclusie

Het berichtensysteem vormt de basis voor de kernfunctionaliteit van Eclipse Hono omdat de interfaces er bovenop worden geleverd. Het ondersteunen van Kafka naast AMQP 1.0 is een zeer ingrijpende verandering voor Hono, waarbij grote nadruk is gelegd op het waarborgen dat interfaces gemakkelijk aan elkaar kunnen worden toegewezen. De belangrijkste voordelen van Kafka zijn de schaalbaarheid, de bestelgaranties, de brede acceptatie en het grote aanbod aan commerciële diensten. De belangrijkste verschillen met berichten met AMQP zijn dat alle berichttypen worden bemiddeld. Dit betekent dat berichten kunnen worden afgeleverd, zelfs als de ontvanger even de verbinding heeft verbroken. Ook is de communicatie ontkoppeld in tijd waardoor directe terugkoppeling van de ontvanger naar de afzender van een bericht niet meer mogelijk is. In een kort praktisch voorbeeld hebben we u laten zien hoe u berichten van een gesimuleerd apparaat naar de Hono-sandbox kunt verzenden en deze kunt consumeren vanuit het Kafka-cluster.


Industriële technologie

  1. Kritische temperaturen voor supergeleiders
  2. Diëlektrische sterktes voor isolatoren
  3. Regels voor derivaten
  4. Regels voor antiderivaten
  5. Release van nieuw op MongoDB gebaseerd apparaatregister in Eclipse Hono
  6. Eclipse Hono 1.0.0 uitgebracht:een open IoT-connectiviteitsplatform
  7. X.509-gebaseerde apparaatverificatie in Eclipse Hono
  8. PCB's voor ruwe omgevingen
  9. Ontwerp voor het vervaardigen van PCB's
  10. PCB-productie voor 5G
  11. Hoe u zich kunt voorbereiden op Industrie 4.0