Was ist Distributed Computing?
Distributed Computing (verteiltes Rechnen) ist die Methode, bei der mehrere Computer zusammenarbeiten, um ein gemeinsames Problem zu lösen. Es befähigt ein Computernetzwerk, um als ein kraftvoller Einzelrechner in Erscheinung zu treten und mit großen Ressourcen komplexe Herausforderungen zu meistern.
So kann Distributed Computing zum Beispiel große Mengen an Daten verschlüsseln, physikalische oder chemische Formeln mit vielen Variablen lösen und dreidimensionale, hochqualitative Videoanimationen darstellen. Distributed Systems, Distributed Programming und Distributed Algorithms sind einige andere Begriffe, die sich alle auf Distributed Computing beziehen.
Was sind die Vorteile von verteiltem Computing?
Verteilte Systeme bringen viele Vorteile gegenüber Einzelsystem-Computing. Im Folgenden sind einige davon aufgeführt.
Skalierbarkeit
Verteilte Systeme können mit Ihrer Workload und Ihren Anforderungen wachsen. Sie können dem verteilten Computernetzwerk neue Knoten hinzufügen, d. h. weitere Computergeräte, wenn sie benötigt werden.
Verfügbarkeit
Ihr verteiltes Computersystem stürzt nicht ab, wenn einer der Computer ausfällt. Das Design ist fehlertolerant, da es auch dann weiter betrieben werden kann, wenn einzelne Computer ausfallen.
Konsistenz
Computer in einem verteilten System tauschen Informationen aus und duplizieren Daten untereinander, aber das System verwaltet automatisch die Datenkonsistenz auf allen verschiedenen Computern. So profitieren Sie von Fehlertoleranz, ohne die Datenkonsistenz zu beeinträchtigen.
Transparenz
Verteilte Computersysteme bieten eine logische Trennung zwischen dem Benutzer und den physischen Geräten. Sie können mit dem System interagieren, als wäre es ein einzelner Computer, ohne sich Gedanken über die Einrichtung und Konfiguration einzelner Computer machen zu müssen. Sie können verschiedene Hardware, Middleware, Software und Betriebssysteme haben, die zusammenarbeiten, damit Ihr System reibungslos funktioniert.
Effizienz
Verteilte Systeme bieten eine schnellere Leistung bei optimaler Ressourcennutzung der zugrunde liegenden Hardware. Infolgedessen können Sie jede Workload bewältigen, ohne sich Gedanken über Systemausfälle aufgrund von Volumenspitzen oder Unternutzung teurer Hardware machen zu müssen.
Was sind einige Anwendungsfälle für verteiltes Computing?
Verteiltes Computing ist heute allgegenwärtig. Mobile und Webanwendungen sind Beispiele für verteiltes Computing, da mehrere Maschinen im Backend zusammenarbeiten, damit die Anwendung Ihnen die richtigen Informationen liefert. Wenn verteilte Systeme jedoch hochskaliert werden, können sie komplexere Herausforderungen lösen. Lassen Sie uns einige Möglichkeiten untersuchen, wie verschiedene Branchen leistungsstarke verteilte Anwendungen nutzen.
Gesundheitswesen und Biowissenschaften
Das Gesundheitswesen und die Biowissenschaften nutzen verteiltes Computing, um komplexe biowissenschaftliche Daten zu modellieren und zu simulieren. Bildanalyse, Arzneimittelforschung und Genstrukturanalyse werden mit verteilten Systemen schneller. Hier sind einige Beispiele:
- Beschleunigen das strukturbasierte Arzneimitteldesign durch die Visualisierung von Molekularmodellen in drei Dimensionen.
- Reduzieren die Verarbeitungszeiten von Genomdaten, um frühzeitig Einblicke in Krebs, Mukoviszidose und Alzheimer zu erhalten.
- Entwickeln intelligente Systeme, die Ärzten helfen, Patienten zu diagnostizieren, indem sie eine große Menge komplexer Bilder wie MRTs, Röntgenbilder und CT-Scans verarbeiten.
Ingenieurforschung
Ingenieure können komplexe physikalische und mechanische Konzepte auf verteilten Systemen simulieren. Sie nutzen diese Forschung, um das Produktdesign zu verbessern, komplexe Strukturen zu bauen und schnellere Fahrzeuge zu entwerfen. Hier sind einige Beispiele:
- Computational Fluid Dynamics Research untersucht das Verhalten von Flüssigkeiten und setzt diese Konzepte im Flugzeugdesign und bei Autorennen um.
- Computergestützte Ingenieurwissenschaft erfordert rechenintensive Simulationswerkzeuge, um neue Anlagentechnik, Elektronik und Konsumgüter zu testen.
Finanzdienstleistungen
Finanzdienstleistungsunternehmen verwenden verteilte Systeme, um Hochgeschwindigkeits-Wirtschaftssimulationen durchzuführen, die Portfoliorisiken bewerten, Marktbewegungen vorhersagen und die finanzielle Entscheidungsfindung unterstützen. Sie können Webanwendungen erstellen, die die Leistung verteilter Systeme nutzen, um Folgendes zu tun:
- Kostengünstige, personalisierte Prämien anbieten
- Verteilte Datenbanken verwenden, um ein sehr hohes Volumen an Finanztransaktionen sicher zu unterstützen.
- Benutzer authentifizieren und Kunden vor Betrug schützen
Energie und Umwelt
Energieunternehmen müssen große Datenmengen analysieren, um den Betrieb zu verbessern und auf nachhaltige und klimafreundliche Lösungen umzusteigen. Sie verwenden verteilte Systeme, um große Datenströme von einem riesigen Netzwerk von Sensoren und anderen intelligenten Geräten zu analysieren. Dies sind einige Aufgaben, die sie erledigen könnten:
- Streamen und Konsolidieren seismischer Daten für die strukturelle Auslegung von Kraftwerken
- Echtzeitüberwachung von Ölquellen für proaktives Risikomanagement
Welche Arten von verteilter Computerarchitektur gibt es?
Beim verteilten Computing entwerfen Sie Anwendungen, die auf mehreren Computern statt nur auf einem Computer ausgeführt werden können. Sie erreichen dies, indem Sie die Software so entwerfen, dass verschiedene Computer unterschiedliche Funktionen ausführen und kommunizieren, um die endgültige Lösung zu entwickeln. Es gibt vier Haupttypen verteilter Architekturen.
Client-Server-Architektur
Client-Server ist die gebräuchlichste Methode der Softwareorganisation auf einem verteilten System. Die Funktionen sind in zwei Kategorien unterteilt: Clients und Server.
Clients
Kunden haben begrenzte Informations- und Verarbeitungsmöglichkeiten. Stattdessen stellen sie Anforderungen an die Server, die die meisten Daten und andere Ressourcen verwalten. Sie können Anforderungen an den Client stellen und er kommuniziert in Ihrem Namen mit dem Server.
Server
Servercomputer synchronisieren und verwalten den Zugriff auf Ressourcen. Sie antworten auf Clientanforderungen mit Daten oder Statusinformationen. Typischerweise kann ein Server Anforderungen von mehreren Maschinen verarbeiten.
Vorteile und Einschränkungen
Die Client-Server-Architektur bietet die Vorteile von Sicherheit und einfacher laufender Verwaltung. Sie müssen sich nur auf die Sicherung der Servercomputer konzentrieren. Ebenso erfordern alle Änderungen an den Datenbanksystemen nur Änderungen am Server.
Die Einschränkung der Client-Server-Architektur besteht darin, dass Server Kommunikationsengpässe verursachen können, insbesondere wenn mehrere Maschinen gleichzeitig Anforderungen stellen.
Drei-Stufen-Architektur
In dreistufigen verteilten Systemen bleiben Clientmaschinen die erste Stufe, auf die Sie zugreifen. Servermaschinen hingegen werden weiter in zwei Kategorien unterteilt:
Anwendungsserver
Anwendungsserver fungieren als mittlere Ebene für die Kommunikation. Sie enthalten die Anwendungslogik oder die Kernfunktionen, für die Sie das verteilte System entwerfen.
Datenbankserver
Datenbankserver fungieren als dritte Stufe zum Speichern und Verwalten der Daten. Sie sind für den Datenabruf und die Datenkonsistenz verantwortlich.
Durch die Aufteilung der Serververantwortung reduzieren dreistufige verteilte Systeme Kommunikationsengpässe und verbessern die verteilte Rechenleistung.
N-Stufen-Architektur
N-Stufen-Modelle umfassen mehrere verschiedene Client-Server-Systeme, die miteinander kommunizieren, um dasselbe Problem zu lösen. Die meisten modernen verteilten Systeme verwenden eine N-Stufen-Architektur, in der verschiedene Unternehmensanwendungen hinter den Kulissen als ein System zusammenarbeiten.
Peer-to-Peer-Architektur
Verteilte Peer-to-Peer-Systeme weisen allen vernetzten Computern gleiche Verantwortlichkeiten zu. Es gibt keine Trennung zwischen Client- und Servercomputern, und jeder Computer kann alle Aufgaben übernehmen. Die Peer-to-Peer-Architektur ist für die gemeinsame Nutzung von Inhalten, Datei-Streaming und Blockchain-Netzwerke populär geworden.
Wie funktioniert verteiltes Computing?
Verteiltes Computing funktioniert, indem Computer innerhalb der verteilten Systemarchitektur Nachrichten aneinander weiterleiten. Kommunikationsprotokolle oder -regeln schaffen eine Abhängigkeit zwischen den Komponenten des verteilten Systems. Diese gegenseitige Abhängigkeit wird als Verkopplung bezeichnet, und es gibt zwei Haupttypen der Verkopplung.
Lose Verkoppelung
Bei der losen Verkopplung sind Komponenten schwach verbunden, sodass Änderungen an einer Komponente die andere nicht beeinflussen. Beispielsweise können Client- und Server-Computer zeitlich lose verkoppelt sein. Nachrichten vom Client werden einer Serverwarteschlange hinzugefügt, und der Client kann weitere Funktionen ausführen, bis der Server auf seine Nachricht antwortet.
Enge Verkoppelung
Leistungsstarke verteilte Systeme verwenden häufig eine enge Verkoppelung. Schnelle lokale Netzwerke verbinden normalerweise mehrere Computer, wodurch ein Cluster entsteht. Beim Cluster-Computing ist jeder Computer so eingestellt, dass er die gleiche Aufgabe ausführt. Zentrale Steuerungssysteme, Clustering-Middleware genannt, steuern und planen die Aufgaben und koordinieren die Kommunikation zwischen den verschiedenen Rechnern.
Was ist paralleles Computing?
Paralleles Computing ist eine Art des Rechnens, bei der ein Computer oder mehrere Computer in einem Netzwerk viele Berechnungen oder Prozesse gleichzeitig ausführen. Obwohl die Begriffe paralleles Computing und verteiltes Computing oft synonym verwendet werden, weisen sie einige Unterschiede auf.
Paralleles Computing vs. verteiltes Computing
Paralleles Computing ist eine besonders eng gekoppelte Form des verteilten Computing. Bei der parallelen Verarbeitung haben alle Prozessoren Zugriff auf einen gemeinsam genutzten Speicher, um Informationen zwischen ihnen auszutauschen. Andererseits hat bei der verteilten Verarbeitung jeder Prozessor einen privaten Speicher (verteilter Speicher). Prozessoren verwenden Message Passing, um Informationen auszutauschen.
Was ist Grid-Computing?
Beim Grid-Computing arbeiten geographisch verteilte Computernetzwerke zusammen, um gemeinsame Aufgaben zu erfüllen. Ein Merkmal verteilter Grid besteht darin, dass Sie sie aus Computerressourcen bilden können, die mehreren Personen oder Organisationen gehören.
Grid-Computing vs. verteiltes Computing
Grid-Computing ist hochgradig skaliertes verteiltes Computing, das Leistung und Koordination zwischen mehreren Netzwerken betont. Intern verhält sich jedes Grid wie ein eng gekoppeltes Rechensystem. Äußerlich sind die Grids jedoch lockerer gekoppelt. Jedes Grid-Netzwerk führt individuelle Funktionen aus und kommuniziert die Ergebnisse an andere Grids.
Was ist AWS High-Performance Computing (HPC)?
Mit AWS High-Performance Computing (HPC) können Sie Innovationen durch schnelles Networking und eine praktisch unbegrenzt verteilte Rechen-Infrastruktur beschleunigen. Sie können zum Beispiel diese Services nutzen:
- Amazon Elastic Cloud Compute (EC2) zur Unterstützung praktisch jeder Workload mit sicherer, anpassbarer Rechenkapazität.
- AWS Batch zum Skalieren von Hunderttausenden von Rechenaufträgen über AWS-Computing-Services hinweg.
- AWS ParallelCluster zum schnellen Aufbau von HPC-Rechenumgebungen und HPC-Clustern.
Beginnen Sie mit verteiltem Computing auf AWS, indem Sie noch heute ein kostenloses Konto erstellen.
AWS verteiltes Computing - nächste Schritte
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Beginnen Sie mit der Entwicklung in der AWS-Managementkonsole.