Hallo zusammen. In der sechsten Aufgabe beschäftigen wir uns mit verteilter Synchronisation. Genauer
gesagt damit, wie man in einem verteilten Kontext Ereignisse über Rechnergrenzen hinweg
sequenziell verarbeiten kann. Für Sequentialität braucht man aber ein Gefühl für zeitliche
Abläufe, also ob etwas davor oder danach geschieht. Schauen wir uns daher in diesem
Video an, wie das Thema Zeit in verteilten Systemen funktioniert.
Zeit ist wichtig, um eine Vorher-Nachher-Beziehung von Ereignissen herzustellen. Bei vielen Anwendungen
ist es wichtig zu wissen, ob ein Ereignis A vor oder nach einem Ereignis B stattgefunden
hat, unabhängig davon, auf welchem Rechner die jeweiligen Ereignisse passiert sind.
Als Beispiel kann man hier wieder den aus den ersten drei Aufgaben bekannten Auktionsdienst
nehmen. Wie ihr euch sicher vorstellen könnt, laufen echte Internetaktionsdienste wie Ebay
nicht auf einem einzelnen Server, sondern der Dienst ist hier über mehrere Instanzen
verteilt. Da ist die Synchronisation zwischen Dienen dann plötzlich wichtig. Wenn ich ein
Gebot für eine Auktion auf einem Server in Europa abgebe und jemand anderes ein gleich
hohes Gebot für dieselbe Auktion auf einem Server in den US abgibt, muss das System
eindeutig klären, welches der Gebote es als das erste deklariert.
Ein anderes Beispiel sind Industriesteuerungen. Hier hat man häufig Szenarien, bei denen eine
Auktion erst dann ausgeführt werden darf, wenn ein bestimmtes Ereignis stattgefunden
hat. Zum Beispiel, dass Ventile in einer bestimmten Reihenfolge geöffnet oder geschlossen
werden müssen. Das Problem bei diesen Szenarien ist, dass man normalerweise keine konsistente
Sicht auf das Gesamtsystem hat. Eine Stärke von verteiltem System ist die Unabhängigkeit
seiner Aktoren. Das bedeutet aber auch, dass Ereignisse unabhängig voneinander auftreten
können und die anderen Teile des Systems davon erst einmal nichts mitbekommen. Der
Informationsausstausch selbst ist dann zusätzlich mit Latenzen verbunden. Selbst wenn man also
einen zentralen Koordinator hat, der alle anderen Instanzen im System befragt, sind
ein Teil dieser Informationen gegebenenfalls schon wieder veraltet, bis man alle bekommen
hat. Zu einem Zeitpunkt x hat man also nur ein ungefähres Bild davon, was gerade im
System passiert. Wie genau man daher Zeit in verteilten Systemen betrachtet und welche
Verfahren man zur Synchronisation verwendet, ist daher stark abhängig vom Einsatzgebiet
und dessen Eigenschaften sowie den Garantien, die man erreichen möchte. Schauen wir uns
dazu zuerst das Konzept an, an das man bei Zeit wahrscheinlich als erstes denkt. Echtzeitbasierte
Uhren, also Zeit wie wir sie auch im Alltag verwenden. Um Zeit in verteilten Systemen
auf Basis von Echtzeituhren zu realisieren, gibt es unterschiedliche Verfahren. Eine
Möglichkeit ist es, dass alle Komponenten ein gemeinsames Zeitsignal nutzen. Die Probleme
dabei sind allerdings, dass die Auflösung dieses Zeitsignals beschränkt ist, um eine
Übertragung überhaupt zu ermöglichen. Zudem kommt es bei größeren Entfernungen zwischen
Komponenten und dem Zeitsignal schnell zu Schwierigkeiten. Selbst mit Lichtgeschwindigkeit
ist es nur möglich, das Signal maximal 30 cm pro Nanosekunde zu verbreiten. Wenn die
Komponenten also über mehrere Standorte, zum Beispiel mehrere Kontinente verteilt sind,
gibt es hier schnell wieder relevante Unterschiede zwischen den Zeitvorstellungen der verschiedenen
Komponenten. Eine andere Möglichkeit ist es, sich auf die Zeitstempel der lokalen physikalischen
Uhren der einzelnen Komponenten zu verlassen und die Nachrichten mit Zeitstempeln zu versehen.
Da hier das ständige Lesen vom gemeinsamen Zeitsignal wegfällt, ist es deutlich weniger
Kommunikationsaufwand und auch Distanzen spielen weniger eine Rolle. Sobald man verschiedene
Uhren als Ausgangsbasis hat, kommt allerdings das Problem hinzu, dass es nahezu unmöglich
ist, dass zwei Uhren den exakt gleichen Takt haben. Selbst wenn man Atomuhren verwendet
und sämtliche durchs Material geschuldeten Ungenauigkeiten vernachlässigen würde,
ist Zeit schließlich relativ und daher allein vom Standort und der dort herrschenden Schwerkraft
abhängig. Über die Zeit würden also selbst die besten Uhren zwangsläufig auseinander
driften, wenn man sie nicht regelmäßig synchronisiert. Um diese Probleme anzugehen und die Genauigkeit
von echtzeitbasierten Uhren zu erhöhen, kombiniert man daher die verschiedenen Vorgehensweisen.
Presenters
Zugänglich über
Offener Zugang
Dauer
00:11:38 Min
Aufnahmedatum
2021-06-15
Hochgeladen am
2021-06-15 14:08:24
Sprache
de-DE
Wie sieht das Konzept Zeit in verteilten Systemen aus