Einführung Flashcards
Welche 2 Interaktionsmuster können Prozesse nutzen um Daten zu Tauschen ?
- Kooperation: Prozesse Arbeiten auf gemeinsamen Daten
2. Kommunikation: Daten werden zwischen den Prozessen ausgetauscht
Was sind typische Beispiele für Verteilte Systeme ?
- Client-Server-Anwendungen (insbesondere Webapplikationen)
- Peer-To-Peer-Systeme
- Computer-Cluster
- Cloud-Computing
- Blockchains
Warum nutzen wir verteilte Systeme bzw welche Vorteile bringt der nutzen von verteilten Systemen ?
- Aufgaben sind von Natur aus verteilt ( Videokonferenzsystem, Internet-Telefonie,
Fahrzeugleitsystem) - Robustheit, Zuverlässigkeit, Verfügbarkeit, Unstoppbarkeit, Ausführungsgarantie: redundante Datenkopien, Stand-byRechner
- Wirtschaftlichkeit: mehrere schwächere Rechner billiger als ein stärkerer
- Nutzung brachliegender Ressourcen
- Lastverteilung
- verringerte Antwortzeiten bei Aufteilung einer Aufgabe in
parallele Teilaufgaben - Erzeugung von Vertrauen durch Konsensmechanismen
Welche zusätzlichen Kosten enstehen bei einem verteilten System ?
- Kommunikationskosten (€, Latenz (latency),
Schwankungen (Jitter)) - erhöhte Komplexität (und damit noch mehr €)
Inwiefern äußert sich die Komplexität eines verteilten Systems bei dem Entwurf eines solchen Systems ?
- Entscheidung für ein Verteilungsmodell
- Entscheidung über Kommunikationsmechanisumus, -protokolle (ideal: adaptives System)
- Verwendung von dezentralen, komplexen Algorithmen
Inwiefern äußert sich die Komplexität eines verteilten Systems bei der Implementierung ?
- Es enstehen neue Fehlerquellen:
- Ausbleiben einer Antwort → Timer &
Fehlerbehandlung) - unerwartete Antwort → evtl. zu kurze
Timer
- Ausbleiben einer Antwort → Timer &
- Nebenläufigkeit: Warten auf Nachricht (Antwort) in
separatem Thread um Parallelitätsgrad zu erhöhen →
erfordert Thread-Synchronisation
Inwiefern äußert sich die Komplexität eines verteilten Systems beim Testen ?
- Unit Tests: Simulation entfernter Komponenten inkl.
fehlerhaftem Verhalten sehr aufwändig - Integrationstest:
- Setup bei geographisch weit verteiltem System
aufwändig - verteiltes Logging und Systembeobachtung
schwierig
- Setup bei geographisch weit verteiltem System
kombinatorische Explosion möglicher verteilter
Konfigurationen und Plattformen → nur wichtigste
Kombinationen können getestet werden
Inwiefern äußert sich die Komplexität eines verteilten Systems beim Debugging ?
- Fehlerreproduktion bei geographisch weit verteiltem System aufwändig
- Anhalten an Breakpoints unmöglich, wenn entfernte
Komponenten auf Antwort warten (Time-Outs!) - Erfordert Änderung der entfernten Komponenten zum
Zweck des Debuggings → kann Reproduzierbarkeit
verhindern (Heisenbug)
Inwiefern äußert sich die Komplexität eines verteilten Systems beim Betrieb?
- Ausfall eines zentralen Rechners oder von Teilen des
Kommunikationsnetzes kann zu Störung oder Stillstand des ganzen Systems führen - viele Angriffspunkte, Komponenten prinzipiell von außen erreichbar, Kommunikationswege angreifbar
- möglicherweise schadhafte oder bösartige Knoten
Inwiefern äußert sich die Komplexität eines verteilten Systems bei Versionierung und Konfiguration ?
- unterschiedliche Versionierungszyklen für einzelne
Komponenten → System muss in unterschiedlichen
Konfigurationen laufen - erfordert Vorwärts- und Rückwärtskompatibilitäten
- Setzt Austausch von Versionsnummern in
Kommunikationsprotokollen voraus
Was sind die Hauptziele beim Entwurf eines verteilten Systems ?
- Verteilungstransparenz
2. Skalierbarkeit
Was bedeutet Verteilungstransparenz ?
Verteiltes System aussehen lassen wie lokales
Was ist die Bedeutung der Zugriffstransparenz ?
versteckt Unterschiede im Zugriff auf Daten
Was ist die Bedeutung der Ortstransparenz ?
verbirgt, wo sich eine Ressource befindet
Was ist die Bedeutung der Migrationstransparenz ?
verbirgt, dass Ressource an anderen Ort verschoben werden kann