Grundlagen verteilter Systeme



Ähnliche Dokumente
Grundlagen verteilter Systeme

Grundlagen verteilter Systeme

Live Update (Auto Update)

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

VS Praktikum 03 Konzept

Der lokale und verteilte Fall

Aufgabe 12.1b: Mobilfunknetzwerke

Verwendung des IDS Backup Systems unter Windows 2000

Einrichten eines IMAP Kontos unter Outlook Express

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung über den Umgang mit Schildern

Java RMI Remote Method Invocation

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Einstellungen für SEPA-Lastschriften oder SEPA Dauerlastschriften in der VR-NetWorld Software 5.0

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Qt-Projekte mit Visual Studio 2005

TeamSpeak3 Einrichten

Kurzanleitung So geht s

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

3. Stored Procedures und PL/SQL

Remote Method Invocation

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Verwendung des Terminalservers der MUG

Comtarsia SignOn Familie

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Agentur für Werbung & Internet. Schritt für Schritt: -Konfiguration mit Apple Mail

Mobile und Verteilte Datenbanken

PHPNuke Quick & Dirty

Überprüfung der digital signierten E-Rechnung

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Outlook und Outlook Express

icloud nicht neu, aber doch irgendwie anders

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Der Kalender im ipad

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Visual Basic Express Debugging

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Internet online Update (Internet Explorer)

System-Update Addendum

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Arbeiten mit UMLed und Delphi

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

iphone-kontakte zu Exchange übertragen

EasyWk DAS Schwimmwettkampfprogramm

Über den Link erreichen Sie unsere Einstiegsseite:

Das vorliegende Dokument beinhaltet vertrauliche Informationen und darf nicht an Dritte weitergereicht werden.

Einstellungen für SEPA-Lastschriften in der VR-NetWorld-Software

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

Manuelle Konfiguration einer VPN Verbindung. mit Microsoft Windows 7

Leichte-Sprache-Bilder

Schritt 2: Konto erstellen

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Kurzanleitung zum Einrichten des fmail Outlook Addin

Enigmail Konfiguration

Um über FTP Dateien auf Ihren Public Space Server - Zugang laden zu können benötigen Sie folgende Angaben:

Download unter:

ICS-Addin. Benutzerhandbuch. Version: 1.0

Erklärung zum Internet-Bestellschein

Outlook 2013

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Benutzerhandbuch MedHQ-App

e-books aus der EBL-Datenbank

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Lizenzen auschecken. Was ist zu tun?

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Websites mit Dreamweaver MX und SSH ins Internet bringen

Umstellung Ihrer Mailbox von POP zu IMAP

3. Wählen Sie "Internet- " aus und klicken Sie wiederum auf "Weiter".

Windows7 32/64bit Installationsanleitung der ROBO-PRO-Software

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Lokale Installation von DotNetNuke 4 ohne IIS

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

SDD System Design Document

Kommunikations-Management

FTP-Leitfaden RZ. Benutzerleitfaden

2.1 Erstellung einer Gutschrift über den vollen Rechnungsbetrag

Tutorial -

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

32.4 Anpassen von Menüs und Symbolleisten 795i

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Transkript:

Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 2 05.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: Das vorliegende System besteht aus einem Client und einem Server. Es soll eine Prozedur vom Client mittels RPC auf dem Server ausgeführt werden. Gehen Sie davon aus, dass die jeweiligen Maschinen unterschiedliche Architekturen aufweisen (z.b. SPARC und Intel) und die Prozedur ein Ergebnis beinhaltet. Abbildung 1: RPC a) Erläutern Sie den Aufbau und die Funktionsweise von RPC anhand Abbildung 1. Zeichnen bzw. beschriften Sie folgende Punkte: Client- sowie Server-Betriebssystem Netzwerk Client- sowie Server-Prozess Konkrete Implementierung der Methode Stub-Aufrufe Nennen Sie nun die notwendigen Schritte auf Client- und auf Server-Seite. (4 Punkte) b) Welche Probleme können bei RPC bei unterschiedlichen Arten der Parameterübergabe auftreten? Nennen Sie pro Übergabemechanismus jeweils ein Problem. (2 Punkte) c) Beschreiben Sie den Nutzen und die Funktionsweise der Interface Definition Language (IDL). (1,5 Punkte) d) Sind Prozeduraufrufe mittels RPC transparent? Begründen Sie ihre Antwort. (1,5 Punkte) zu a) Funktionsweise: 1. Der Client-Prozess ruft die Client-Stub-Prozedur wie eine normale Prozedur auf. 1

Abbildung 2: RPC:Lösung 2. Der Stub erzeugt eine Nachricht (Marshalling), die neben den Eingabeparametern zusätzlich noch den Namen bzw. eine ID der Server-Prozedur enthält. Anschließend übergibt der Stub die Nachricht an das Betriebssystem (BS). 3. Das Client-BS sendet die Nachricht über die Kommunikationsmodule an das entfernte Betriebssystem. 4. Das Server-BS gibt die Nachricht an den Dispatcher weiter. 5. Dieser entpackt den Header der Nachricht und kann durch die mitgelieferte Identifizierung die jeweilige Stubprozedur aufrufen. 6. Der Skeleton entpackt die Nachricht (Unmarshalling) und ruft die eigentliche Prozedur auf. 7. Der Server führt die Prozedur aus und gibt das Ergebnis an den Stub zurück. 8. Der Stub verpackt die Nachricht und gibt sie an das BS weiter. 9. Dadurch wird die Nachricht erneut über die Kommunikationsmodule übertragen und an das Client BS weiter gegeben. 10. Das Client BS reicht die Nachricht an den Stub weiter. 11. Der Stub packt das Ergebnis aus und gibt es zurück. Generell können Parameter per Wert (by-value) oder per Referenz übergeben werden: Call-by-Value: Darstellungsformate können unterschiedlich sein. Beispielsweise verwenden Intel basierte Systeme das LittleEndian Format und SPARC Maschinen das BigEndian Format. Daher kann es bei der Parameterübergabe zu falschen Werten kommen. 2

Call-by-Reference: Referenzen sind Zeiger auf Adressen im lokalen Adressraum und daher auch nur da sinnvoll. Zwar kann man für kleinere Konstrukte die Pointer belassen und die Struktur mit übergeben. Dies ist allerdings nur sehr begrenzt möglich. zu c) Durch die Interface Definition Language (IDL) können Schnittstellen in einer maschinenunabhängigen Sprache formuliert und in entsprechende Stubs für Client und Server kompiliert werden. Anschließend werden Header, Stubs und die eigentlichen Implementierungen verbunden. zu d) Ja, da durch die angesprochene Lösung ein Programm eine entfernet Prozedur als lokale aufrufen kann und dabei keine Unterschiede bei einem fehlerfreien Ablauf beachten muss. Allerdings muss bei der Fehlerbehandlung auf Transparenz geachtet werden. Aufgabe 2: Analog zu Aufgabe 1 liegt Ihnen eine Client/Server Architektur vor. a) Erläutern Sie den Aufbau und die Funktionsweise von RMI. (4 Punkte) b) Kann die Transparenz im Fall eines Fehlers in der Übertragung von Nachrichten mittels RMI gewahrt bleiben? Begründen Sie ihre Antwort und gehen Sie dabei auf die drei verschiedenen Aufruf-Semantiken ein. (3 Punkte) zu a) Abbildung 3: Aufbau RMI Funktionsweise: Analog zu RPC werden die Kommunikationsmodule benutzt um ein Anfrage/Antwort Protokoll zu implementieren. Wird ein entferntes Objekt bzw. dessen Referenz zum ersten mal verwendet, so wird ein Eintrag zwischen einem lokale und entfernten Objekt in die Tabelle des Remote Reference Module eingetragen. Liegt noch kein Proxy oder dessen Referenz vor, so werden die benötigten Informationen heruntergeladen und der Proxy erzeugt. Dies geschieht in Java 3

mittels der RMIRegistry automatisch. Mit dem RMI Compiler rmic können Skeleton-Klassen und damit auch Proxy- und Dispatcher-Klassen automatisch erzeugt werden. Liegt jetzt somit für jedes verwendete entfernte Objekt ein Proxy vor, so können Methoden auf dem eigentlichen Objekt ausgeführt werden. Der Proxy verhält sich wie ein lokales Objekt. Beim Aufruf einer Methode des Proxy werden die Argumente (können wiederum entfernte Referenzen sein) mit dem Verweis auf das Zielobjekts und einer methodid verpackt und über die Kommunikationsmodule übertragen. Der Dispatcher verwendet die methodid, um die passende Methode im Skeleton auszuwählen und leitet die Request Nachricht entsprechend weiter. Der Skeleton entpackt die Nachricht und führt den eigentlichen Methodenaufruf auf dem Objekt aus und nimmt eine eventuelle Antwort entgegen, verpackt und sendet sie zum Client. Dort wird die Nachricht vom Proxy entgegengenommen, entpackt und an die Applikation weitergegeben. maybe Semantik: Nein, da die Nachricht verloren gehen kann und nach einem Timeout ein Fehler zurückgeliefert wird. at-least-once Semantik: Nein. Zwar wird die Nachricht mit dieser Semantik auf jeden Fall übertragen. Allerdings kann sie auch öfters übertragen werden, wobei dies bei nicht indepotenten Methoden zu Problemen führen kann. at-most-once Semantik: Ja, die Nachricht wird genau einmal übertragen und gleicht somit der Semantik eines lokalen Aufrufs. Allerdings besteht weiterhin ein Unterschied im Verhalten bestimmter Situationen (Ausfall der Verbindung für längere Zeit). Die Transparenz kann nie gänzlich erfüllt werden, da durch Fehlen der Verbindung ein Fehler nicht mehr maskiert werden kann, egal welche Semantik verwendet wird. Aufgabe 3: Erläutern Sie die verteilte Garbage Collection (vgc) anhand des folgenden Systems. Gehen Sie dabei auf die Verweise ein und stellen Sie diese zusätzlich grafisch dar. Initialzustand: - Computer A: Objekt a, Verweis auf entferntes Objekt b,c,d. - Computer B: Objekt b,c, Verweis auf entferntes Objekt a,d. - Computer C: Objekt d. a) Ein Computer X ruft eine Methode auf und sollte dabei eine entfernte Referenz auf das Objekt c zurückgeliefert bekommen. Beim Anfragen wird allerdings ein Fehler an Computer X zurück gegeben. Wie könnte eine Strategie aussehen, diesem Fehler zu begegnen? (1 Punkt) 4

Abbildung 4: Initialzustand b) Der Computer Z verwendet die entfernten Objekte a,c,d und wurde auch korrekt in die entsprechenden Verweis-Listen eingetragen. Im Weiteren ist davon auszugehen, dass keine weiteren Verweise auf die Objekte a,c,d bestehen. Z verwendet diese Objekte anschließend auch nicht mehr, benachrichtigt aber nicht die entsprechenden Computer. Mit welchem Mittel kann die vgc trotzdem funktionsfähig bleiben? Welche Auswirkungen hat dies letztendlich für die lokale GC der Computer A,B und C? (2 Punkte) c) Ein Computer Y hält bereits eine Referenz des Objektes c und ist auch in der Liste der Verweise korrekt eingetragen. Y wird das Objekt c nicht weiter benötigen und benachrichtigt Computer C. Dabei wird ein Fehler zurückgeliefert. Welche Auswirkungen hat das auf die vgc? (1 Punkt) X addref(c); an Server B Exception removeref(c); an Server B addref(c); an Server B Für den Fall, dass Objekte nicht mehr benutzt werden und dies den entsprechenden Computern nicht mitgeteilt wurde (beispielsweise weil ein Fehler auftrat), können Referenzen über Leases entfernt werden. Server müssen innerhalb einer bestimmten Zeit ihren Lease erneuern, damit ihre Referenz nicht entzogen wird. Falls nach der vgc keine entfernten Referenzen mehr bestehen, kann die lokale GC auf diesen Objekten ausgeführt werden und falls auch lokal keine Verwendung besteht, können Sie gelöscht werden. zu c) 5

Abbildung 5: Zustand nach b) Y: addref(c) (bereits erfolgt); an Server B removeref(c); an Server B ; Exception; removeref(c) oder Server B löscht den Verweis nach Ablauf der Lease- Dauer. Abbildung 6: Zustand nach c) Aufgabe 4: a) Welche Eigenschaften müssen Objekte haben, damit sie mittels Java RMI verwendet werden können? (Hinweis: Denken Sie an die beiden möglichen Modi zur Parameterübergabe aus Aufgabe 1) 2 Punkte b) Schreiben Sie ein Programm mit Java RMI, welches die folgenden Anforderungen erfüllt: 6

Der RMI-Server soll beim Start seine lokale Adresse ausgeben (Tipp: InetAddress.getLocalHost()) und ein Interface ReceiveMessageInterface implementieren, das eine Methode printmessage beinhaltet. Diese Methode nimmt einen String als Parameter. 0,5 Punkte Der RMI-Server soll auf Port 2323 hören und bei Empfang einer Nachricht diese auf der Konsole ausgeben. 4 Punkte Der RMI-Client soll sich zum Server verbinden und die Methode printmessage() mit entsprechendem Parameter ausführen. 2,5 Punkte Tipp: Nach dem Kompilieren des Servers benötigen Sie den Java RMI- Compiler rmic zum Generieren der Stubs, etc. Falls Sie ein entsprechendes Tool (z.b. tcpdump/wireshark) zur Hand haben, können Sie sich den Netzwerk-Traffic asehen, der bei den Aufrufen anfällt. c) Beenden Sie danach den Server und versuchen Sie mit dem Client trotzdem eine Nachricht abzusetzen. Finden Sie aus dem Stacktrace heraus auf welchem (Ihnen bereits bekannten) grundlegenderen Kommunikations- Konzept Java-RMI basiert. 1 Punkt zu a) Objekte können prinzipiell als Werte und als Referenzen übertragen werden. Objekte werden dabei gegen Interfaces als Typ programmiert. Daher muss für jedes entfernte Objekt ein entsprechendes Interface erstellt werden, dessen Methoden RemoteExceptions (throws RemoteException) werfen. Wenn Objekte als Wert übertragen werden, müssen sie das Interface Serializable implementieren und IOExceptions werfen können. Damit Objekte als Referenzen übergeben werden können, müssen sie von RemoteObject abgeleitet sein. Damit implementieren sie automatisch die Schnittstellen Remote und Serializable. Server Objekte werden entweder von Remote- Server, von Activatable oder von UnicastRemoteObject abgeleitet und müssen RemoteExceptions werfen können. Die Sourcen sind auf der Übungsseite verfügbar. Laden Sie diese herunter und gehen Sie wie folgt vor: Server kompilieren: javac RmiServer.java rmic auf Server: rmic RmiServer Client kompilieren: javac RmiClient.java Server starten: java RmiServer Client start: java RmiClient 127.0.0.1 2323 foo zu c) Auszug aus dem Stacktrace: 7

[...] at RmiClient.main(RmiClient.java:21) Caused by: java.net.connectexception: Connection refused at java.net.plainsocketimpl.socketconnect(native Method) at java.net.plainsocketimpl.doconnect(plainsocketimpl.java:333) at java.net.plainsocketimpl.connecttoaddress(plainsocketimpl.java:195) at java.net.plainsocketimpl.connect(plainsocketimpl.java:182) at java.net.sockssocketimpl.connect(sockssocketimpl.java:366) at java.net.socket.connect(socket.java:519) [...] Wie man sieht basiert die Implementierung auf Sockets. 8