Beim verteilten Computing werden zahlreiche Computing-Ressourcen an verschiedenen Standorten für einen einzigen Rechenzweck verwendet.
Verteilte Computersysteme sorgen dafür, dass die Dinge im großen Stil geschehen. Denken Sie daran, wenn Sie das nächste Mal ein MMO (Massive Multiplayer Online)-Spiel spielen. Um ein MMO effektiv zu verwalten, müssen ganze Systeme zusammenkommen und eng zusammenarbeiten, um eine nahtlose Erfahrung zu bieten, die gleichzeitig von Tausenden von Spielern in einer Echtzeitumgebung geteilt wird.
Distributed Computing hilft Anbietern, diese Art von koordinierter Synchronisierung und Computerverarbeitungsleistung für ein gemeinsames Ziel einzusetzen.
Und das ist nur ein Beispiel für die vielen, weitreichenden Anwendungen für verteilte Computerdienste, die derzeit verwendet werden, darunter die Erstellung lebendiger 3D-Grafiken für Videoanimationen, das Training von Neural Networks, die die Funktionen des menschlichen Gehirns nachahmen, und das Lösen extrem komplexer Gleichungen im Zusammenhang mit Chemie und Physik.
In der Regel nimmt das verteilte Rechenmodell die intensivsten Rechenaufgaben und Arbeitslasten auf und bewältigt die schwerwiegendsten Rechenherausforderungen, weshalb es die Verwendung mehrerer Komponenten und gemeinsam genutzter Speicher erfordert.
Verteiltes Rechnen vereint mehrere Computer, Server und Netzwerke, um Rechenaufgaben unterschiedlichster Größe und Zweck zu erledigen. In kleinen, verteilten Computersystemen mit Komponenten nahe beieinander, können diese Komponenten über ein lokales Netzwerk (LAN) verbunden werden.
In größeren verteilten Systemen, deren Komponenten geografisch getrennt sind, sind die Komponenten über Wide Area Networks (WAN) miteinander verbunden. Die Komponenten in einem verteilten System teilen Informationen über den jeweiligen Netzwerktyp aus. Das bekannteste Beispiel für ein verteiltes System ist das Internet. Das vielleicht kontroverseste Beispiel für ein verteiltes System in letzter Zeit ist die Kryptowährung.
Aus rechnerischer Sicht enthalten selbst die grundlegendsten Formen der verteilten Datenverarbeitung hinsichtlich der Anzahl der typischerweise beteiligten Komponenten drei grundlegende Komponenten:
Es gibt jedoch keine festen Regeln, die festlegen, was ein Umstand des verteilten Computings ist oder wie viele Komponenten benötigt werden, um seine Funktionalität zum Leben zu erwecken. Innerhalb dieser Kette (oder dieses Netzwerks) kann es eine Handvoll Komponenten geben, oder die Instanz kann wesentlich mehr umfassen.
Dies ist einer der großen Vorteile eines verteilten Rechensystems. Das System kann durch das Hinzufügen weiterer Maschinen erweitert werden. Der andere wichtige Vorteil ist die erhöhte Redundanz, d. h. wenn ein Computer im Netz aus irgendeinem Grund ausfällt, wird der Betrieb des Systems trotz dieser Fehlerstelle ungehindert fortgeführt.
Dieses Konzept der zusätzlichen Redundanz geht Hand in Hand mit der Betonung der Fehlertoleranz. Fehlertoleranz ist ein Korrekturprozess, der es einem Betriebssystem ermöglicht, zu reagieren und einen Software- oder Hardwarefehler zu korrigieren, während das System fort fährt. Fehlertoleranz wird mittlerweile als allgemeines Maß für die anhaltende Rentabilität des Unternehmens angesichts eines störenden Ausfalls verwendet.
Daher sind verteilte Computersysteme nicht an Beschränkungen hinsichtlich der Anzahl der Komponenten gebunden. Es besteht auch keine Anforderung, dass diese Komponenten physisch nahe beieinander liegen und durch lokale Netzwerke verbunden sind. Dank der erweiterten Funktionen von Wide Area Networks können die Computer eines verteilten Computersystems nach Kontinenten getrennt werden, ohne dass ihre Funktionsfähigkeit verloren geht.
Das Ziel verteilter Computersysteme ist es, dafür zu sorgen, dass dieses verteilte Computernetz – egal wie groß und egal, wo sich seine Komponenten befinden – so funktioniert, als wäre es ein einzelner Computer. Diese Koordination wird durch ein ausgeklügeltes System zur Nachrichtenübermittlung zwischen den verschiedenen Komponenten erreicht.
Kommunikationsprotokolle regeln den Hin- und Heraustausch von Nachrichten und stellen eine Art von Beziehung her, die zwischen diesen Komponenten besteht. Diese Beziehung wird als „Kopplung“ bezeichnet, die in der Regel in einer von zwei Formen ausgedrückt wird:
Verteiltes Computing befasst sich außerdem sowohl mit den positiven als auch mit den negativen Auswirkungen der Nichtsequenzialität, d. h. der gleichzeitigen Ausführung mehrerer Betriebsbefehlssequenzen. Zu den wichtigsten positiven Eigenschaften gehört die Tatsache, dass die Parallelität die parallele Berechnung mehrerer Prozess-Threads ermöglicht. (Parallel Computing sollte nicht mit der parallelen Verarbeitung verwechselt werden, bei der Laufzeitaufgaben in mehrere kleinere Aufgaben unterteilt werden.)
Zu den negativen Auswirkungen, die mit der Parallelität verbunden sind, gehören oft erhöhte Latenz und sogar Engpässe, bei denen der Verkehr fast zum Erliegen kommt, weil das verteilte Computersystem mit einer übermäßigen Anzahl von Komponentenanforderungen überlastet wird.
Parallelität unterscheidet sich vom Konzept des Multithreading, bei dem ein Programm weiterlaufen kann, während andere Aufgaben im Hintergrund ausgeführt werden. Parallelität stellt eine größere Belastung der Ressourcen dar, da mehrere Threads gleichzeitig laufen und gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen.
Einige Workloads sind enorm und mehr, als die meisten einzelnen Systeme bewältigen können. Beim verteilten Computing werden solche Workloads auf mehrere Equipment verteilt, sodass auch große Aufgaben gut bewältigt werden können.
Verteiltes Computing basiert auf dem Konzept gemeinsam genutzter Assets und unterstützt die gemeinsame Nutzung von Ressourcen wie Daten, Software und Hardware zwischen den verschiedenen Komponenten innerhalb dieser verteilten Computing-Instanz.
Der Online-Verkehr vieler Unternehmen unterliegt schnellen und dramatischen Veränderungen, möglicherweise aufgrund von Nachrichten oder anderen Faktoren. Verteiltes Computing bietet die Flexibilität, die Unternehmen benötigen, um solchen Schwankungen standzuhalten.
Verteiltes Rechnen steigert die Leistung, indem große Verarbeitungsaufträge in kleinere Rechenaufgaben aufgeteilt werden, die von vielen Computern gemeinsam genutzt werden. Dies führt zu einer kumulativen Menge an Verarbeitungsgeschwindigkeit und größerem Gesamtspeicher.
Es stimmt zwar, dass die verteilte Datenverarbeitung mit ihren mehreren Systemen im Vergleich zu zentralisierten Verarbeitungssystemen höhere Vorlaufkosten verursacht als zentralisierte Verarbeitungssysteme, aber im Laufe der Zeit gleichen sich diese Kosten aufgrund der Kosteneffizienz durch geringere Latenzzeiten und schnellere Reaktionszeiten aus. Dadurch wird die verteilte Datenverarbeitung letztlich zu einem kostenintensiveren effektiver als zentralisierte Systeme.
Verteilte Computertypen werden nach der jeweils verwendeten verteilten Computerarchitektur klassifiziert.
Client-Server-Systeme verwenden eine Client-Server-Architektur, die es ermöglicht, sie mit mehr als einem einzigen System zu verwenden. Darin leitet ein Client die Eingabe in Form einer Anfrage an den Server weiter. Diese Kommunikation umfasst in der Regel entweder einen Befehl, dass eine bestimmte Aufgabe ausgeführt werden soll, oder eine Anforderung nach mehr Rechenressourcen. Der Server erfüllt dann diese Aufgabe oder weist die angeforderten Ressourcen zu. Sobald dies abgeschlossen ist, antwortet der Server dem Client mit einer Meldung über die ausgeführte Aktion.
Während zentralisierte Systeme eine Client-Server-Architektur verwenden, stützt sich ein Peer-System auf die Peer-Architektur (oft auch Peer-to-Peer-Architektur genannt). Peer-Systeme verwenden Knoten, die effektiv entweder als Client oder als Server fungieren können – entweder um Bedürfnisse zu ermitteln und Anfragen auszugeben oder um diese Bedürfnisse zu erfüllen und Berichte über Abläufe zu erstellen. Wie der Name schon sagt, gibt es in Peer-Systemen keine Hierarchie, sodass Programme, die in Peer-to-Peer-Systemen arbeiten, frei miteinander kommunizieren und Daten über Peer-Netzwerke übertragen können.
Middleware kann man sich als eine Art „Mittelsmann“ vorstellen, der zwischen zwei unterschiedlichen Anwendungen operiert, was bedeutet, dass Middleware selbst eine Anwendung ist, die sich zwischen zwei Apps befindet und Dienste für beide erbringt. Middleware hat auch einen interpretativen Aspekt. Sie fungiert als Übersetzer zwischen verschiedenen Interoperabilitäts-Apps, die auf verschiedenen Systemen ausgeführt werden, und ermöglicht diesen Apps den freien Datenaustausch.
Dreistufige Systeme heißen so, weil viele Schichten zur Darstellung der Funktionalität eines Programms verwendet werden. Im Gegensatz zu einer typischen Client-Server-Architektur, bei der Daten innerhalb des Clientsystems abgelegt werden, speichert das dreistufige System die Daten stattdessen in seiner mittleren Schicht, die als Datenschicht bezeichnet wird. Die Anwendungsschicht umgibt die Datenschicht auf einer ihrer Seiten, während die Präsentationsschicht die Datenschicht auf der anderen Seite umschließt. Dreistufige Systeme werden routinemäßig in verschiedenen Webanwendungen verwendet.
N-Tier-Systeme werden manchmal auch als mehrschichtige verteilte Systeme bezeichnet und verfügen über eine unbegrenzte Kapazität für Netzwerkfunktionen, die sie zur Verarbeitung an andere Apps weiterleiten. Die Architektur von N-Tier-Systemen ähnelt der von Drei-Tier-Systemen. N-Tier-Systeme werden häufig als architektonische Grundlage für zahlreiche Webdienste und Datensysteme verwendet.
Verteiltes Rechnen ermöglicht die Verwendung verschiedener Programmierparadigmen (die als Programmierstile betrachtet werden können):
Online-Banking zeigt, wie wendig die verteilte Datenverarbeitung ist – es findet an vielen Orten gleichzeitig statt, oft mit verschiedenen Bankstandorten, die damit beauftragt sind, einen der Server hinter wichtigen Serviceangeboten (wie Kundenservice, Sicherheit und Transaktionsabwicklung) zu beherbergen. Alles passiert sofort und nahtlos, so wie es Bankkunden erwarten.
Sowohl künstliche Intelligenz (KI) als auch maschinelles Lernen (ML) sind dabei, viele technologische Bereiche zu revolutionieren, aber nirgendwo sind ihre Auswirkungen derzeit so deutlich wie in der Computerbranche selbst. Beide explodierenden Technologien nutzen die verteilte Datenverarbeitung in großem Umfang. Die Algorithmen hinter KI und ML benötigen große Datenmengen, um ihre Modelle zu trainieren, und verteiltes Rechnen liefert die dafür erforderliche Verarbeitungsleistung.
Distributed Computing wird mittlerweile im Energie- und Umweltsektor eingesetzt. Auf der Energieseite hilft verteiltes Computing der intelligenten Netztechnologie, den Verbrauch zu regulieren und den Energieverbrauch zu optimieren. Intelligente Netze nutzen ebenfalls verteilte Datenverarbeitung, um Umweltdaten von verschiedenen Eingabegeräten wie Sensoren und intelligenten Zählern zusammenzustellen.
In bestimmten Bereichen des Finanzwesens wird bereits mit verteilten Computersystemen gearbeitet. Nehmen Sie das Risikomanagement, bei dem Finanzinstitute riesige Datenmengen benötigen, um umfangreiche Berechnungen durchzuführen, die eine bessere Entscheidungsfindung in Bezug auf Wahrscheinlichkeiten und Bewertungen ermöglichen. Verteiltes Rechnen sorgt dafür, dass die Rechenlast gleichmäßig auf mehrere Systeme verteilt wird.
Die verteilte Datenverarbeitung hat zahlreiche wissenschaftliche Disziplinen unterstützt und zu einigen der bemerkenswertesten Errungenschaften der Wissenschaft beigetragen. Ein Beispiel dafür ist der Large Hadron Collider, der leistungsstärkste Teilchenbeschleuniger der Welt. Die Experimente dahinter hängen von extremen Mengen an Datenerfassung und -analyse ab, die den Einsatz verteilter Datenverarbeitung erfordern. In ähnlicher Weise erfüllte das verteilte Rechnen den gleichen Zweck für das Humangenomprojekt, da es sich zum Ziel gesetzt hatte, menschliche DNA-Sequenzen zu kartieren. Verteiltes Computing spielt auch eine wichtige Rolle bei der forecasting und Klimamodellierung.
IBM Cloud Infrastructure Center ist eine mit OpenStack kompatible Softwareplattform für die Verwaltung der Infrastruktur von Private Clouds auf IBM zSystems und IBM LinuxONE.
Entdecken Sie Server, Speicher und Software für die Hybrid-Cloud- und KI-Strategie Ihres Unternehmens.
Finden Sie die richtige Cloud-Infrastrukturlösung für Ihre Geschäftsanforderungen und skalieren Sie Ressourcen nach Bedarf.