1 - Zeit in verteilten Systemen [ID:34368]
50 von 167 angezeigt

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.

Teil einer Videoserie :
Teil eines Kapitels:
Verteilte Synchronisation

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen