Kommunikation und Kooperative Systeme Teil II Verteilte Dienste und Anwendungen Nik Klever FB Informatik - FH klever@fh-augsburg.de
Einführung Begriffsbestimmung Kommunikation: Austausch, Übermittlung und Vermittlung von Wissen Kooperation: jede Zusammenarbeit zur Erreichung eines gemeinsamen Zwecks in der Literatur werden im wesentlichen die Systeme zur computergestützten Gruppenarbeit (CSCW) als Kooperative Systeme bezeichnet zwischen der Kommunikation als Grundlage aller Wissensübermittlung und den Kooperativen Systemen sind jedoch noch die Verteilten Systeme angesiedelt. die Vorlesung Verteilte Systeme enthält im wesentlichen die Grundlagen und Algorithmen von verteilten Systemen. dieser Teil der Vorlesung wird nun versuchen, die Lücke zwischen dem Teil Kommunikation, den Verteilten Systemen und den Kooperativen Systemen zu schließen, indem sie die Verteilten Dienste bzw. Verteilte Anwendungen, die als Grundlagen für die Kooperativen Systeme notwendig sind, stärker in Betracht zieht. die eigentlichen Kooperativen Systeme werden in dieser Vorlesung daher erst am Ende der Vorlesung als eine spezielle verteilte Anwendung betrachtet
Inhalt 01 Grundlagen bzw. Wiederholung "Verteilte Systeme" 02 Entfernte Prozeduraufrufe 03 Namensdienste DNS, URL, URN 04 Namensdienste - LDAP, Datenrepräsentation 05 Zeitdienste - NTP 06 Dateisystemdienste - NFS 07 Dateisystemdienste - Samba 08 WebServices - SOAP 09 WebServices - WSDL, UDDI 10 Gruppenarbeit, Workflow (CSCW) 11 Peer-to-Peer Netze, Gridcomputing 12 Sicherheit - Kerberos
Grundlagen Verteilte Systeme Definition (Tanenbaum): Ein verteiltes System ist eine Menge unabhängiger Computer, die dem Benutzer wie ein einzelnes, kohärentes System erscheinen Ziele: Ein verteiltes System sollte es einfach machen, Benutzer mit Ressourcen zu verbinden; es sollte die Tatsache verbergen, dass die Ressourcen über ein Netzwerk verteilt sind; es sollte offen sein; und es sollte skalierbar sein;
Verteiltes System - als Middleware angeordnet
Unterschiedliche Formen der Transparenz
Offenheit Offenes verteiltes System ist ein System, das Dienste den Standardregeln entsprechend anbietet Standardregeln in Netzwerken: Protokolle, die Format, Inhalt und Bedeutung von gesendeten und empfangenen Nachrichten kontrollieren Standardregeln in verteilten Systemen: im Allgemeinen durch die Definition von Schnittstellen (häufig in einer IDL Interface Definition Language) spezifiziert Wichtig dabei: Interoperabilität zweier implementierter Systeme/Komponenten Portabilität eines Systems/Komponenten Flexibilität und Erweiterbarkeit
Skalierbarkeit eines Systems Skalierbar hinsichtlich der Größe des Systems (hinzufügen weiterer Benutzer und Ressourcen) Skalierbar hinsichtlich der geografischen Verteilung (Benutzer und Ressourcen liegen räumlich sehr weit auseinander) Skalierbar hinsichtlich der Administrierbarkeit (einfach Verwaltung auch wenn es sich über viele administrative Organisationseinheiten erstreckt)
Beschränkung der Skalierbarkeit Beispiele
Dezentrale Algorithmen Es sollten nur dezentrale Algorithmen verwendet werden (um die Netzwerk- Performance zu erhalten) Eigenschaften der dezentralen Algorithmen: Keine Maschine besitzt vollständige Informationen über den Systemstatus Maschinen treffen ihre Entscheidungen nur auf lokalen Informationen basierend Durch den Ausfall einer Maschine wird der Algorithmus nicht zerstört Die Existenz einer globalen Uhr wird nicht implizit vorausgesetzt
Techniken der Skalierbarkeit Verbergen der Kommunikationslatenzzeiten man versucht die Wartezeit auf die Antworten von entfernten Dienstanforderungen zu vermeiden im wesentlichen bedeutet dies, die Kommunikation asynchron aufzubauen. oder auch Teile der Anwendung auf den Client zu verlagern Verteilung Beispiele: DNS, Web Replikation Beispiel: Caching
Skalierungstechnik: Verlagern von Aufgaben auf den Client
Skalierungstechnik: Verteilung des Namensraums in Zonen
Überblick über Verteilte Betriebssysteme (DOS), Netzwerkbetriebssysteme (NOS) und Middleware
Multicomputer- Betriebssystem
Netzwerkbetriebssysteme
Beispiele für Netzwerkdienste rlogin rcp Dateiserver
Dateiserver Fachhochschule
Netzwerkbetriebssysteme primitiver und einfacher als verteilte Betriebssysteme fehlende Transparenz (Dateinamen abhängig vom Ort, explizite Anmeldung auf entfernten Maschinen) einfach Maschinen einzubinden oder herauszulösen
Middleware Fachhochschule
Middleware-Modelle Unix bzw. Plan 9: alle Ressourcen werden als Datei behandelt verteilte Dateisysteme: ähnlich, aber nicht so streng nur für traditionelle Dateien Remote Procedure Calls (RPCs) verbergen der Netzwerkkommunikation Verteilte Objekte
Middleware-Dienste Kommunikationsfunktionen auf höherer Ebene Namensgebung Persistenzdienste (über verteiltes Dateisystem oder über integrierte Datenbanken) verteilte Transaktionen Sicherheitsfunktionen
Middleware und Offenheit In einem offenen auf Middleware basierenden verteilten System sollten die von jeder Middleware-Schicht verwendeten Protokolle gleich sein, ebenso wie die Schnittstellen, die sie für Anwendungen bieten
Vergleich der Systeme
Client-Server-Modell Client-Server-Zusammenarbeit oder Anforderungs-/Antwort-Verhalten
Client-Server-Aufrufe
Web-Proxy-Server Fachhochschule
Zusammensetzung Client-Server-Anwendungen Benutzeroberfläche Client-Aufgabe grafische Windowsoberfläche (MS-Windows, X-Windows) oder Browseroberfläche Verarbeitungsebene Server-Aufgabe Unterschiedliche Aspekte je nach Aufgabe nie gleich Datenebene Server-Aufgabe Persistenz Datenunabhängigkeit
Suchmaschine als Client- Server-Anwendung
Client-Server-Architekturen Einfache Client-Server-Anordnung ein Client (Benutzeroberfläche) ein Server (Verarbeitungs- und Datenebene) Mehrschichtige Architekturen ( Multitier ) vertikale Verteilung
Alternative Client-Server-Anordnungen
Moderne Architekturen Horizontale Verteilung bei dieser Art Verteilung können ein Client oder ein Server physisch in logisch äquivalente Teile unterteilt werden jeder Teil arbeitet mit einem eigenen Anteil der vollständigen Datenmenge, sodass die Gesamtlast ausgeglichen ist Peer-to-Peer Verteilung es muss kein Server vorhanden sein
Horizontaler Webdienst
Interaktionsverhalten von verteilten Systemen Die Verarbeitung erfolgt innerhalb von Prozessen Die Prozesse verständigen sich über Nachrichten, wodurch Kommunikation (Informationsfluss) und Koordination (Synchronisierung und Reihenfolge der Aktivitäten) zwischen den Prozessen entsteht Probleme: Verzögerungen und Genauigkeit der Koordination (Zeitkonzept) Interaktionsmodelle: synchron und asynchron
Interaktion über Prozesse und Kanäle
Fehlerverhalten Fachhochschule
Sicherheitsverhalten Definition (Coulouris et.al.): Sicherheit für ein verteiltes System kann erzielt werden, indem die Prozesse und die für ihre Interaktion genutzten Kanäle gesichert werden und indem die Objekte, die sie kapseln, gegen unerlaubten Zugriff geschützt werden
Datendarstellung Warum ist überhaupt eine Datendarstellung notwendig? In Prozessen werden Informationen in Form von Datenstrukturen dargestellt (z.b. Mengen von verknüpften Objekten) In Kanälen bestehen die Informationen in den Nachrichten aber aus Bytefolgen Unabhängig von der verwendeten Kommunikationsform müssen daher die Datenstrukturen zu flachen Konstrukten (Bytefolgen) umgewandelt werden