Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele.

Ähnliche Präsentationen


Präsentation zum Thema: "Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele."—  Präsentation transkript:

1 Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele allgemein: yGrundprinzipien, Werkzeuge und Systeme zInhalt heute: yEinleitung yNebenläufigkeit und Synchronisation (in Java) Ralf Möller, FH-Wedel

2 Literatur, Details und Zusatzinformationen  http://www.fh-wedel.de/~mo/lectures/vsys.html

3 Verteiltes System: Definition 1 zAndrew Tanenbaum: zEin verteiltes System ist eine Kollektion unabhängiger Computer, die den Benutzern als ein Einzelcomputer erscheinen (Transparenz). zImpliziert, daß die Computer miteinander verbunden sind und zdie Ressourcen wie Hardware, Software und Daten gemeinsam benutzt werden.

4 Vernetzung

5 Verteiltes System: Definition 2 zLeslie Lamport: zEin verteiltes System ist ein System, mit dem ich nicht arbeiten kann, weil irgendein Rechner abgestürzt ist, von dem ich nicht einmal weiß, daß es ihn überhaupt gibt. zOft die Realität... zWird aber besser... zNeue Prinzipien des Systemdesigns

6 Verteilung: Allgemeine Aspekte zVerlassen der „heilen Welt“ des lokalen Prozessors zHeterogenität zKommunikation (kann Engpaß sein) zRessourcen stehen temporär nicht zur Verfügung zNotwendigkeit zur Fehlertoleranz zNebenläufigkeit, fehlende globale Kontrolle/Uhr zNeue Art des Vorgehens bei der Entwicklung: ySystemdesign, Modellierung, Programmierung yOrganisationsprinzipien: Server-Client vs. Peer-to-Peer yDienstbegriff, Komponentenbegriff

7 Ansätze zur Verteilung zMehrprozessorsysteme / Verteilte Algorithmen zVerteilte Datenbanken yODBC, JDBC, JDO zKommunikationsströme: ySockets zHochsprachen: yStandard/prozedural: RPC yJava: RMI, Mobiler Programmcode yVirtuelle Maschine, Just-in-time-Übersetzung yMultiple Programmiersprachen: CORBA yEreignisse und Notifikationen

8 Fehler zVerlust der Auftragsnachricht (1) zVerlust der Ergebnisnachricht (2) zAusfall des Servers (3) zAusfall des Klienten (4) Klient Server (1)(2) (4) (3)

9 Fehlerbehebung und Probleme zClient wartet und versucht... z... nach Timeout ein erneutes Senden, zkann aber nicht zwischen verschiedenen Fehlersituationen unterscheiden. zErneutes Senden führt zur erneuten Ausführung. zClient antizipiert eventuell neuen Zustand nicht. Transaktionskonzept erforderlich (teuer!) Festlegung von Dienstgüte-Kriterien

10 Fehlerbehandlungsstrategien zMaybe zAt-least-once zAt-most-once zExactly-once Fehlerfreier Ablauf Nachrichten- verluste Server- ausfall A: 1 E: 1 A: 0/1 E: 0/1 A: ≥ 1 E: ≥ 1 A: 1 E: 1 A: 0/1 E: 0/1 A: ≥ 0 E: ≥ 0 A: 0/1 E: 0/1 A: 1 E: 1 A: Ausführung, E: Ergebnis

11 Inhalte: ein Überblick zEinführung, Nebenläufige Kontrollflüsse, Kommunikation zMiddleware, Entfernter Methodenaufruf, RMI, Corba zObjektmigration und technische Grundlagen von Agenten, Voyager zSpontane Vernetzung und entfernter Datenbankzugriff, Jini zMultitier-Architekturen, J2EE: yDynam. Generierung von Web-Seiten yKonfigurierbare Komponenten für Geschäftsanwendungen yGrundlagen der Transaktionsbehandlung yFortsetzung Transaktionsbehandlung und Aspekte der Sicherheit zDienste und Dienstvermittlung, SOAP, WSDL, UDDI zKryptographie und Sicherheitsdienste zZahlungssysteme im Internet zVerteilte Multimediasysteme, Quality of Service (QoS)

12 Überblick: Verteilung und Kommunikation zFinden von Objektreferenzen yNamen vs. Objektbeschreibungen zLokale Referenzen (Stub) vs. Objekte in Wirtsumgebung zMarshalling/Unmarshalling yExterne Datenrepräsentation (mit pragm. Einschränkungen) ySerialisierung von Objektstrukturen yGgf.: Kommunikation von Klassendefinitionen zKontrollaspekte yDynamische Integration/Anmeldung (Abmeldung?) ySynchrone vs. asynchrone Kommunikation yEreignisbenachrichtigung zNutzungsrechte, Gültigkeitseinschränkungen (z.B. Leasing) „Middleware“

13 Verteilung: Probleme und Herausforderungen zZusatzaufwand (Overhead) zBestimmung der „Grenze“ der übermittelten Objektstrukturen: Balancierung zSynchronisation, zSerialisierbarkeit, Locking, zDeadlocks, Transaktionen zSicherheit, Verfügbarkeit, zGültigkeit, Reservierung (QoS) zAbrechnungswesen

14 Nebenläufigkeit zAusführung mehrerer Programme (Betriebssystem) zOder: mehrere Kontrollflüsse in einem Programm: (in Java Threads genannt) yZugriff auf gemeinsamen Speicher yBesser: Referenzierung gemeinsamer Objekte zEinsatzspektrum yProblem läßt sich in mehrere Kontrollflüsse zerlegen yIn verteilten Systemen häufig: Abspaltung von Prozessen um Server nicht zu blockieren

15 Motivation Nebenläufigkeit Server Client1 Client2 Handler1 Handler2

16 Nebenläufigkeit und Synchronisation zGgf. müssen Threads auf andere Threads warten zMeist kein aktives Warten auf Partner (busy waiting) gewünscht zVerwaltung von Threads durch „Laufzeitsystem“ zZustände eines Threads: ylaufend ylauffähig (aber ein anderer ist gerade „dran“) yblockiert, in Warteschlange wartend yblockiert, reaktivierbar nach Zeitlimit

17 Probleme zVerklemmung (deadlocks) ywechselseitiges Warten auf reservierte Betriebsmittel zVerhungern (livelocks) yWarten auf Ressourcen, die nie zur Verfügung stehen zUngleichbehandlung (unfairess) yBevorzugung von bestimmten Prozessen bei der Ressourcenverteilung zWettlaufeffekte (race conditions) yErgebnis einer Berechnung hängt von Ausführungsreihenfolge ab (-> transiente Fehler)

18 Threads in Java (1) zclass ExampleThread extends Thread {... yExampleThread(int param) {... } ypublic void run() {... } ypublic static void main(String[] args) { ExampleThread t = new ExampleThread(42); t.start(); } } Nichts mitschreiben: Verwendeter Beispielcode unter: http://www.dpunkt.de/leseproben/3-932588-32-0/jivs_code.zip

19 Threads in Java (2) zclass ExampleRunnable extends SomeClass implements Runnable { yExampleRunnable(int param) {... } ypublic void run() {... } ypublic static void main(String[] args) { ExampleRunnable r = new ExampleRunnable (42); new Thread(r).start(); } }

20 Ein Beispiel: Primzahlen zPrimzahl?(n): Sieb des Eratosthenes Bis sqrt(n)

21 PrimCalculator: die simple Variante zpublic class PrimCalculator { ypublic boolean isPrim(int n) { Sieve sieve = new Sieve(n+1); return sieve.isPrim(n); } ypublic static void main(String[] args) { int n = Integer.parseInt(args[0]); boolean result = (new PrimCalculator()).isPrim(n); System.out.println("Value "+ n +" is" + (result?"":" not") +" a prim"); } } $ java PrimCalculator 1053

22 Sieb zpublic class Sieve { y... ypublic Sieve(int n) {... } ypublic isPrim(int n) { for (int aPrim = 2; aPrim <= rootN; aPrim = nextPrimAfter(aPrim)) { filter(aPrim); } return isMarked(n); } yprivate void filter(int prim) {... } yprivate int nextPrimAfter(int prim) {... } }

23 Sieb: ein Beispiel zMotivation: Nebenläufige Markierung 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

24 PrimCalculator: mit Threads (1) zpublic class PrimCalculator extends Thread { yint n; yPrimCalculator (int n) { this.n = n; } ypublic void run() { Sieve sieve = new Sieve(n+1); boolean result = sieve.isPrim(n); System.out.println("Value "+ n +" is" + (result?"":" not") +" a prim"); }

25 PrimCalculator: mit Threads (2) z public static void main(String[] args) { for(int i=0; (i<args.length); i++) { int n = Integer.parseInt(args[i]); (new PrimCalculator(n)).start(); System.out.println("Started Thread for "+n); } } } $ java PrimCalculator 7 1053 63

26 PrimCalculator: eine weitere Variante zNebenläufiges Herausfiltern

27 Synchronisation / Zugriff auf gemeinsame Daten zPublic class Bank {... ypublic float getAmount(Object o); {... } ypublic void incrAmount(Object o, float amount); {... } } zpublic class Client extends Thread { yBank b; ypublic Client(Bank b) { this.b = b; b.setAmount(this,0.0); } ypublic synchronized void addToSalary(float amount) { float oldAmount = b.getAmount(this); b.setAmount(oldAmount + amount) }

28 Nebenläufigkeit und Verteilung: Server zpublic class Server extends Thread { ypublic Server() { this.start() } ypublic static void main(String[] args) { new Server(); } yPublic void run() { while (true) { System.out.println("waiting for new task"); try { System.in.read(); } catch (...) {... } Handler handler = new Handler } } }

29 Nebenläufigkeit und Verteilung: Handler zpublic class Handler extends Thread { ypublic Handler() { this.start() } yPublic void run() { System.out.println ("Doing some work..."); try{ Thread.sleep(1000); } catch (... ) {... } System.out.println ("done"); } }

30 Asynchrone Aufrufe zCallback vs. Polling

31 Verteilung und Kommunikation zKommunikationsprotokoll zBeispiel: TCP/IP zSchicht 4 (bzw. 3) des ISO/OSI Referenzmodells zTransport von Informationen über ein Netzwerk zZwei Arten: yTCP yUDP Physical Application Presentation Session Transport Network Data link

32 Was haben wir heute gelernt? zThema: Nebenläufigkeit und Verteilung yProbleme bei Nebenläufigkeit yErste Lösungsansätze in Java


Herunterladen ppt "Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele."

Ähnliche Präsentationen


Google-Anzeigen