realisierung verteilter anwendungen zvoraussetzungen ydatenstrukturen und algorithmen, java, html,...
TRANSCRIPT
![Page 1: Realisierung verteilter Anwendungen zVoraussetzungen yDatenstrukturen und Algorithmen, Java, HTML, XML zÜbungen im Rahmen des Software-Praktikums zLernziele](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/7.jpg)
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
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/12.jpg)
Ü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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/31.jpg)
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
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](https://reader035.vdocuments.mx/reader035/viewer/2022070507/570491cd1a28ab14218deba1/html5/thumbnails/32.jpg)
Was haben wir heute gelernt?
Thema: Nebenläufigkeit und Verteilung Probleme bei Nebenläufigkeit Erste Lösungsansätze in Java