14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2 Grundlagen und Techniken<br />

2.3 Ansätze zur Benutzung und Steuerung entfernter Knoten<br />

In diesem Abschnitt werden Techniken und Ansätze vorgestellt, wie entfernte Knoten genutzt werden<br />

oder wie verteilte Knoten <strong>in</strong> Kooperation zusammenarbeiten können.<br />

2.3.1 Fernaufruf<br />

E<strong>in</strong> grundlegender Mechanismus, um Dienste auf e<strong>in</strong>em entfernten Rechner zu nutzen, ist der Fernaufruf,<br />

auch als Remote Procedure Call (RPC) oder bei objektorientierter Programmierung als Remote<br />

Methode Invocation (RMI) bezeichnet [TS03, Sun04]. Dabei wird auf dem Client e<strong>in</strong>e Funktion aufgerufen,<br />

die dann auf dem Server ausgeführt wird. Für den Softwareentwickler sieht e<strong>in</strong> Fernaufruf<br />

fast wie e<strong>in</strong> normaler Funktionsaufruf aus. Dazu ist auf dem Client e<strong>in</strong> Fernaufrufsystem vorhanden,<br />

welches e<strong>in</strong>en Stellvertreter, e<strong>in</strong>en sogenannten Stub, für die Funktion bereitstellt. Dieser Stellvertreter<br />

wird anstelle der eigentlichen Funktion aufgerufen und bekommt somit die Parameter des Aufrufs. Er<br />

veranlasst dann das Erstellen und Absenden der Nachricht an den Server und wartet auf e<strong>in</strong> Ergebnis.<br />

Die Nachricht enthält neben den Parametern m<strong>in</strong>destens noch e<strong>in</strong>e Identifikation der aufzurufenden<br />

Funktion. Diese Nachricht wird von e<strong>in</strong>em Fernaufrufsystem am Server empfangen. Dort wird e<strong>in</strong><br />

stellvertretender Aufrufer der Funktion bereitgestellt, e<strong>in</strong> sogenannter Skeleton. Dieser bekommt<br />

die Parameter aus der Nachricht, ruft die eigentliche Funktion auf und leitet den Rückgabewert an<br />

das Fernaufrufsystem weiter, welches ihn zurück zum aufrufenden System schickt. Dort wird der<br />

Rückgabewert dem entsprechenden Stellvertreter zugeordnet, der ihn dem ursprünglichen Aufrufer<br />

zurückgibt.<br />

Da verschiedene Systeme unterschiedliche Repräsentationen der Daten haben können, muss bei der<br />

Realisierung e<strong>in</strong>es Fernaufrufsystems festgelegt werden, wie die Parameter serialisiert und codiert werden<br />

(Marshall<strong>in</strong>g). Bei der Verwendung e<strong>in</strong>es Fernaufrufs ist zu beachten, dass dieser zwar verwendet<br />

werden kann wie e<strong>in</strong> normaler Funktionsaufruf, jedoch e<strong>in</strong> anderes Verhalten be<strong>in</strong>haltet. Zum e<strong>in</strong>en<br />

s<strong>in</strong>d Fernaufrufe um e<strong>in</strong> Vielfaches langsamer als lokale Aufrufe, zum anderen können durch das zwischengeschaltete<br />

Kommunikationssystem Fehler auftreten, die bei e<strong>in</strong>em lokalen Funktionsaufruf nicht<br />

möglich s<strong>in</strong>d. Fehlerquellen s<strong>in</strong>d Nachrichtenverlust, -verdopplung oder -veränderung. Im Rahmen<br />

e<strong>in</strong>es Fernaufrufsystems gibt es Möglichkeiten e<strong>in</strong>ige Fehler zu bearbeiten und damit der Semantik<br />

e<strong>in</strong>es lokalen Aufrufs möglichst nahe zu kommen. Die sogenannte exactly-once Semantik [Nel81]<br />

e<strong>in</strong>es lokalen Funktionsaufrufs ist jedoch nicht immer erreichbar.<br />

2.3.2 Verschieben von Anwendungskomponenten<br />

Im Bereich der mobilen Agenten werden Programme oder Programmteile von e<strong>in</strong>em Rechner auf e<strong>in</strong>en<br />

anderen verschoben [Omg00]. Dabei wird zunächst die Anwendung angehalten. Danach werden die<br />

Daten, die transferiert werden sollen, identifiziert und serialisiert. Nach der Übertragung werden die<br />

Daten auf dem Zielknoten deserialisiert, um anschließend die Ausführung der Anwendung fortzusetzen.<br />

Bei der Migration unterscheidet man zwischen schwacher und starker Migration [TS03]. Die<br />

schwache Migration ist die e<strong>in</strong>fachere Variante. Charakteristisch für sie ist, dass die übertragene<br />

Anwendung auf dem Zielknoten immer <strong>in</strong> ihrem Ausgangszustand gestartet wird. Es ist daher nur die<br />

Übertragung des Codes und der <strong>in</strong>itialen Daten nötig. Der aktuelle Laufzeitzustand der Anwendung<br />

geht bei der Migration verloren.<br />

Bei der starken Migration h<strong>in</strong>gegen wird zusätzlich der Laufzeitzustand serialisiert und auf dem<br />

Zielknoten wieder hergestellt. Hierdurch kann e<strong>in</strong>e starke Migration transparent für die Anwendung<br />

16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!