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

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

der Universität Oldenburg
der Universität Oldenburg
PC-Cluster.
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Internetzugriff mit Strings und Streams
Präsentation zum Thema Netzwerk Von Jan Metz.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java News & Music Der Chat
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Grundlagen der Sprache
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
7 Verteilungsabstraktion
JAVA RMI.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Seminar Internet Technologien
Remote Methode Invocation (RMI)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Entwicklung verteilter eingebetteter Systeme - Einführung
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Parallel Programming Condition Queues
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Präsentation von Lukas Sulzer
Management- und Web Services- Architekturen
Einführung in JavaKara
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Einführung in Web Services Web Services in der Praxis
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Parallelisierung für Multiprozessor-Maschinen
Javelin Internet-based parallel computing using Java.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
2. Kommunikation und Synchronisation von Prozessen 2
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Vortrag - Diplomarbeiten (HS I)
Schutzvermerk nach DIN 34 beachten Was ist DCOM ?.
Datenbanken im Web 1.
Peter Brezany Institut für Softwarewissenschaften Universität Wien
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
93 Das Monitorkonzept (nach Hoare/Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Objektorientierte Datenbanken
Realisierung verteilter Anwendungen: Teil 4 zBeim vorigen Mal: RMI und Grundlagen von CORBA zInhalt heute yVerteilung und Objektorientierung (Voyager)
Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:
Realisierung verteilter Anwendungen: Teil 2 zInhalt heute: yKommunikation über Sockets yJava Remote Method Invocation, RMI zLernziele: yVerständnis eines.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
Objektorientierte Datenbanken zBeim vorigen Mal: yUmsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java yKlassen und Instanzen.
Java Programme nur ein bisschen objektorientiert.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Praktische Informatik 1
Objektorientierte Programmierung
 Präsentation transkript:

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

Literatur, Details und Zusatzinformationen 

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.

Vernetzung

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

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

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

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

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

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

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)

Ü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“

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

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

Motivation Nebenläufigkeit Server Client1 Client2 Handler1 Handler2

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

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)

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:

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(); } }

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

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

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) {... } }

Sieb: ein Beispiel zMotivation: Nebenläufige Markierung

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"); }

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

PrimCalculator: eine weitere Variante zNebenläufiges Herausfiltern

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) }

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 } } }

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"); } }

Asynchrone Aufrufe zCallback vs. Polling

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

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