Definition Was ist eine Shared-Nothing-Architektur?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Die Shared-Nothing-Architektur ist ein hoch skalierbares System, bestehend aus mehreren Knoten, die autonom arbeiten. Die Knoten verfügen über eigene exklusive Ressourcen wie Prozessorleistung, Speicherplatz und Arbeitsspeicher. Die Architektur bietet durch die parallele Verarbeitung von Aufgaben ein hohe Performance.

Anbieter zum Thema

(Bild: © aga7ta - stock.adobe.com)

Eine Shared-Nothing-Architektur ist eine IT-Architektur, die aus mehreren autonomen Knoten besteht und die die ein verteiltes System bilden. Sie stellt den Gegenentwurf zu einer Shared-All-Architektur dar. Innerhalb der Shared-Nothing-Architektur hat jeder Knoten eigene Ressourcen wie Prozessorleistung, Speicherplatz, Betriebssystem und Arbeitsspeicher und ist dadurch in der Lage, Aufgaben selbstständig – ohne Beteiligung anderer Knoten – zu bearbeiten. Durch dieses Funktionsprinzip ist es möglich, viele einzelne Aufgaben oder Teilaufgaben gleichzeitig zu erledigen.

Die Parallelisierung sorgt für eine extreme Skalierbarkeit der Shared-Nothing-Architektur. Im Prinzip ist die Skalierbarkeit nicht begrenzt, da sich durch das Hinzufügen weiterer Knoten die Leistung nahezu beliebig steigern lässt. Theoretisch existiert in der Shared-Nothing-Architektur keine gemeinsame Komponente, auf die alle Knoten zugreifen müssen und die die Leistung des Gesamtsystems begrenzt.

Die Knoten kommunizieren über ein Netzwerk untereinander und können Aufgaben an andere Knoten übertragen. Hierfür kommen spezielle Koordinierungs- und Synchronisierungsverfahren zum Einsatz. In einigen System übernehmen zentrale Steuereinheiten die Koordinierung der Aufgaben und das Zusammenführen der Ergebnisse.

Die Vorteile einer Shared-Nothing-Architektur

Da in einer Shared-Nothing-Architektur jeder Knoten autonom ist und dank eigenem Betriebssystem, Prozessor, Speicherplatz und Arbeitsspeicher selbstständig arbeitet, ergeben sich gegenüber gesharten Architekturmodellen einige Vorteile. Diese sind:

  • extreme Skalierbarkeit
  • keine gemeinsame Komponente, die das Gesamtsystem ausbremst
  • beliebige Performancesteigerung durch das Hinzufügen weiterer Knoten
  • hohe Verfügbarkeit des Systems, da der Ausfall einzelner Knoten nur die Performance und nicht die Funktion beeinträchtigt
  • Verwendung günstiger Rechnersysteme möglich

Massive Parallel Processing (MPP) als Anwendungsbeispiel

Im Big-Data-Umfeld sind große Datenmengen in kurzer Zeit zu analysieren und zu verarbeiten. Hierfür werden Systeme mit hoher Leistung benötigt. Da einzelne Rechnersysteme oft nicht in der Lage sind, die geforderte Performance bereitzustellen, bieten verteilt arbeitende, gesharte oder nicht-gesharte Systeme entsprechende Lösungen. Ein Anwendungsbeispiel der Shared-Nothing-Architektur im Big-Data-Umfeld ist das Massive Parallel Processing (MPP). Beim Massive Parallel Processing arbeiten viele über ein leistungsfähiges Netzwerk miteinander verbundene Knoten an Analyseaufgaben einer gemeinsamen Datenbasis. Die Knoten sind mit Prozessoren, Arbeitsspeicher, Input- und Output-Schittstellen sowie Speichermöglichkeiten ausgestattet.

Erhält das Gesamtsystem eine Anfrage, sorgen Koordinations- und Partitionierungsverfahren dafür, dass die für die Bearbeitung benötigten Daten und Algorithmen an die Einzelknoten übergeben werden. Hierfür sind die Daten und Algorithmen entsprechend vorzubereiten und zuzuweisen. Die Einzelknoten führen die ihnen zugeteilten Aufgaben mit ihren lokalen Ressourcen aus und liefern die Ergebnisse an eine zentrale Instanz. Da die Knoten nach der Zuweisung ihre eigene Kopie des benötigten Datenbestands besitzen und für die Ausführung ihrer Aufgabe nicht mehr auf eine zentrale Datenbank zugreifen müssen, verarbeitet das Gesamtsystem große Datenmengen innerhalb kurzer Zeit und ist extrem skalierbar. Typische Einsatzbereiche sind BI- und Data-Warehouse-Anwendungen mit hohen Performance-Anforderungen.

Microservices in einer Shared-Nothing-Architektur

Auch Microservices lassen sich über eine Shared-Nothing-Architektur bereitstellen. Microservices sind einzelne, voneinander unabhängige Dienste, aus denen sich komplexe Anwendungen zusammenstellen lassen. Jeder Dienst erledigt eine genau definierte Aufgabe und ist über eine Schnittstelle ansprechbar. Untereinander haben die einzelnen Dienste keine Beziehung und keinen gemeinsamen Datenbestand. Shared-Nothing-Architekturen sind ideal geeignet für Microservices, da sie genau diesem Leitbild unabhängiger Teilsysteme und Teilservices entsprechen. Für jeden Dienst wird ein autonomer physischer oder logischer Knoten bereitgestellt, der dank eigener Ressourcen seine Teilaufgabe komplett eigenständig erledigt. Es besteht keine Notwendigkeit, einen gemeinsamen Zustand für die aus den einzelnen Microservices zusammengesetzte Anwendung zu halten. Sämtliche Zustandsinformationen befinden sich außerhalb der Microservices.

Abgrenzung zu anderen Architekturen

Die Shared-Nothing-Architektur, in der keinerlei Ressourcen geteilt werden, stellt den Gegenpart zu einer Shared-All-Architektur dar. Shared-All bedeutet, dass sämtliche Ressourcen von mehreren Prozessen nutzbar sind. Zwischen den beiden Extremen Shared-All und Shared-Nothing existieren Modelle wie Shared-Disk oder Shared-Memory. Bei diesen werden nur bestimmte Ressourcen geteilt. In einer Shared-Disk-Umgebung hat zwar jedes Teilsystem einen eigenen Prozessor und Hauptspeicher, es wird aber nur auf gemeinsame Laufwerke zugegriffen. In dieser Umgebung ist es nicht möglich, dass einzelne Knoten die gleichen Daten auf dem Laufwerk parallel bearbeiten. Um die Konsistenz der Daten sicherzustellen, hat die Shared-Disk-Architektur Mechanismen vorzusehen, die gleichzeitiges Verändern von Daten unterbindet.

Das prinzipiell gleiche Problem entsteht in einer Shared-Memory-Architektur. Hier existiert nur ein gemeinsamer Arbeitsspeicher. Auf gleiche Datenbereiche innerhalb des Speichers kann immer nur ein Prozess zugreifen. In der Shared-Disk- oder der Shared-Memory-Architektur bilden Disk oder Memory die jeweils leistungsbegrenzende Ressource für das Gesamtsystem und schränken die Skalierbarkeit ein.

(ID:45855545)