+ All Categories
Home > Documents > Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML,...

Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML,...

Date post: 06-Apr-2016
Category:
Upload: lisa-kohl
View: 214 times
Download: 2 times
Share this document with a friend
32
Realisierung verteilter Anwendungen Voraussetzungen Datenstrukturen und Algorithmen, Java, HTML, XML Übungen im Rahmen des Software- Praktikums Lernziele allgemein: Grundprinzipien, Werkzeuge und Systeme Inhalt heute: Einleitung Nebenläufigkeit und Synchronisation (in Java) Ralf Möller, FH-Wedel
Transcript
Page 1: Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele.

Realisierung verteilter Anwendungen

Voraussetzungen Datenstrukturen und Algorithmen, Java, HTML, XML

Übungen im Rahmen des Software-PraktikumsLernziele allgemein:

Grundprinzipien, Werkzeuge und SystemeInhalt heute:

Einleitung Nebenläufigkeit und Synchronisation (in Java)

Ralf Möller, FH-Wedel

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

Literatur, Details und Zusatzinformationen

http://www.fh-wedel.de/~mo/lectures/vsys.html

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

Verteiltes System: Definition 1

Andrew Tanenbaum: Ein verteiltes System ist eine Kollektion

unabhängiger Computer, die den Benutzern als ein Einzelcomputer erscheinen (Transparenz).

Impliziert, daß die Computer miteinander verbunden sind und

die Ressourcen wie Hardware, Software und Daten gemeinsam benutzt werden.

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

Vernetzung

intranet

ISP

desktop computer:

backbone

satellite link

server:

network link:

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

Verteiltes System: Definition 2

Leslie Lamport: Ein 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.

Oft die Realität...Wird aber besser...Neue Prinzipien des Systemdesigns

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

Verteilung: Allgemeine Aspekte

Verlassen der „heilen Welt“ des lokalen Prozessors Heterogenität Kommunikation (kann Engpaß sein) Ressourcen stehen temporär nicht zur Verfügung Notwendigkeit zur Fehlertoleranz Nebenläufigkeit, fehlende globale Kontrolle/Uhr Neue Art des Vorgehens bei der Entwicklung:

Systemdesign, Modellierung, Programmierung Organisationsprinzipien: Server-Client vs. Peer-to-Peer Dienstbegriff, Komponentenbegriff

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

Ansätze zur Verteilung

Mehrprozessorsysteme / Verteilte Algorithmen Verteilte Datenbanken

ODBC, JDBC, JDO Kommunikationsströme:

Sockets Hochsprachen:

Standard/prozedural: RPC Java: RMI, Mobiler Programmcode Virtuelle Maschine, Just-in-time-Übersetzung Multiple Programmiersprachen: CORBA Ereignisse und Notifikationen

the rest of

email server

Web server

Desktopcomputers

File server

router/firewall

print and other servers

other servers

print

Local areanetwork

email server

the Internet

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

Fehler

Verlust der Auftragsnachricht (1)Verlust der Ergebnisnachricht (2)Ausfall des Servers (3)Ausfall des Klienten (4)

Klient

Server

(1) (2)

(4)

(3)

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

Fehlerbehebung und Probleme

Client wartet und versucht...... nach Timeout ein erneutes Senden,kann aber nicht zwischen verschiedenen

Fehlersituationen unterscheiden.Erneutes Senden führt zur erneuten Ausführung.Client antizipiert eventuell neuen Zustand nicht.

Transaktionskonzept erforderlich (teuer!)

Festlegung von Dienstgüte-Kriterien

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

Fehlerbehandlungsstrategien

MaybeAt-least-onceAt-most-onceExactly-once

FehlerfreierAblauf

Nachrichten-verluste

Server-ausfall

A: 1 E: 1

A: 1 E: 1

A: 1 E: 1

A: 1 E: 1

A: 0/1 E: 0/1

A: ≥ 1 E: ≥ 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

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

Inhalte: ein Überblick Einführung, Nebenläufige Kontrollflüsse, Kommunikation Middleware, Entfernter Methodenaufruf, RMI, Corba Objektmigration und technische Grundlagen von Agenten, Voyager Spontane Vernetzung und entfernter Datenbankzugriff, Jini Multitier-Architekturen, J2EE:

Dynam. Generierung von Web-Seiten Konfigurierbare Komponenten für Geschäftsanwendungen Grundlagen der Transaktionsbehandlung Fortsetzung Transaktionsbehandlung und Aspekte der Sicherheit

Dienste und Dienstvermittlung, SOAP, WSDL, UDDI Kryptographie und Sicherheitsdienste Zahlungssysteme im Internet Verteilte Multimediasysteme, Quality of Service (QoS)

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

Überblick: Verteilung und Kommunikation Finden von Objektreferenzen

Namen vs. Objektbeschreibungen Lokale Referenzen (Stub) vs. Objekte in Wirtsumgebung Marshalling/Unmarshalling

Externe Datenrepräsentation (mit pragm. Einschränkungen) Serialisierung von Objektstrukturen Ggf.: Kommunikation von Klassendefinitionen

Kontrollaspekte Dynamische Integration/Anmeldung (Abmeldung?) Synchrone vs. asynchrone Kommunikation Ereignisbenachrichtigung

Nutzungsrechte, Gültigkeitseinschränkungen (z.B. Leasing)

„Middleware“

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

Verteilung: Probleme und Herausforderungen

Zusatzaufwand (Overhead)Bestimmung der „Grenze“ der

übermittelten Objektstrukturen: Balancierung

Synchronisation, Serialisierbarkeit, Locking, Deadlocks, TransaktionenSicherheit, Verfügbarkeit, Gültigkeit, Reservierung (QoS)Abrechnungswesen

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

Nebenläufigkeit

Ausführung mehrerer Programme (Betriebssystem)Oder: mehrere Kontrollflüsse in einem Programm:

(in Java Threads genannt) Zugriff auf gemeinsamen Speicher Besser: Referenzierung gemeinsamer Objekte

Einsatzspektrum Problem läßt sich in mehrere Kontrollflüsse zerlegen In verteilten Systemen häufig:

Abspaltung von Prozessen um Server nicht zu blockieren

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

Motivation Nebenläufigkeit

ServerClient1 Client2

Handler1

Handler2

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

Nebenläufigkeit und Synchronisation

Ggf. müssen Threads auf andere Threads wartenMeist kein aktives Warten auf Partner

(busy waiting) gewünschtVerwaltung von Threads durch „Laufzeitsystem“Zustände eines Threads:

laufend lauffähig (aber ein anderer ist gerade „dran“) blockiert, in Warteschlange wartend blockiert, reaktivierbar nach Zeitlimit

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

ProblemeVerklemmung (deadlocks)

wechselseitiges Warten auf reservierte BetriebsmittelVerhungern (livelocks)

Warten auf Ressourcen, die nie zur Verfügung stehenUngleichbehandlung (unfairess)

Bevorzugung von bestimmtenProzessen bei der Ressourcenverteilung

Wettlaufeffekte (race conditions) Ergebnis einer Berechnung hängt von

Ausführungsreihenfolge ab (-> transiente Fehler)

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

Threads in Java (1)

class ExampleThread extends Thread { ... ExampleThread(int param) { ... } public void run() { ... } public 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

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

Threads in Java (2)

class ExampleRunnable extends SomeClass implements Runnable { ExampleRunnable(int param) { ... } public void run() { ... } public static void main(String[] args) {

ExampleRunnable r = new ExampleRunnable (42); new Thread(r).start(); } }

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

Ein Beispiel: Primzahlen

Primzahl?(n): Sieb des Eratosthenes

Bis sqrt(n)

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

PrimCalculator: die simple Variante

public class PrimCalculator { public boolean isPrim(int n) {

Sieve sieve = new Sieve(n+1); return sieve.isPrim(n); }

public 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

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

Sieb

public class Sieve { ... public Sieve(int n) { ... } public isPrim(int n) {

for (int aPrim = 2; aPrim <= rootN; aPrim = nextPrimAfter(aPrim)) { filter(aPrim); } return isMarked(n); }

private void filter(int prim) { ... } private int nextPrimAfter(int prim) { ... } }

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

Sieb: ein Beispiel

Motivation: 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

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

PrimCalculator: mit Threads (1)public class PrimCalculator extends Thread {

int n; PrimCalculator (int n) { this.n = n; } public void run() {

Sieve sieve = new Sieve(n+1); boolean result = sieve.isPrim(n); System.out.println("Value "+ n +" is" + (result?"":" not") +" a prim"); }

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

PrimCalculator: mit Threads (2)

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

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

PrimCalculator: eine weitere Variante

Nebenläufiges Herausfiltern

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

Synchronisation / Zugriff auf gemeinsame Daten

Public class Bank { ... public float getAmount(Object o); { ... } public void incrAmount(Object o, float amount);

{ ... } }public class Client extends Thread {

Bank b; public Client(Bank b) {

this.b = b; b.setAmount(this,0.0); } public synchronized void addToSalary(float amount) {

float oldAmount = b.getAmount(this); b.setAmount(oldAmount + amount) }

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

Nebenläufigkeit und Verteilung: Server

public class Server extends Thread { public Server() { this.start() } public static void main(String[] args) {

new Server(); } Public void run() {

while (true) { System.out.println("waiting for new task"); try { System.in.read(); } catch (...) { ... } Handler handler = new Handler } } }

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

Nebenläufigkeit und Verteilung: Handler

public class Handler extends Thread { public Handler() { this.start() } Public void run() {

System.out.println ("Doing some work ..."); try{ Thread.sleep(1000); } catch ( ... ) { ... } System.out.println ("done"); } }

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

Asynchrone Aufrufe

Callback vs. Polling

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

Verteilung und Kommunikation

Kommunikationsprotokoll Beispiel: TCP/IP Schicht 4 (bzw. 3) des ISO/OSI

Referenzmodells Transport von Informationen über ein

Netzwerk Zwei Arten:

TCP UDP

Physical

ApplicationPresentation

SessionTransportNetworkData link

the rest of

email server

Web server

Desktopcomputers

File server

router/firewall

print and other servers

other servers

print

Local areanetwork

email server

the Internet

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

Was haben wir heute gelernt?

Thema: Nebenläufigkeit und Verteilung Probleme bei Nebenläufigkeit Erste Lösungsansätze in Java


Recommended