Informatik Theoretische Informatik Verteilte Systeme Technische Informatik - Methoden u. Werkzeuge - System- u. Anwendungskomponenten - Qualitätssicherung etc. - Betriebs- Kaufmännische systeme Informations- Datenbank- systeme systeme - Technische - KommuInformationsnikationssysteme systeme etc. etc. Grundlagen Hardware Methodenlehre Basissoftware Anwendungen Abb2 in Informatik-Spektrum, Heft 25/1, S. 39-51, 2002: Erich Ortner, Sprachingenieurwesen, Empfehlung zur inhaltlichen Weiterentwicklung der (Wirtschafts-)Informatik 2 Lernziele Laut Modulhandbuch für das Semester (16 Wochen): – Vorlesung: 42h – Praktika: 16h – Eigenstudium: 126h Anwendungen der Informatik - Rechnertechnologie - Netze etc. Arbeitsaufwand Praktische Informatik - Formale Sprachen - Abstraktionstheorie etc. Organisation 1 Konstruktionslehre der Informatik Grundlagen verteilter Systeme (VS) beherrschen (1. 2. 3.) Eine System-Infrastruktur eines VS entwerfen und realisieren können (5. 6.) Eine Middleware eines VS entwerfen und realisieren können (5. 6.) Real (Feiertags bedingt) für das Semester (15 Wochen): – Vorlesung/Woche: 3h (11 Termine) – Praktika/3Wochen: 3h ( 4 Termine) – Eigenstudium/Woche: 6,3h (15 Termine) Hier 1h ≡ 60 Minuten, Im Modulhandbuch 1h ≡ 45 Minuten Ein Konzept für replizierte Daten entwerfen und realisieren können (5. 6.) Verteilte Algorithmen entwerfen und realisieren können (5. 6.) Möglichkeiten, Grenzen und Risiken verteilter Systeme verstehen (4.) 3 Organisation der Veranstaltung Inhalt der Vorlesung www.informatik.haw-hamburg.de/~klauck/verteiltesysteme.html 1. Einführung und Systemmodelle 2. Interprozesskommunikation (IP, Client/Server,...,RMI) 3. Namensdienste 4. Zeit, Synchronisation und globale Systemzustände 5 Übereinstimmung und Koordination 5. 6. Verteilte Transaktionen 7. Replikation 8. Sicherheit: Angriff 9. Sicherheit: Verteidigung 4 Stunden (2 Viertel) pro Woche – 4 Stunden Vorlesung (11 Termine) Raum Stiftstr69 R304a Donnerstag 1230-1545 – 4 Stunden (2 Viertel) Praktikum (4 Termine) 5 Raum 0765 Mittwoch 1230-1545, je nach Gruppenzugehörigkeit – Prüfungsform: Klausur (90 min) Wie üblich – Vorlesung zur Vermittlung der theoretischen Grundlagen – Praktikum zur praktischen Erfahrung 6 7 1 Terminplan Datum VL 08:15-11:30 Thema 25.03. VL1 Organisatorisches, Einführung 26.03. VL2 P-Aufgabe 1, Systemmodelle, IPC 01.04. VL3 IPC 02.04. VL4 Namensdienst 09.04. VL5 P01 Zeit, Synchronisation und globale Zustände 16.04. VL6 P01 Logische Uhren 23.04. VL7 P01 P-Aufgabe 2, Globale Systemzustände 30.04. VL8 Wahlen, Wechselseitiger Ausschluss 07.05. VL9 P02 P-Aufgabe 3, Verteilte Transaktionen, Replikationen 21.05. VL10 P02 Replikationen 28.05. VL11 P03 P-Aufgabe 4, Sicherheit Anforderungen Betriebssysteme (BS/BSP) da in diesen Umgebungen die Verteilten Systeme arbeiten Rechnernetze (RN/RNP) da dies die notwendigen g Basisstrukturen sind auf/in denen Verteilte Systeme ablaufen Kenntnisse der Lehrveranstaltungen des 1-ten bis 4 -ten Semesters da Verteilte Systeme die Informatik vereint 9 10 Anforderungen Anforderungen Kompetenzen aus Algorithmen und Datenstrukturen (AD/ADP) Kompetenzen aus Betriebssysteme (BS/BSP) … können Algorithmen und Datenstrukturen entwerfen … können das Verhalten von Computersystemen analysieren und beschreiben … können Grundkonzepte der nebenläufigen Programmierung anwenden K Kompetenzen t aus Rechnernetze R h t (RN/RNP) Kompetenzen aus Software Engineering I (SE1/SEP1) … können Ausschnitte aus der Realwelt mit Hilfe geeigneter, aktueller Methoden modellieren … beherrschen Standardsituationen im Bereich der Modellierung (Architekturen, Entwurfsmuster) … können einen Systementwurf in eine produktiv einsetzbare Systemimplementierung überführen … können die ökonomischen Randbedingungen und deren Auswirkungen sicher beurteilen und dementsprechend die Projekte planen Kompetenzen aus Software Engineering II (SE2/SEP2) … verstehen die Konzepte und die Funktionsweise von Rechnernetzen … können auf der Socket-Schnittstelle basierende Client- /ServerAnwendungen erstellen … können ausgewählte Vorgehens- und Prozessmodelle anwenden 11 12 Kompetenzen lernen Praktikum / PVL Gruppenaufteilung: 2 Studierende in einem Team (Meldung bis zum 31.03.15 1600 Uhr!) PVL-Bedingungen – Baut stark auf vorbereitende Arbeit auf! – Empfehlung: vor dem Praktikumstermin: Ziele festlegen, Arbeitsplan erstellen etc.; das Praktikum als Präsentation/Anwendung nutzen – Details siehe Aufgabenstellungen! Bis Freitag Abend 2000 Uhr vor dem Praktikumstermin: Entwurf zusenden. Während des Praktikumstermins: Befragung/ Disputation von/mit Gruppen Die Frage ist nicht ob die Anforderungen erfüllt sind, sondern wie! Am Ende des Praktikumstermins (ca. 40 min): Gemeinsame Vorführung Am gleichen Tag bis 1600 Uhr: Abgabe der geforderten Unterlagen (digital!) – Anwesenheitspflicht (gesamte Praktikumszeit!) – Erfolgreiche Bearbeitung aller Aufgaben – Einhaltung aller Termine 13 14 2 Wozu Aufgaben? Praktikumsaufgaben Machst du es richtig? (Geschlossene Aufgabe: Wie viel ist 49 * 51? Defizitperspektive) oder Wie machst du es? (Offene Aufgabe: Wie rechnest du 49 * 51? Entwicklungsperspektive) Was will man erfahren, wenn eine Aufgabe gestellt wird? Programmiersprache Aufgabe 1 & 2: Erlang/OTP; Aufgabe 3: Java; Aufgabe 4: frei wählbar (innerhalb der durch das Labor vorgegebenen Rahmenbedingungen!); Teams (je zwei) verantwortlich für den gesamten Code der Aufgabe: Architektur und Programmcode müssen gut (frei) erklärbar sein. 4 Praktikumsaufgaben: – RMI mittels Erlang/OTP: message of the day (bereits online!) – Verteilte Algorithmen: Kontrolle und Verwaltung (bereits online!) – Middleware: Ein kleiner Blick hinter die Kulissen (bereits online!) – Zeit intensiv: ein Zeitmultiplexverfahren (bereits online!) Übernahme von Code Dritter: Ist maximal bei einer Aufgabe mit entsprechender Begründung (siehe Dokumentationskopf) und nur nach Ankündigung im Entwurf zulässig. Es dürfen maximal 50% des gesamten Codes dieser Aufgabe Fremdcode sein und dieser darf nicht die Kernkonzepte betreffen. Diese müssen stets selbst implementiert werden. 15 Dokumentationskopf Team: <Teamnummer>, <Namen der Teammitglieder> Aufgabenaufteilung: 1. 2. 16 Clean Code Developer Details siehe Vorlage <Aufgaben, für die Teammitglied 1 verantwortlich ist> <Aufgaben, für die Teammitglied 2 verantwortlich ist> Quellenangaben: <Angabe von wesentlichen Quellen>,<Namentliche Nennung von Studierenden der HAW, von denen Quellcode übernommen wurde> Begründung für Codeübernahme: <Wurde Quellcode übernommen, übernommen ist hier ausführlich zu begründen, warum dies gemacht wird, warum diese Quelle ausgewählt wurde und wie der dadurch verlorene Lerneffekt auf andere Art und Weise sichergestellt wird.> Bearbeitungszeitraum: <Datum und Dauer der Bearbeitung an der Aufgabe von allen Teammitgliedern> Aktueller Stand: <Welche Teile der Software sind fertig inklusive Tests, welche sind fertig, aber noch nicht getestet, welche müssen noch implementiert werden> Änderungen im Entwurf: <Vor dem Praktikum auszufüllen: Welche Änderungen sind bzgl. dem Vorabentwurf vorgenommen worden.> Entwurf: <Entwurf nach den bekannten SE-Richtlinien und den Vorgaben gemäß Aufgabenstellung.> Sollte vielleicht auf Entwurf verzichtet werden, wenn letztlich in der Implementation die „Strukturwahrheit“ liegt? Nein, sicher nicht. Entwurf muss sein. Ohne Planung gibt es keine Zielvorstellung. Aber Entwurf und Implementation müssen dem „Don't Repeat Yourself“-Prinzip gerecht werden. Deshalb sollten Entwurf und Implementation sich so wenig überlappen wie möglich. […] Wenn das der Fall ist, stellen sie keine Wiederholungen mehr dar, sondern beschreiben unterschiedliches. Das bedeutet: Entwurf/Architektur kümmert sich nicht um die Implementation und Implementation kümmert sich nicht um Architektur. Und wo verläuft diese Trennlinie? Bei den so genannten Komponenten. Architekten kümmern sich nicht um den internen Aufbau von Komponenten. Für sie sind es Black Boxes, deren Klassenstruktur nicht architekturrelevant ist. Umgekehrt ist für einen Komponentenimplementierer die Architektur irrelevant. Was er zu implementieren hat, ergibt sich aus den Komponentenkontrakten, die seine Komponente importiert und exportiert. Einen größeren Zusammenhang muss er nicht kennen. Die Aufgabe der Architektur ist es mithin, Software in Komponenten zu zerlegen, deren Abhängigkeiten zu definieren und Leistungen in Kontrakten zu beschreiben. […] Und die Aufgabe der Implementation ist es, die von der Architektur definierten Komponenten zu realisieren. Wie sie das tun, ist nicht architekturrelevant. Ihre innere Struktur ist für die Architektur unsichtbar. 17 Warum erfüllen diese ihre Aufgabe? Entwurf? Entwurf: ADTs: Holdbackqueue: dict(NachrichtenNummer, Nachricht) Deliveryqueue: dict(NachrichtenNummer, Nachricht) ClientList: dict(PID,{LetzteNachrichtenNummer,TimeStamp}) in der Holdbackqueue können dank der eindeutigen nachrichtennummern, die nachrichten an jeder stelle eingefügt werden. werden Nach jedem einfügen wird anhand des keysets geprüft ob zu min(n) ein eintrag n+1 vorhanden ist. In der Deliveryqueue kann schnell auf eine beliebige nachricht zugegriffen werden. Nach jedem hinzufügen einer neuen nachricht wird die maximale nachrichten anzahl in Holdback und Delivery geprüft. Schneller Zugriff erfolgt auch bei der ClientList durch die eindeutige PID. Client Timeouts werden nach jedem receive des Servers geprüft. Auf Lücken in der Holdbackqueue wird nach jeden Empfangen einer neuen textzeile geprüft und entsprechend reagiert. Auch das passiert sehr performant, da nur der kleinste schlüssel gelöscht und die Differenz zum nächst größeren als Lücke ausgegeben werden kann. was soll das heißen? die stehen unsortiert in der hbq, weil sie über die nummer identifiziert werden können? 18 Entwurf? Was ist mit der Nachrichtennummer? Wer ist min(n) bzw. n? welche maximale anzahl an Nachrichten hat die hbq und warum? vorgegeben ist ja nur eine für die dlq. Wer läuft bis…? Und was wird pro Nachricht übertragen? Wieso schnell/ performant? Welches Verhalten ist entsprechend? Können Sie nach dem Entwurf die Aufgabe korrekt implementieren? Werden Sie bei dem Entwurf konzeptuelle Fehler im Nachhinein entdecken können? 19 20 3 Konstruktionsprinzip Praktikumsaufgaben Von innen nach außen: Sony Präsident Norio Ohga: CD muss die Neunte Symphonie Bethovens in der Fassung von Karajan mit 72 Minuten speichern können. Daher hat diese den Durchmesser von 12cm, statt der ursprünglich geplanten 11,5cm. Erfolgreiche Bearbeitung aller Aufgaben: Ausführliche Dokumentation des Codes und rechtzeitige Abgabe (als *.zip < 3MB): – Eine korrekte Implementierung, die der formalen Beschreibung entspricht (keine Warnings/Errors beim Start) – Kommentierung der zentralen Eigenschaften/Ereignisse etc. im Code – Ausführliche Beschreibung zum Start der Software (ausführbare Datei ist mitzuliefern), zur Architektur (z.B. Klassendiagramme, Sequenzdiagramme etc.) Anwesenheitspflicht (180 Minuten bzw. 3 Zeitstunden) Erfolgreiche Besprechung der Aufgabe Weitere Details: siehe jeweilige Aufgabenstellung Innen mindestens 72 Minuten, daher hat es außen 12cm Durchmesser. Software: Vorgaben an die innere Struktur, z.B. bestimmte Datenstrukturen oder Programmiersprachen oder eine Middleware Programmiersprachen, Middleware, die keinem Standard unterliegt (J2EE etc) etc). Von außen nach innen: Projektleiter Kozo Ohsone: CD-Spieler muss die äußeren Maße von 12,7 x 12,7 x 3,8 cm haben. Die Hauptflächen des zugehörigen Blocks wurden von ihm unterschrieben und waren nicht diskutabel. Außen 12,7 x 12,7 x 3,8 cm, daher sieht es innen so aus, wie es heute dort aussieht. Software: Vorgaben von Schnittstellen, z.B. ADTs oder entfernte Schnittstelle (RPC/RMI), oder eine Middleware, die einem Standard unterliegt (CORBA etc). 21 22 Basis-Literatur G. Coulouris, J. Dollimore, T. Kindberg: Verteilte Systeme, Pearson Studium Andrew S. Tanenbaum, Maarten van Steen: Verteilte Systeme: Grundlagen und Paradigmen, Pearson Studium Hinweis zu den Folien Zum Kauf empfohlen! G. Bengel et al: Masterkurs Parallele und Verteilte Systeme, Vieweg J. Armstrong: Programming Erlang - Software for a Concurrent World, Pragmatic Bookshelf F. Cesarini, S. Thompson: Erlang Programming, O'Reilly P. Mandl: Masterkurs Verteilte betriebliche Informationssysteme, Vieweg D. Dörner: Die Logik des Misslingens. Strategisches Denken in komplexen Situationen, Rowohlt Verlag 23 Die Folien sind kein vollständiges Skript und genügen normalerweise nicht zur Prüfungsvorbereitung oder als Nachschlagewerk! Sie sollten sich deshalb auf jeden Fall zumindest mit der aufgeführten Basis-Literatur beschäftigen und sich von Zeit zu Zeit auch weiterführende Literatur und aktuelle Zeitschriftenartikel anschauen. Bemerkung g am Rande: Diese Folien sind zum g großen Teil aus Folien/Skripten anderer Kollegen (auch anderer Hochschulen) zusammengestellt! Zur Klausur: Die Aufgaben prüfen – Reproduktion/Kennen („Auswendiglernen“; 1.,2.), – Reorganisation/Verstehen („Selbständige Verarbeitung und Strukturierung“; 2., 3., 4.), – Transfer/Anwendung („Übertragung auf neue, ähnliche Aufgaben“; 3., 4., 5., 6.) 24 Warum bilden „Verteilte Systeme“ ein eigenständiges Thema ? Verteilte Systeme Einführung 25 Es gibt keinen gemeinsamen Speicher (Interaktion durch Nachrichtenaustausch) Es gibt nebenläufige/parallele Aktivitäten (Koordination, Synchronisation) Fehler und Ausfälle sind wahrscheinlich (Transparenz) Komponenten (Hardware und Software) sind heterogen (Standardisierung von Schnittstellen) Systeme können sehr groß sein (Großsystemeffekte, Umschlag von der Qualität in die Quantität) 26 4 Verteilte Welt und Probleme Nebenläufigkeit Regeln R1: ab → aa R2: ba → bb •Viele gleichzeitige („parallele“) Aktivitäten •Exakte globale Zeit nicht erfahrbar/vorhanden •Keine konsistente Sicht des Gesamtzustandes •Kooperation durch Kommunikation •Ursache und Wirkung zeitlich getrennt >Räumliche Separation Separation, autonome Komponenten >Heterogenität >Dynamik, Offenheit Wort abcba –Synchronisation schwieriger +Nebenläufigkeit –Programmierung komplexer R1 aacba R2 abcbb Parallel Nebenläufig R1&R2 aacbb R1 R2 aacba abcbb aacbb 27 28 Nebenläufigkeit Wort abab aaab Software Fehler in Verteilten Systemen Hier sind R1 und R2 anwendbar, aber nicht nebenläufig anwendbar; daher besteht keine Nebenläufigkeit. Sequentiell R1 R2 R1 abbb abaa b Parallel R1&R1 aaaa Nebenläufig R1 R2 R1 R1&R1 aaab abbb abaa aaaa b Das die Nebenläufigkeit als direkte Folgezustände der Vereinigung aus den Folgezuständen der sequentiellen und parallelen Verarbeitung entspricht, liegt an der Verwendung von nur zwei Regeln. Bei drei oder mehr Regeln wäre dem nicht so, weil bei der parallelen Verarbeitung alle anwendbaren Regeln gleichzeitig angewendet werden, wogegen bei der nebenläufigen Verarbeitung eine beliebige Untermenge davon zunächst nur angewendet werden kann! 1971 Eole1, französischer Satellit zur Koordination von 141 Wetterballons; 72 1971: Ballons erhalten den Befehl vom Satelliten, Daten zu senden, interpretieren dies aber als Befehl zur Selbstzerstörung. 1990: Geldautomat, Person will Geld an einem Geldautomaten in Honolulu abheben, 1990 der zentrale Rechner zur Überprüfung steht in New Jersey, durch Zeitverzögerung des Satelittensignals und einen Protokollfehler wird Geld nicht ausgezahlt und trotzdem abgebucht. g 1995: Telefonnetz Singapur; 65% der Leistung sind fünf Stunden nicht nutzbar, die 1995 restlichen stark überlastet, da sich Software-Fehler eines Vermittlungsknotens auf weitere Systeme fortpflanzte. 1996: Ariane 5; Hauptrechner sendet unsinnige Befehle an Triebwerk, Rakete 1996 zerstört sich selbst, Problem war die ungeprüfte Übernahme von Software der Ariane 4, die für die auftretende Beschleunigungen der Ariane 5 nicht konzipiert war. 2009: Bei der Umstellung der Bearbeitung der „Abwrackprämie“ werden durch 2009 Überlast verschiedenen Anträgen die gleichen Bearbeitungsnummern zugeteilt, so dass Bestätigungsmails private Daten willkürlich verteilen. 29 30 Was ist ein verteiltes System ? Verteilte Informationssysteme 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, koordinieren – indem sie Nachrichten austauschen. R1&R2 Bei der Nebenläufigkeit entstehen also (direkte Folge-)Zustände, die bei einem sequentiellen System oder auch parallelem System nicht entstehen können! Z.B. bei Verwendung von Threads auf einem Rechner können bestimmte Zustände nicht erreicht werden, die unter Verwendung von Prozessen auf verschiedenen Rechnern möglich sind! –Testen aufwendiger +Zustandsverteilung >Sicherheit Hier sind R1 und R2 anwendbar und auch nebenläufig anwendbar; daher besteht eine echte Nebenläufigkeit. Sequentiell +Probleme sequentieller Systeme +Nichtdeterminismus >Komplexität Es wird ein *-Termersetzungssystem betrachtet und nur die direkten, möglichen Nachfolgezustände auf das Eingabewort. 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. 31 Verteilte Informationssysteme sind komplizierte verteilte Systeme Typische Merkmale: • Oft sehr groß (500.000 LinesOfCode und größer) • „Sehr“ datenorientiert: Datenbanken im Zentrum der Anwendung • Extrem interaktiv: GUI, aber auch Batch • „Sehr“ nebenläufig: Große Anzahl an gleichzeitig arbeitenden Benutzern 32 5 Klassifizierung nach Tanenbaum Sichten verteilter Systeme Rechnernetz mit Rechnerknoten Verteilte Computersysteme „Sehr“ viele ähnlich aufgebaute und vernetzte Rechnersysteme Algorithmen u. Protokolle Objekte – Cluster-Systeme – Grid-Systeme: Nutzung der Ressourcen des Internets, Projekte wie Klimaforschung, … Verteilte Informationssysteme Verteilte pervasive Systeme P1 Transaktionsanwendungen für betriebliche Aufgabenstellungen P2 - Kleine, „sehr kleine“ Systeme, auch mobil Physisch verteilt - Ubiquitous Computing (Ubicomp): Unauffällig arbeitende und unsichtbare Computersysteme Logisch verteilt P3 Zeit 33 Beispiel: Verteiltes Informationssystem (logisch) Endbenutzer / Clients Business-Logik 34 Beispiel: Verteiltes Informationssystem (physisch) Datenhaltung ERP-System Auftragsabwicklung Auftragsbearbeiter ERP-Server 1 und 2 Auftragsbearbeiter Bestellungsystem Einkäufer ERPDB ERPDB Einkäufer LagerDB ... DB-Server 1 und 2 Bestandsverwaltung Disponent LVS-Server 1 und 2 Disponent Lagerverwaltung LagerDB Lagerverwalter Lagerverwalter MFR Materialflusssteuerung ShopDB W W W -Browser W W W -Browser W ebshop ShopDB Kunde Kunde W ebserver Shop-Server inkl. DB DB = Datenbank ERP = Enterprise Resource Planung MFR = Maerialflussrechner LVS = Lagerverwaltungsrechner 35 36 Wünschenswerte Eigenschaften Wozu braucht man ein „Verteiltes System“? Kommunikationsverbund (Übertragung von Daten, insbesondere Nachrichten, an verschiedene, räumlich getrennte Stellen; z.B. E-Mail) Informationsverbund (Verbreiten von Information an interessierte Personen/Systeme; z.B. WWW) Datenverbund (Speicherung von Daten an verschiedenen Stellen: bessere Speicherauslastung, erhöhte Verfügbarkeit, erhöhte Sicherheit) Lastverbund (Aufteilung stoßweise anfallender Lasten auf verschiedene Rechner: gleichmäßige Auslastung verschiedener Ressourcen) Leistungsverbund (Aufteilung einer Aufgabe in Teilaufgaben: Verringerte Antwortzeiten) Wartungsverbund (Zentrale Störungserkennung und –behebung: schnellere und billigere Wartung verschiedener Rechner) Funktionsverbund (Verteilung spezieller Aufgaben auf spezielle Rechner; Bereitstellung verschiedener Funktionen an verschiedenen Orten) Kapazitätsverbund (Ausnutzung sämtlicher zur Verfügung stehender Rechenkapazität) 37 Gemeinsame Ressourcennutzung: Hardware, Daten, Dienste etc. gemeinsam nutzen Offenheit: Schlüsselschnittstellen (einheitlich) offen legen Nebenläufigkeit: Mehrere gleichzeitig existierende Prozesse Skalierbarkeit: auch mit vielen Komponenten gut funktionieren können Sicherheit: Verfügbarkeit, Vertraulichkeit, Integrität, Authentizität, etc Fehlertoleranz: Fehler erkennen, maskieren, tolerieren Transparenz: hier im Sinne, etwas nicht sehen bzw. durch etwas hindurch sehen können 38 6 Transparenz 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. 4. 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. ISO (International Standards Organization) und ANSA (Advanced Network Systems Architecture) identifizieren acht Formen der Transparenz: 5. Fehlertransparenz erlaubt das Verbergen von Fehlern, so dass Benutzer und Applikationsprogrammierer ihre Aufgaben erledigen können, auch wenn Hardware- oder Softwarekomponenten ausgefallen sind. 1. Zugriffstransparenz ermöglicht den Zugriff auf lokale und entfernte Ressourcen unter Verwendung identischer Operationen. 2. Positionstransparenz (Ortstransparenz) erlaubt den Zugriff Ressourcen, ohne dass man ihre Position/ihren Ort kennen muss. auf die 3. Nebenläufigkeitstransparenz erlaubt, dass mehrere Prozesse gleichzeitig mit denselben gemeinsam genutzten Ressourcen arbeiten, ohne sich gegenseitig zu stören. 6. Mobilitätstransparenz erlaubt das Verschieben von Ressourcen und Clients innerhalb eines Systems, ohne dass die Arbeit von Benutzern oder Programmen dadurch beeinträchtigt wird. 7. Leistungstransparenz erlaubt, dass das System neu konfiguriert wird, um die Leistung zu verbessern, wenn die Last variiert. 8. Skalierungstransparenz erlaubt, dass sich System und Applikationen vergrößern, ohne dass die Systemstruktur oder die Applikationsalgorithmen geändert werden müssen. 39 40 Systemmodelle Verteilte Systeme 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 41 42 Hardware- und Software-Serviceschichten Client/Server Modell •Plattformunabhängig •Middlewareabhängig Applikationen, Dienste Middleware Betriebssystem Computer- und Netzwerkhardware Client Middleware (Verteilungsplattform) : Transparenz der •Heterogenität existierender Hardware und Betriebssysteme •Verteilung Auftrag Antwort Client Plattform: „unterste“ Hardware- und Softwareschichten (Low-Level) werden häufig als Plattform bezeichnet. Beispiele: Intel x86/{Windows|Linux}, PowerPC/MacOS, SunSPARC/SunOS 43 Auftrag Server Server Antwort Reagierender Prozess •bearbeitet Anfragen •erfüllt Aufträge Initiierender Prozess •stellt Anfragen •erteilt Aufträge Legende: Prozess: Computer: 44 7 Proxy-Server und Cache Spontane Netzwerkverbindungen Musikdienst Gateway Web server Client Internet Proxy server Web server Client Weckdienst Funknetzwerk des Hotels Erkennungsdienst Kamera Proxy-Server: Gemeinsamer Cache Zweck von Proxy-Servern: erhöhte Leistung und Verfügbarkeit TV/PC Laptop 45 Applikation Applikation Koordinierungscode Geräte des Gastes 46 Thin Client/Fat Server Gleichrangige Prozesse (Peer Processes) Koordinierungscode PDA Applikation Koordinierungscode Oft bessere Leistung als Client-Server mit vielen ähnlichen Prozessen und vorwiegend lokaler Kommunikation. Beispiel: Whiteboard 47 Drei Ebenen Architektur: „three-tier“ Präsentation Businessebene Datenmanagement 48 Beispiel: Suchmaschine Kommuniziert mit dem Anwender Führt die Geschäftsregeln aus, verwaltet Prozessinformationen Datenzugriff und Datenspeicherung 49 50 8 Beispiel: Suchmaschine Anforderungen an die Auswahl eines Modells 51 Welches sind die Einflussfaktoren – bei der Auswahl des Modells – bei der Platzierung der Komponenten Wichtig u.a. – Performance (Antwortverhalten, (Antwortverhalten Durchsatz, Durchsatz Lastbalancierung, Lastbalancierung etc.) – Quality of Service (Zuverlässigkeit, Sicherheit, Echtzeit, etc.) – Inwieweit sollen Caching und Replikation eingesetzt werden (mit welchem Konsistenzmodell?) – Benötigter Grad der Verlässlichkeit des Systems (Korrektheit, Sicherheit, Fehlertoleranz, etc.) – Kosten (Anschaffung, Schulung, Lizenzen, etc.) 52 9
© Copyright 2024 ExpyDoc