Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

Zeit für die Synchronisierung der Konsistenz in IIoT-Systemen

Ein wichtiges (und heiß diskutiertes) Thema beim Entwurf verteilter Systeme ist das zu verwendende Konsistenzmodell. Konsistenzmodelle beeinflussen viele Teile des Systemdesigns, und die Auswahl eines anderen wirkt sich auf Dinge wie die Systemverfügbarkeit und Robustheit gegenüber Netzwerkausfällen aus. Dieser Blog ist für Systemarchitekten gedacht, die besser verstehen möchten, was es bedeutet, konsistent zu sein oder nicht.

Lassen Sie uns zunächst klarstellen, dass es in diesem Blog nicht um das "C" in ACID (https://en.wikipedia.org/wiki/ACID) geht. Die ACID-Konsistenz stellt sicher, dass Aktualisierungen eines Datenspeichers gemäß einer Reihe von Einschränkungen gültig sind. Dieser Blog konzentriert sich auf die Konsistenz, die beschreibt, was passiert, wenn Daten zwischen verteilten Speichern repliziert werden. Wie sich herausstellt, tut ACID das Sagen Sie etwas dazu, aber es ist das "I" (Isolation), nicht das "C". Verwirrend? Ein bisschen, aber ertrage es mit mir.

Isolation wird auch als starke Konsistenz bezeichnet . Wenn ein System stark konsistent ist, werden alle Schreib- und Lesevorgänge zwischen verteilten Speichern für jede Anwendung in diesem System in derselben Reihenfolge ausgeführt. Das ist eine ausgefeilte Art zu sagen, wenn eine Anwendung etwas schreibt, alle Anwendungen, die nach lesen beim Schreiben werden garantiert die neuen Daten angezeigt.

Dies erweist sich in vielen Systemen als unglaublich nützliche Eigenschaft. Es stellt sicher, dass nicht zwei Personen denselben Kühlschrank auf einer Einkaufswebsite bestellen können, auch nicht, wenn sie genau zur gleichen Zeit einkaufen. Starke Konsistenz erzwingt die gleiche Reihenfolge der Operationen global , also werden immer zwei Käufe von allen in der gleichen Reihenfolge bearbeitet. In der Praxis bedeutet dies, dass der Kühlschrank beim zweiten Kaufversuch garantiert vergriffen ist.

Starke Konsistenz klingt nach einer ziemlich netten Sache, also warum verwenden sie nicht alle Systeme? Dies liegt an dem sogenannten CAP-Theorem (https://en.wikipedia.org/wiki/CAP_theorem). Zunächst eine kurze Anmerkung:CAP wurde von vielen zu Recht kritisiert, weil es zu einfach ist, das Verhalten komplexer verteilter Systeme zu beschreiben – also seien Sie vorsichtig bei der Verwendung –, aber es bietet einen nützlichen Rahmen für die Diskussion von Konsistenzmodellen. Ich werde nicht auf die Details von CAP eingehen, da das Internet viele Ressourcen bietet, die eine viel bessere Arbeit leisten, als ich es mir hier erhoffen könnte.

Zusammenfassend sagt uns CAP, was in verteilten Systemen passiert, wenn Anwendungen vorübergehend die Fähigkeit verlieren zu "sprechen", oder anders ausgedrückt:wenn das Netzwerk ausfällt. Es stellt sich heraus, dass es für ein System unmöglich ist, stark konsistent zu sein und Garantieren Sie immer die Betriebszeit, unabhängig vom Verlust der Konnektivität. Schade.

Das klingt komplex, ist aber eigentlich recht intuitiv. Denken Sie daran, wie starke Konsistenz eine globale Ordnung für alle Operationen in einem System erfordert? Das heißt gelesen muss sehen Sie alle vorherigen schreibt, von jedem. Wenn nicht alle Anwendungen verbunden sind, kann dies nicht gewährleistet werden. Eine Bewerbung kann einen Kühlschrank bestellt haben, aber wenn noch nicht alle Bewerbungen diese Bestellung erhalten haben, können sie keine neuen Bestellungen aufgeben. Das führt zu Ausfallzeiten für die Shopping-Website!

Ausfallzeiten können abgemildert werden, indem mehr Ressourcen für das Problem eingesetzt werden, beispielsweise durch Datenbankreplikation (mehr Speicher) oder Bereitstellung redundanter Webserver (mehr Rechenleistung). Dies ist heute in öffentlichen Cloud-Infrastrukturen fast trivial, wird jedoch ziemlich teuer und komplex, wenn ein System viele bewegliche Teile hat, wie bei Microservice-Architekturen. Wenn ein System nicht in einer Cloud läuft, ist das Hinzufügen weiterer Ressourcen alles andere als trivial, da Speicher, Rechenleistung und Bandbreite in Nicht-Cloud-Umgebungen viel eingeschränkter sind.

Während also eine starke Konsistenz für Anwendungen praktisch ist, belastet sie eine Infrastruktur (und Ihren Geldbeutel!). Um diese Probleme zu umgehen, haben sich kluge Köpfe Lösungen einfallen lassen, die von der Konsistenz her nicht so umständlich, aber anwendungstechnisch dennoch praktikabel sind. Worüber wir sprechen, ist „eventuelle Konsistenz“. Zeit für eine andere Definition.

Ein System ist schließlich konsistent, wenn, wenn für ein bestimmtes Element keine Aktualisierungen vorgenommen wurden, alle Anwendungen schließlich denselben Wert sehen. Oder laienhaft:Jeder sieht irgendwann die gleichen Daten, wenn er lange genug wartet. Das bedeutet, dass Anwendungen gleichzeitig lesen und schreiben können, und dies sogar bei Netzwerkausfall! Schließlich liefert die Infrastruktur des Systems alle Updates für die Anwendungen.

Da Anwendungen nicht aufeinander warten müssen, ist die Uptime eines schließlich konsistenten Systems theoretisch unendlich – vorausgesetzt, Ihre Anwendungen stürzen nicht ab oder es kommt zu einem Stromausfall. Unendlich ist jedoch nicht praktikabel; Nach einiger Zeit erwarten Sie, dass sich Ihre Anwendungen wieder verbinden. Daher begrenzen schließlich konsistente Systeme normalerweise die Zeit, die benötigt wird, um konsistent zu werden. Wenn dieses Limit abläuft und Anwendungen keine Möglichkeit zur Synchronisierung hatten, findet eine Fehlerwiederherstellung statt.

Verfügbarkeit ist nicht der einzige Vorteil von letztendlich konsistenten Systemen. Da Lese- und Schreibvorgänge keine Synchronisation erfordern, wie dies bei stark konsistenten Systemen der Fall ist, sind sie viel schneller. Das Fehlen von Synchronisation ermöglicht auch eine direkte Peer-to-Peer-Kommunikation, was die Leistung weiter verbessert und gleichzeitig die Robustheit verbessert, da ein zentralisierter Nachrichtenbroker überflüssig wird, der Single Points of Failure einführt.

Auch wenn eventuelle Konsistenz für Shopping-Websites nicht funktioniert, sollte es angesichts ihrer Vorteile (Verfügbarkeit, Leistung, Robustheit, Ressourceneffizienz) nicht überraschen, dass sie häufig in geschäftskritischen Systemen verwendet wird.

Die RTI Connext Product Suite ist die führende Implementierung des OMG DDS-Standards, der als Protokoll in geschäftskritischen, industriellen IoT-Systemen weit verbreitet ist. Ein großer Unterschied zwischen OMG DDS und anderen Konnektivitätsprotokollen besteht darin, dass sich DDS wie eine verteilte Datenbank verhält, die kontinuierlich zwischen Anwendungen synchronisiert wird, während andere Protokolle normalerweise eine Schnittstelle zum Senden von Nachrichten bereitstellen und die Zustandsverwaltung der Anwendung überlassen.

Wenn Sie der Meinung sind, dass eine verteilte Datenbank nach etwas klingt, das mit Konsistenz zu tun hat, liegen Sie richtig. RTI Connext DDS muss ständig Verfügbarkeit und Leistung gegen Konsistenz abwägen, um in den anspruchsvollsten geschäftskritischen Umgebungen arbeiten zu können. Standardmäßig verwendet RTI Connext DDS die Eventual Consistency, die garantiert, dass damit erstellte Anwendungen nicht aufhören zu funktionieren, wenn das Netzwerk ausfällt, während gleichzeitig sichergestellt wird, dass alle Anwendungen letztendlich die gleiche Sicht auf "die Welt" haben.

Nun sehen Sie, dass etwas so Abstraktes wie „Konsistenz“ weitreichende Konsequenzen hat und als wichtiges Thema im frühen Systemdesign behandelt werden sollte. Leider ist es nie so einfach, entweder "stark konsistent" oder "eventuell konsistent" zu sein. Eine Lambda-Architektur (https://en.wikipedia.org/wiki/Lambda_architecture) ist nur ein Beispiel, das sowohl starke als auch eventuelle Konsistenz verwendet, um das Beste aus beiden Welten herauszuholen. Bei so vielen Konsistenzschattierungen müssen Systemarchitekten komplexe Entscheidungen darüber treffen, wie viel Konsistenz sich ihr System leisten kann.

Bei RTI hilft Ihnen unser professionelles Serviceteam, diese Entscheidungen zu treffen, die Konsequenzen abzuwägen und unsere Produkte zu konfigurieren, um eine konsistente Lösung zu schaffen, die für Sie funktioniert.

Erfahren Sie hier mehr über RTI-Dienste:https://www.rti.com/services


Internet der Dinge-Technologie

  1. Wahrscheinliche Fehler in bewährten Systemen
  2. Wahrscheinliche Fehler in unbewiesenen Systemen
  3. Integration analoger Steuerungen in IIoT-Systeme
  4. Können ERP- und MES-Systeme mit dem IIoT Schritt halten?
  5. Eingebettete Systeme und Systemintegration
  6. 5G-Integration in IIoT-Systeme beschleunigen die Einführung von Industrie 4.0
  7. Wie verbessert das IIoT die Rentabilität eines Anlagenüberwachungssystems?
  8. Laufzeit im Vergleich zu FMCW-LiDAR-Systemen
  9. Was ist ein Belüftungssystem?
  10. Ist es an der Zeit, Ihren Kompressor aufzurüsten?