Verteiltes System

Aus dev.kaibel.net
Zur Navigation springen Zur Suche springen

Vorlage:Infobox Software

Einführung

Ein verteiltes System ist ein Zusammenschluss mehrerer unabhängiger Rechner, die gemeinsam als ein einziges System erscheinen. Die beteiligten Computer arbeiten zusammen, um eine gemeinsame Aufgabe zu erfüllen. Aus Sicht des Benutzers oder der Anwendung verhalten sich die Systeme oft wie ein einzelner Computer.

Ziele verteilter Systeme:

  • Ressourcen gemeinsam nutzen
  • Skalierbarkeit und Ausfallsicherheit
  • Geographische Verteilung von Diensten
  • Leistungssteigerung durch parallele Verarbeitung

Charakteristika

Verteilte Systeme zeichnen sich durch folgende Merkmale aus:

  • Parallelität – mehrere Prozesse laufen gleichzeitig auf verschiedenen Knoten.
  • Fehlertoleranz – das System bleibt funktionsfähig, auch wenn einzelne Knoten ausfallen.
  • Transparenz – Details der Verteilung (Ort, Zugriff, Ausfall) sollen für Benutzer und Anwendungen möglichst verborgen sein.
  • Heterogenität – unterschiedliche Hardware, Betriebssysteme und Netzwerke können zusammenarbeiten.

Architekturmodelle

Es existieren verschiedene Arten von Architekturen für verteilte Systeme:

  • Client-Server-Modell – klassische Aufteilung in Dienstanbieter (Server) und Dienstnutzer (Client).
  • Peer-to-Peer (P2P) – gleichberechtigte Knoten ohne zentrale Steuerung.
  • Mehrschichtige Architekturen – Trennung von Präsentation, Logik und Datenhaltung.
  • Serviceorientierte Architekturen (SOA) – Dienste werden lose gekoppelt über standardisierte Schnittstellen angeboten.
  • Microservices – feingranulare Dienste, die unabhängig voneinander entwickelt, betrieben und skaliert werden.

Kommunikationsmechanismen

Verteilte Systeme nutzen verschiedene Kommunikationsparadigmen:

  • Entfernte Funktionsaufrufe (RPC) – z. B. ONC RPC, DCE/RPC, gRPC.
  • Nachrichtenorientierte Middleware – z. B. Message Queues, Publish/Subscribe.
  • Webservices – z. B. REST, SOAP.
  • Streams – kontinuierliche Datenübertragung in Echtzeit.

Synchronisation und Konsistenz

Da verteilte Systeme oft parallel arbeiten, ist Synchronisation entscheidend:

  • Uhrensynchronisation (z. B. NTP, logische Uhren nach Lamport).
  • Konsistenzmodelle – von starker bis eventual consistency.
  • Verteilte Sperrmechanismen – z. B. verteilte Locks, Leader Election.
  • Replikation – Datenhaltung auf mehreren Knoten zur Erhöhung der Verfügbarkeit.

Fehlertoleranz und Zuverlässigkeit

Fehlertoleranz ist ein Kernaspekt verteilter Systeme:

  • Redundanz – mehrere Knoten für denselben Dienst.
  • Replikation – Kopien von Daten auf verschiedenen Servern.
  • Transaktionsprotokolle – z. B. Two-Phase Commit (2PC), Three-Phase Commit (3PC).
  • Selbstheilung – Systeme erkennen Fehler und starten automatisch Prozesse neu.

Sicherheit

Sicherheit in verteilten Systemen umfasst:

  • Authentifizierung und Autorisierung – Identität prüfen, Zugriffe steuern.
  • Verschlüsselung – Datenübertragung und -speicherung sichern.
  • Integrität und Vertraulichkeit – Schutz vor Manipulation und unbefugtem Mitlesen.
  • Auditing und Logging – Nachvollziehbarkeit von Aktionen.

Beispiele für verteilte Systeme

Vorteile

  • Skalierbarkeit: Ressourcen können flexibel hinzugefügt werden.
  • Fehlertoleranz: Ausfälle einzelner Komponenten beeinträchtigen nicht das Gesamtsystem.
  • Flexibilität: Unterschiedliche Technologien und Plattformen lassen sich integrieren.

Nachteile

  • Komplexität in Planung, Entwicklung und Betrieb.
  • Netzwerkabhängigkeit und erhöhte Latenz.
  • Schwierige Fehlersuche und Debugging.
  • Sicherheitsrisiken bei unzureichender Absicherung.

Wichtige Konzepte

  • CAP-Theorem – Konsistenz, Verfügbarkeit, Partitionstoleranz.
  • Byzantinische Fehlertoleranz – Umgang mit bösartigen oder defekten Knoten.
  • Load Balancing – Verteilung von Last auf mehrere Server.
  • Middleware – Vermittlungsschicht zur Vereinheitlichung der Kommunikation.

Literatur und Standards

  • Tanenbaum, Andrew S.: Verteilte Systeme – Prinzipien und Paradigmen
  • Coulouris, Dollimore, Kindberg: Distributed Systems – Concepts and Design
  • RFC 5531 – RPC: Remote Procedure Call Protocol Specification Version 2
  • RFC 4506 – XDR: External Data Representation Standard

Siehe auch