1 / 12

7.2 Mobile Objekte ( mobile objects, auch Objektmigration, object migration)

7.2 Mobile Objekte ( mobile objects, auch Objektmigration, object migration). bedeutet: Objekt ist nicht an den Ort gebunden, an dem es erzeugt wurde, kann dynamisch verlagert werden. Warum? - Effizienz (Alternative: Replikation/Caching [7.3])

Download Presentation

7.2 Mobile Objekte ( mobile objects, auch Objektmigration, object migration)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 7.2 Mobile Objekte (mobile objects, auch Objektmigration, object migration) bedeutet: Objekt ist nicht an den Ort gebunden, an dem es erzeugt wurde, kann dynamisch verlagert werden. Warum? - Effizienz (Alternative: Replikation/Caching [7.3]) - Verfügbarkeit (z.B. beim Mobilrechnen) - Verfügungsgewalt (Sicherheit) Achtung: Nicht Migration mit Kopieren verwechseln ! (allerdings enge technische Verwandtschaft)

  2. Klassifikation: Steuerung der Migration explizit implizit imperativ deklarativ Migrationsabstraktion passiv: weak mobility Objekt ist während der Migration aktiv: strong mobility

  3. Allgemeine Probleme bei der Migration: wenn Objekt verlagert wird:  Aktiv oder nur passiv? Synchronisation erforderlich?  „Merkt“ es davon etwas, d.h. verhält es sich am Zielort anders?  Werden Objekte, auf die es verweist, mitverlagert?  . . . und wenn es nichtverlagerbare Systemobjekte sind?  Sind Objekte nach mehrfacher Verlagerung „schwerer“ erreichbar?

  4. 7.2.1 Imperative Migration wird explizit durch entsprechende Anweisung veranlaßt Wünschenswert (nicht in RMI): Remoteund UnicastRemoteObject haben Operationen void move(String url) void move(RemoteObject ob) - bringen eine Kopie des Objekts nach url bzw. zu ob (eingebettete Objekte werden wie in 7.1.5.3 behandelt) - ersetzen das Original durch einen Vertreter, der sich auf die Kopie bezieht

  5. Mobile Agenten = mobile Objekte, die „selbst“ migrieren [nicht verwechseln mit Intelligenten Agenten für „verteiltes Problemlösen“] this.move("//remote:8300"); verlagert das Objekt und generiert am Zielort einen Thread, der die Ausführung fortsetzt Variante: void move(String url, String op) beendet laufende Operation des Objekts, verlagert das Objekt und generiert am Zielort einen Thread, der die Operation op ausführt, z.B. this.move("//market.com", "trade");

  6. Information über mobile Agenten und einschlägige Systeme: http://www.davidreilly.com/topics/software_agents/mobile_agents/ http://mole.informatik.uni-stuttgart.de/mal/mal.html

  7. 7.2.2 Deklarative Migration wird unterstützt durch spezielle Sprache mit entsprechenden Konstrukten bzw. durch deklarative Spracherweiterungen – Annotationen – und entsprechenden Vorübersetzer 2 Beispiele:  Emerald (Univ. of Washington, Seattle, 1983-86) http://www.diku.dk/ research-groups/distlab/Research/Internal/DistOOS/Emerald/  Doorastha (FU Berlin, Markus Dahm) http://www.inf.fu-berlin.de/~dahm/doorastha/

  8. Emerald Zusätzliche Parametermechanismen bei Fernaufrufen: Call-by-move - Argument migriert zum aufgerufenen Objekt: server.op(move arg); Call-by-visit - Argument migriert zum aufgerufenen Objekt und zurück: server.op(visit arg); (! Nicht verwechseln mit call-by-value-result !) Plattform: Workstation Cluster, Programmcode auf allen Stationen repliziert

  9. Doorastha = Java mit Annotationen < ..... > , ohne (sichtbaren) RMI-Code Klasse für Fernobjekte: <globalizable> class Table ... Fernerzeugung: Table t = new<remotenew: host=...> Table(); Spezifikation von call-by-move: void op(<by-move> Table t) ... + weitere Annotationen, auch für Attribute von Objekten

  10. 7.2.3 Migrationsabstraktion z.B. bei JavaParty Univ. Karlsruhe, Michael Philippsen) http://wwwipd.ira.uka.de/JavaParty/ (lokal: file:/import/public/opt/JavaParty/doc/features.html) = minimal erweitertes Java für hochgradige Verteilungsabstraktion zwecks Parallelrechnen im Lokalnetz – ohne (sichtbaren) RMI-Code remote class X ... bewirkt, daß die Objekte fernaufrufbar und mobil sind Migration wird von „intelligentem“ Laufzeitsystem gesteuert (explizite Steuerung ist ebenfalls möglich) Voraussetzung: alle Stationen sehen gemeinsames (verteiltes) Dateisystem

  11. Benutzung von JavaParty: 1. Übersetzen mit JavaParty-Übersetzer: jpc<filename>.java z.B. jpc HelloJP.java mit public remote class HelloJP { public static void main(String[] arg) { System.out.println("Hello JavaParty!"); } } generiert diverse Klassen, einschließlich Hilfs- und Stub-Klassen 2. JavaParty Runtime Manager starten: jprm &

  12. 3. Eine oder mehrere JavaParty Virtual Machines starten, z.B. auf verschiedenen Stationen, aber so, daß die .class-Dateien erreichbar sind: jpvm Achtung:jpvm sucht Kontakt mit jprm per Rundruf; Stationen sollten daher im gleichen Subnetz sein 4. Programm so starten, daß die .class-Dateien erreichbar sind, z.B. jp HelloJP 5. Die mit jprm und jpvm hochgezogene Plattform abräumen mit jprk („rk“ wie „remote kill“)

More Related