Transcript Einfuehrung

Forschungszentrum Karlsruhe
Technik und Umwelt
Verteilte Systeme
Dozent: Clemens Düpmeier
http://www.iai.kit.edu/~clemens.duepmeier
/vs-vorlesung.html
Foliensatz 1:
Einführung,
Grundlegende Begriffe,
Systemmodelle
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Grundlegende Definition(en)
Fokussierung der Vorlesung
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Netzwerke und Verteilte Systeme
•
Netzwerke sind nicht im Fokus dieser Vorlesung!
•
Da vorher Vorlesung über Kommunikationstechnologien
ABER
•
Man benötigt ein Computernetzwerk, um ein verteiltes System
zu realisieren.
•
Was also ist ein verteiltes System?
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Was ist ein verteiltes System ?
Eine praxisorientierte Beschreibung:
Ein verteiltes System
•
besteht aus einer Menge autonomer Computer
•
die durch ein Computernetzwerk miteinander verbunden sind
und
•
mit einer Software zur Koordination ausgestattet sind.
Verteiltes System
(Sicht eines Benutzers)
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Was ist ein verteiltes System ?
•
Definition: Verteiltes System (nach 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 (hoffentlich auch durch diese Vorlesung)
•
Definition: Verteiltes System (nach Andrew S. Tanenbaum)
Ein verteiltes System ist eine Kollektion unabhängiger Computer,
die den Benutzern als ein Einzelcomputer erscheinen.
– impliziert, daß die Computer miteinander verbunden sind und
– die Ressourcen wie Hardware, Software und Daten gemeinsam benutzt werden.
– Es herrscht eine einheitliche Sicht auf das Gesamtsystem vor.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Was ist ein verteiltes System ?
Eine allgemeinere Beschreibung:
•
Ein verteiltes System ist ein System, in dem
– Hard-und Softwarekomponenten,
– die sich auf miteinander vernetzten Computern befinden,
– miteinander kommunizieren und ihre Aktionen koordinieren,
– indem sie Nachrichten austauschen.
•
Eine verteilte Anwendung ist eine Anwendung, die ein verteiltes System
zur Lösung eines Anwendungsproblems nutzt. Sie besteht aus
verschiedenen Komponenten, die mit den Komponenten des VS sowie
den Anwendern kommuniziert.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Warum sind Verteilte Systeme eigenes Thema
•Viele gleichzeitige („parallele“) Aktivitäten
•Exakte globale Zeit nicht erfahrbar/vorhanden
•Keine konsistente Sicht des Gesamtzustandes
•Kooperation durch Kommunikation
•Ursache und Wirkung zeitlich und räumlich getrennt
>Räumliche Separation,
autonome Komponenten
>Heterogenität
>Dynamik, Offenheit
>Komplexität
>Sicherheit
Clemens Düpmeier, 13.04.2015
+Probleme sequentieller
Systeme
–Synchronisation
schwieriger
+Nebenläufigkeit
–Programmierung
komplexer
+Nichtdeterminismus
+Zustandsverteilung
–Testen
aufwendiger
Forschungszentrum Karlsruhe
Technik und Umwelt
Fokus der Vorlesung
• Der Fokus der Vorlesung liegt auf "Verteilte
Anwendungen" nicht auf Hardware
• Insbesondere auf Verteilten Business
Anwendungen
– Software-Architekturen
– Notwendige Eigenschaften solcher Systeme
– Kommunikation zwischen Komponenten Verteilter
Anwendungen
– Hilfsmittel, z.B. Middleware + Application Server
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Beispiel für Verteilte Business-Anwendung
Quelle: Prof. Thai
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Jede Menge Daten + Datenaustausch
Quelle: Prof. Thai
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Jede Menge Anforderungen an Eigenschaften
Quelle: Prof. Thai
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Wichtige Eigenschaften
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Wichtige Eigenschaften
• Nebenläufigkeit
• Kontrollierte, gemeinsame
Ressourcennutzung
• Skalierbarkeit
• Sicherheit
• Fehlertoleranz
• Transparenz
• Offenheit
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Nebenläufigkeit (Concurrency)
•
Gesamtsystem besteht aus Softwarekomponenten, die auf
verschiedenen Rechnersystemen laufen
– Dabei können Aktivitäten im Gesamtsystem sowohl auf einem Rechner,
– parallel als auch parallel auf verschiedenen Rechnern ablaufen
•
Nebenläufigkeit kann es z.B. bei
– Clients (Anwendungsprogramme, z.B. Videokonferenz) und
– Servern (Zugriff auf Ressourcen, z.B. Datei) geben.
•
Wichtiges Aspekte:
– Synchronisation der Aktivitäten, z.B. um Daten konsistent zu halten.
– Verbesserung des Durchsatzes und Performance durch Paralellisierung
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Gemeinsame Ressourcennutzung
•
Hardware: Drucker, Festplatten, Scanner, etc.
•
Daten: Datenbankobjekte, Dateien, etc.
•
Client-Server Model: Server verwaltet Ressourcen, die Clients nutzen
•
Verteilte Objekte: Server bietet Dienste über Verteilte Objekte, die
Clients gemeinsam nutzen
•
Verteilte Services (komplexer Dienstleistungen, die über Netz
aufrufbar sind)
– z.B. Bezahldienste, Flugbuchung, etc.
•
Problematik:
– Regelung nebenläufiger Zugriffe
– Fragen der Konsistenz und der Fehlertoleranz.
– Fragen der Skalierbarkeit
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Skalierbarkeit
• Ein Softwaresystem ist skalierbar, wenn durch
Hinzufügen weiterer Hardware
– der Durchsatz des Systems
– oder die Anzahl paralleler Nutzeranforderungen erhöht
werden kann
• Setzt voraus, dass das System so entworfen ist, dass
Funktionalitäten
– parallel auf verschiedenen Rechnern (CPU's) ausgeführt
werden können
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Verteilung des DNS Namenraums
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Sicherheit
•
Vertraulichkeit: Daten können nur von dem gewünschten
Empfänger gelesen werden.
•
Integrität: Die Daten wurden während der Übertragung nicht
verändert.
•
Authentizität: Die Daten wurden tatsächlich von der Person
gesendet, die behauptet, der Sender zu sein.
•
Verfügbarkeit: Ein Dienst darf durch eine (Denial of Service)
Attacke nicht ausser Kraft gesetzt werden.
•
Sicherheit für mobilen Code: Mobiler Code darf die lokale
Ressource nicht beschädigen und umgekehrt.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Fehlertoleranz
•
Fehler erkennen: z.B. durch Prüfsummen. Nicht erkennbar ist z.B.
ein Absturz eines entfernten Servers
•
Fehler maskieren: Erkannte Fehler verbergen oder abschwächen,
z.B. Wiederholung von Nachrichten
•
Fehler tolerieren: z.B. durch Redundanz, Timeout
•
Wiederherstellung nach Fehlern: z.B. Rückkehr in einen sicheren
Zustand, wenn ein Fehler entdeckt wird (Software Recovery).
•
Redundanz: Fehlertoleranz durch redundante Komponenten, z.B.
Standby-Maschinen, doppelte Komponenten, doppelte Dienste.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Transparenz
Transparenz wird definiert als das Verbergen der Separation der einzelnen
Komponenten in einem verteilten System vor dem Benutzer und dem
Applikationsprogrammierer, so dass das System als Ganzes wahrgenommen
wird, und nicht als Sammlung voneinander unabhängiger Komponenten.
ISO (International Standards Organization) und ANSA (Advanced Network Systems
Architecture) identifizieren acht Formen der Transparenz:
•
Zugriffstransparenz ermöglicht den Zugriff auf lokale und entfernte Ressourcen
unter Verwendung identischer Operationen.
•
Positionstransparenz (Ortstransparenz) erlaubt den Zugriff auf die Ressourcen,
ohne dass man ihre Position/ihren Ort kennen muss.
•
Nebenläufigkeitstransparenz erlaubt, dass mehrere Prozesse gleichzeitig mit
denselben gemeinsam genutzten Ressourcen arbeiten, ohne sich gegenseitig zu
stören.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Transparenz
•
Replikationstransparenz erlaubt, dass mehrere Instanzen von Ressourcen
verwendet werden, um die Zuverlässigkeit und die Leistung zu verbessern, ohne
dass die Benutzer oder Applikationsprogrammierer wissen, dass Repliken
verwendet werden.
•
Fehlertransparenz erlaubt das Verbergen von Fehlern, so dass Benutzer und
Applikationsprogrammierer ihre Aufgaben erledigen können, auch wenn
Hardware- oder Softwarekomponenten ausgefallen sind.
•
Mobilitätstransparenz erlaubt das Verschieben von Ressourcen und Clients
innerhalb eines Systems, ohne dass die Arbeit von Benutzern oder Programmen
dadurch beeinträchtigt wird.
•
Leistungstransparenz erlaubt, dass das System neu konfiguriert wird, um die
Leistung zu verbessern, wenn die Last variiert.
•
Skalierungstransparenz erlaubt, dass sich System und Applikationen vergrößern,
ohne dass die Systemstruktur oder die Applikationsalgorithmen geändert
werden müssen.
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Offenheit
• Offenheit bzgl. Nutzung durch andere
Systeme
– Verwendung standardisierter Schnittstellen
• also bei Kommunikation,
Datenformattechnologien, etc.
• Bzgl. Nutzung anderer Systeme, Sprachen,
Betriebssystemen, ...
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Architektur und Systemmodelle
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Systemmodelle
•
Beschreibung der allgemeinen Eigenschaften und des Designs eines Systems
•
Das Modell sollte abdecken:
– Die wichtigsten Komponenten des Systems
– Die Art ihrer Interaktion
– Wie deren individuelles und kollektives Verhalten beeinflusst werden kann
•
Ein Architekturmodell
– vereinfacht und abstrahiert zunächst die Funktionen der individuellen Komponenten
eines verteilten Systems, um dann
– die Verteilung der Komponenten auf ein Netzwerk von Computern und
– die Beziehung der Komponenten (Rolle in der Kommunikation mit anderen,
Kommunikationsmuster) untereinander zu beschreiben.
•
Weitere Modelle: Interaktionsmodell, Fehlermodell, Sicherheitsmodell
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Verschiedene Blickwinkel auf verteilter Systeme
Rechnernetz mit
Rechnerknoten
Algorithmen u.
Protokolle
Objekte / Komponenten
P1
Physisch
verteilt
P2
Logisch
verteilt
P3
Zeit
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Softwarearchitektur
•
definiert also Softwarekomponenten des Systems
– ihre wesentlichen Eigenschaften
– und die Beziehungen untereinander
– und damit die "logische" Verteilung des Systems
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Komponenten und Abhängigkeiten
•
•
Jede Komponente definiert funktionalen Teil des
Systems; Pfeile definieren Abhängigkeiten
Je mehr Komponenten, um so modularer das
System
– Komponenten-basiertes Design und
sauberere Trennung von Funktionalitäten führt
zu besserer Wiederverwendbarkeit
– und mehr Möglichkeiten für Verteilung und
Parallelität
•
•
aber höherer Kommunikationsaufwand und evtl.
sinkende Performance
Hauptarchitekturziel: Ausgewogenheit zwischen
Flexibiliät und Performance
Quelle: Gustavo Alonso
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Weitere Anforderungen (siehe Eigenschaften)
•
Leistungsprobleme: durch beschränkte Verarbeitungs- und
Kommunikationskapazitäten:
– Antwortzeiten: schnelle und konsistente Antwortzeiten werden benötigt
– Durchsatz: Verarbeitungs- und Datenübertragungsgeschwindigkeit
– Ausgleich von Rechenauslastung: Nebenläufige Ausführung ohne Konkurrenz
um die Ressourcen
•
Dienstgüte (Quality of Service): Zuverlässigkeit, Sicherheit, Leistung (inkl.
Rechtzeitigkeitsgarantie), Anpassbarkeit
•
Caching und Replikation: Cache-Konsistenz-Protokoll notwendig
•
Zuverlässigkeitsprobleme:
– Fehlertoleranz: Korrekt arbeiten trotz Fehler!
– Sicherheit: Erzeugen von Vertrauen durch Schutz vor Angriffen!
– Korrektheit: aktuelle Forschung
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Softwareschichten
• Die Komponenten einer
Softwarearchitektur können in
logische Schichten (Layer)
angeordnet werden
Präsentation
– z.B. in 3-Schichten
• Schicht mit Komponenten zur
Erzeugung der GUI und
Kommunikation mit Nutzer
Businessebene
• Schicht mit Komponenten mit
Businesslogik
• Schicht mit Komponenten zum
Daten-/Ressourcemanagement
und Zugriff
Clemens Düpmeier, 13.04.2015
Datenmanagement
Forschungszentrum Karlsruhe
Technik und Umwelt
Auch in vier oder fünf Schichten
Präsentation
Dialogsteuerung
Anwendungslogik
Dienste und Datenlogik
Datenzugriff
Clemens Düpmeier, 13.04.2015
Terminals, Windows
Geräteabhängige Darstellung
Geräteunabhängige Steuerung und
Koordinierung des Dialogs mit dem
Anwender
Anwendungsspezifische Steuerungs-und
Verwaltungsfunktionen, Teile der
Business Logik
Datenselektion und -manipulation
E-Mail, Drucken, Mailing
Verbindung zum DBMS
Forschungszentrum Karlsruhe
Technik und Umwelt
Tiers (Verteilung von Schichten auf Rechner)
Kontrolle
Modell
80
70
60
Ost
West
Nord
Präsentation
90
50
40
30
20
0
1. Qrtl.
2. Qrtl.
3. Qrtl.
Funktion
1.
2.
3.
Qrtl. Qrtl. Qrtl.
Wie sollen Funktionalitäten (z.B. als Schichten)
auf verschiedene Rechner verteilt werden?
Clemens Düpmeier, 13.04.2015
2. Qrtl. 3. Qrtl.
27,4
90
38,6
34,6
46,9
45
100
80
60
40
20
0
1. Qrtl.
20,4
30,6
45,9
10
Forschungszentrum Karlsruhe
Technik und Umwelt
1-Schichtverteilung (1-Tier)
• Alle Softwarelayer befinden sich auf einem Rechner
– Management der Ressourcen erfolgt zentral
– Software selbst kann hoch-optimiert werden
(Trennung zwischen Schichten hier nicht zwingend
notwendig)
• Nutzer arbeiten mit einer monolithischen
Anwendung
• Mehrere Rechner mit einer solchen über (grafische)
Terminals
• Typisch bei Mainframeanwendungen
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
2-Schichtenverteilung (2-Tier)
•
Typischer Weise Trennung von Präsentation und dem Rest
(Business- und Datenlogik)
– Client enthält Präsentation mit GUI und behandelt Interaktion mit
Nutzer
– Server kapselt Business- und Datenlogik
•
Clients sind (weitgehend) unabhängig voneinander
– Es kann auch verschiedene Clients für verschiedene
(Teil)funktionalitäten geben
•
Ressourcenmanagement sieht nur eine Businesslogik als Client
– hier lässt sich der Zugriff daher gut optimieren
•
Erlaubt die Nutzung komplexerer GUI's mit intensiverer CPUNutzung, da Clients verteilt sind
•
Definierten Notwendigkeit zur Bereitstellung von universellen
Kommunikationsschnittstellen zwischen Client und Server
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Thin Client / Thick Client
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Client/Server Modelle
Client
Auftrag
Antwort
Client
Auftrag
Server
Server
Antwort
Reagierender Prozeß
•bearbeitet Anfragen
•erfüllt Aufträge
Initiierender Prozeß
•stellt Anfragen
•erteilt Aufträge
Legende:
Prozeß:
Clemens Düpmeier, 13.04.2015
Computer:
Forschungszentrum Karlsruhe
Technik und Umwelt
Mehrfache Server
Dienst
Server
Partitition oder
Replikation von
Diensten
Server
Beispiel Partition:
WWW
Server
Beispiel Partition
und Replikation:
DNS
Client
Client
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Proxy-Server und Cache
Web
server
Client
Proxy
server
Client
Web
server
Proxy-Server: Gemeinsamer Cache
Zweck von Proxy-Servern: erhöhte Leistung und Verfügbarkeit
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Gleichrangige Prozesse (P2P)
Applikation
Applikation
Koordinierungscode
Koordinierungscode
Applikation
Koordinierungscode
Oft bessere Leistung als Client-Server
mit vielen ähnlichen Prozessen und
vorwiegend lokaler Kommunikation.
Beispiel: Whiteboard
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Nachteile der 2-Schichtenverteilung
•
•
Ein Server muss in der Regel alle Clients bedienen
oder ich hab mehrere Server, die bzgl. dem Ressourcenzugriff nicht
synchronisiert sind
– denn es gibt ja keine gemeinsam genutzte Business-Logik (wo diese
stattfinden kann)
– Beim Zugriff auf Server mit verschiedenen Funktionalitäten ist der
Client der Integrator => Fat Clients
• Der Client muss nun wissen, wo was ist, wie er darauf zugreifen kann, wie
Konsistenz garantiert werden kann, etc.
•
•
Das ist in nahezu allen Aspekten (Software Design, Portabilität, Code
Rebenutzung, Performanz) ineffizient
Lässt sich nur durch Erweiterung der Schichtverteilung lösen
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
3-Schichtenverteilung (und mehr)
•
Bei der 3-Schichtenverteilung im klassischen Sinne sind Präsentations-,
Business- und Datenlayer getrennt
– voll modularisiertes System
– Verschiedene Layer können über Netzwerktechnologien miteinander
kommunizieren
•
•
Die Layer werden dabei oft auch auf verschiedene Rechnersysteme verteilt
Middleware wird als universelle Kommunikations-"Brücke" zwischen den
einzelnen Schichten eingesetzt
– trennt Anwendungslogik zu einem gewissen Teil von der Kommunikationslogik
– erhöht die Interoperabilität von Softwaresystemen über Rechnergrenzen
hinweg
– Kann verschiedene Hilfsdienste bereitstellen, um wichtige Eigenschaften des
Verteilten Systems zu garantieren
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Architektur mit 3-Schichtenverteilung
Präsentationsschicht
Applikationslogik
Datenlogik
Clemens Düpmeier, 13.04.2015
Datenlogik
Forschungszentrum Karlsruhe
Technik und Umwelt
Middleware abstrahiert vom Betriebssystem
•Plattformunabhängig
•Middlewareabhängig
Applikationen, Dienste
Middleware
Betriebssystem
Computer- und Netzwerkhardware
Clemens Düpmeier, 13.04.2015
Middleware (Verteilungsplattform) :
Transparenz der
•Heterogenität existierender
Hardware und Betriebssysteme
•Verteilung
Plattform: „unterste“ Hardware- und
Softwareschichten (Low-Level)
werden häufig als Plattform bezeichnet.
Beispiele: Intel x86/{Windows|Linux},
PowerPC/MacOS,
Solaris
Forschungszentrum Karlsruhe
Technik und Umwelt
Middleware als Zwischenschicht zur
Kommunikation zwischen Layer
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Middleware als Integrationshilfsmittel
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
N-Schichtenverteilung
• Entweder durch Hinzufügen weiterer
Schichten
– z.B. bei Web-Business-Applikationen durch
zusätzlichen Web-Tier
• Durch Verknüpfungen mehrer MehrschichtAnwendungen über zusätzliche
Integrationslayer
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
4-Schichten-Architektur mit Web-Layer
•
Für solche Architekturen
setzt man häufig
Komponenten-oriente
Frameworks ein, die auf
Application Server basieren
– Komplette Frameworks
zum Schreiben von
Mehrschicht-
Anwendungen
• .NET Framework
• Java JEE
Clemens Düpmeier, 13.04.2015
Forschungszentrum Karlsruhe
Technik und Umwelt
Gliederung der weiteren Vorlesung
•
Kommunikation und Parallelität – Grundlegende Begriffe und Technologien
– Client-Server Kommunikation
– Nebenläufigkeit (Parallelität), Synchronisationsprobleme, Verteilte
Transaktionen
•
•
Verteilte Objektkommunikation und Namensdienste
Middleware, Verteilte Softwarekomponenten und Application Server
– Verteilte Komponenten und ihre Kommunikation
– Kommunikation über Nachrichten (MOM – Message Oriented Middleware)
•
Die Rolle des Web in Verteilten Business-Applikationen
– Web als Präsentationsschicht
– Web als Servicekommunikationsschicht
– SOA (Service Oriented Architecture)
Clemens Düpmeier, 13.04.2015