Verteilte Systeme sind eine Sammlung unabhängiger Komponenten und Maschinen, die sich auf verschiedenen Systemen befinden und miteinander kommunizieren, um als eine Einheit zu funktionieren.
In dieser umfassenden Einführung zeigen wir, wie verteilte Systeme funktionieren, Beispiele aus der Praxis, grundlegende Architekturen, die Vor- und Nachteile sowie gängige Lösungen für verteiltes Streaming in Echtzeit.
Confluent ist ein umfassende Daten-Streaming-Plattform für Echtzeit-Datenintegration, Verarbeitung und Analysen, die von den ursprünglichen Entwicklern von Apache Kafka ins Leben gerufen wurde. Confluent kann heute mehr als 120 Datenquellen miteinander verbinden.
Ein verteiltes System, auch bekannt als verteiltes Computing und verteilte Datenbanken, ist eine Reihe unabhängiger Komponenten, die sich auf verschiedenen Rechnern befinden und Messages miteinander austauschen, um gemeinsame Aufgaben zu erfüllen.
Auf diese Weise erscheint das verteilte System dem Endbenutzer wie eine einzige Schnittstelle oder ein einziger Computer. Das Ziel ist, dass das Gesamtsystem Ressourcen und Informationen maximieren und gleichzeitig Ausfälle verhindern kann. Wenn ein System ausfällt, hat dies keine Auswirkungen auf die allgemeine Verfügbarkeit des Services.
Heutzutage sind die Daten stärker verteilt als je zuvor, und moderne Anwendungen laufen nicht länger in Isolation. Die große Mehrheit der Produkte und Anwendungen basiert auf verteilten Systemen.
Die wichtigsten Funktionen des verteilten Computings sind:
Moderne verteilte Systeme haben sich zu autonomen Prozessen entwickelt, die zwar auf demselben physischen Rechner laufen, aber durch den Austausch von Nachrichten miteinander interagieren.
Netzwerke
Das früheste Beispiel für ein verteiltes System entstand in den 1970er Jahren, als das Ethernet erfunden und LAN (Local Area Networks) eingerichtet wurden. Zum ersten Mal waren Computer in der Lage, Nachrichten an andere Systeme mit einer lokalen IP-Adresse zu senden. Peer-to-Peer-Netzwerke entwickelten sich, und E-Mail und dann das Internet, wie wir es kennen, sind nach wie vor das größte, ständig wachsende Beispiel für verteilte Systeme. Im Zuge der Umstellung des Internets von IPv4 auf IPv6 haben sich die verteilten Systeme von „LAN“-basierten zu „Internet“-basierten Systemen entwickelt.
Telekommunikationsnetze
Telefon- und Mobilfunknetze sind ebenfalls Beispiele für verteilte Netzwerke. Telefonnetzwerke gibt es schon seit über einem Jahrhundert und waren ein frühes Beispiel für ein Peer-to-Peer-Netzwerk. Zellulare Netzwerke sind verteilte Netzwerke mit Basisstationen, die physisch in Bereichen verteilt sind, die Zellen genannt werden. Mit der Weiterentwicklung der Telefonnetzwerke zu VOIP (Voice over IP) nimmt die Komplexität des verteilten Netzwerks weiter zu.
Verteilte Echtzeitsysteme
Viele Branchen verwenden Echtzeitsysteme, die lokal und global verteilt sind. Fluggesellschaften verwenden Flugkontrollsysteme, Uber und Lyft verwenden Abfertigungssysteme, Fertigungsanlagen verwenden Automatisierungskontrollsysteme, Logistik- und E-Commerce-Unternehmen verwenden Echtzeit-Tracking-Systeme.
Parallelverarbeitung
Früher gab es eine Unterscheidung zwischen parallelem Computing und verteilten Systemen. Das parallele Computing konzentrierte sich auf die gleichzeitige Ausführung von Software auf mehreren Threads oder Prozessoren, die auf dieselben Daten und denselben Speicher zugreifen. Verteilte Systeme bedeuteten separate Maschinen mit eigenen Prozessoren und eigenem Speicher. Mit dem Aufkommen moderner Betriebssysteme, Prozessoren und Cloud-Services umfasst das verteilte Computing heutzutage auch die Parallelverarbeitung.
Verteilte künstliche Intelligenz
Die verteilte künstliche Intelligenz ist eine Möglichkeit, große Rechenleistung und Parallelverarbeitung zu nutzen, um mit Hilfe von Multiagentensystemen sehr große Datensätze zu lernen und zu verarbeiten.
Verteilte Datenbanksysteme
Eine verteilte Datenbank ist eine Datenbank, die über mehrere Server und/oder physische Standorte verteilt ist. Die Daten können entweder systemübergreifend repliziert oder dupliziert werden.
Die meisten gängigen Anwendungen verwenden eine verteilte Datenbank und erfordern die Kenntnis der homogenen oder heterogenen Beschaffenheit des verteilten Datenbanksystems.
Eine homogene verteilte Datenbank bedeutet, dass jedes System über dasselbe Datenbankmanagementsystem und Datenmodell verfügt. Sie sind einfacher zu verwalten und skalieren durch Hinzufügen neuer Knoten und Standorte.
Heterogene verteilte Datenbanken ermöglichen unterschiedliche Datenmodelle und Datenbankverwaltungssysteme. Gateways werden verwendet, um die Daten zwischen den Knotenpunkten zu übersetzen. Sie entstehen in der Regel durch die Zusammenlegung von Anwendungen und Systemen.
Verteilte Systeme müssen über ein Netzwerk verfügen, das alle Komponenten (Maschinen, Hardware oder Software) miteinander verbindet, damit sie Nachrichten übertragen und miteinander kommunizieren können.
Um dies zu verstehen, betrachten wir die Vor- und Nachteile verschiedener Arten von verteilten Architekturen.
Verteilte Anwendungen und Prozesse verwenden in der Regel eine der folgenden vier Architekturen:
Client-Server:
In den Anfängen bestand die Architektur verteilter Systeme aus einem Server als gemeinsam genutzte Ressource wie einem Drucker, einer Datenbank oder einem Webserver. Das System verfügte über mehrere Clients (z. B. Benutzer hinter Computern), die entscheiden, wann sie die gemeinsame Ressource nutzen, wie sie sie nutzen und anzeigen, Daten ändern und an den Server zurücksenden. Code-Repositories wie git sind ein gutes Beispiel dafür, wie die Entwickler in die Lage versetzt werden, die Änderungen am Code vorzunehmen.
Heute hat sich die Architektur verteilter Systeme mit Webanwendungen weiterentwickelt zu:
Das ultimative Ziel eines verteilten Systems ist es, Skalierbarkeit, Leistung und hohe Verfügbarkeit von Anwendungen zu ermöglichen.
Zu den größten Vorteilen gehören:
Jede technische Entscheidung ist mit Abstrichen verbunden. Der größte Nachteil von verteilten Systemen ist ihre Komplexität. Es gibt mehr Rechner, mehr Messages und mehr Daten, die zwischen mehreren Parteien ausgetauscht werden, was zu Problemen führen kann mit:
Confluent ist die einzige Daten-Streaming-Plattform, die für jede Cloud-, On-Premise- oder Hybrid-Cloud-Umgebung verfügbar ist. Jetzt mehr als 120 Datenquellen verbinden, mit Skalierbarkeit, Sicherheit und Integrationen auf Enterprise-Niveau, um Echtzeit-Einblicke in alle verteilten Systeme zu ermöglichen.
Der Einstieg mit einer kostenlosen 30-Tage-Testversion gelingt in nur wenigen Minuten.