Verteiltes Computer

Verteiltes Computer ist ein Feld von Informatik Das untersucht verteilte Systeme. EIN verteiltes System ist ein System, dessen Komponenten sich auf unterschiedlich befinden vernetzte Computer, die ihre Handlungen kommunizieren und koordinieren durch Nachrichten übergeben von jedem System zueinander.[1][2] Die Komponenten interagieren miteinander, um ein gemeinsames Ziel zu erreichen. Drei bedeutende Herausforderungen verteilter Systeme sind: Aufrechterhaltung der Parallelität von Komponenten, Überwindung der Überwindung der Mangel an globaler Uhrund Verwaltung des unabhängigen Versagens von Komponenten.[1] Wenn eine Komponente eines Systems fehlschlägt, fällt das gesamte System nicht aus.[3] Beispiele für verteilte Systeme variieren von SOA-basierte Systeme zu Massiv Multiplayer Online -Spiele zu Peer-to-Peer-Anwendungen.

A Computer Programm Das läuft innerhalb eines verteilten Systems wird a genannt verteiltes Programm,[4] und verteilte Programmierung ist der Prozess des Schreibens solcher Programme.[5] Es gibt viele verschiedene Arten von Implementierungen für den Mechanismus zur Nachrichtenübergabe, einschließlich reiner HTTP, RPC-ähnlich Anschlüsse und Nachrichtenwarteschlangen.[6]

Verteiltes Computer Bezieht sich auch auf die Verwendung verteilter Systeme zur Lösung von Rechenproblemen. Im verteiltes ComputerEin Problem ist in viele Aufgaben unterteilt, von denen jede von einem oder mehreren Computern gelöst wird.[7] die miteinander über die Übergabe von Nachrichten kommunizieren.[8]

Einführung

Das Wort verteilt In Begriffen wie "verteiltes System", "verteilte Programmierung" und ""verteilter Algorithmus"Ursprünglich an Computernetzwerke verwiesen, in denen einzelne Computer in einem geografischen Bereich physisch verteilt waren.[9] Die Begriffe werden heutzutage in viel breiterem Sinne verwendet, selbst wenn sie sich auf Autonom beziehen Prozesse Das wird auf demselben physischen Computer ausgeführt und interagiert miteinander durch Nachrichtenübergang.[8]

Während es keine einzige Definition eines verteilten Systems gibt,[10] Die folgenden definierenden Eigenschaften werden üblicherweise als:

Ein verteiltes System kann ein gemeinsames Ziel haben, z. B. das Lösen eines großen Rechenproblems.[13] Der Benutzer wahrnimmt dann die Sammlung autonomer Prozessoren als Einheit. Alternativ kann jeder Computer seinen eigenen Benutzer mit individuellen Bedürfnissen haben, und der Zweck des verteilten Systems besteht darin, die Verwendung gemeinsamer Ressourcen zu koordinieren oder Kommunikationsdienste für die Benutzer bereitzustellen.[14]

Andere typische Eigenschaften verteilter Systeme umfassen die folgenden:

  • Das System muss tolerieren Misserfolge In einzelnen Computern.[15]
  • Die Struktur des Systems (Netzwerktopologie, Netzwerklatenz, Anzahl der Computer) ist im Voraus nicht bekannt, das System kann aus verschiedenen Arten von Computern und Netzwerkverbindungen bestehen, und das System kann sich während der Ausführung eines verteilten Programms ändern.[16]
  • Jeder Computer verfügt nur über eine begrenzte, unvollständige Ansicht des Systems. Jeder Computer kann nur einen Teil der Eingabe kennen.[17]

Parallele und verteiltes Computing

(a), (b): ein verteiltes System.
(c): ein paralleles System.

Verteilte Systeme sind Gruppen von vernetzten Computern, die ein gemeinsames Ziel für ihre Arbeit haben. Die Begriffe "Gleichzeitiges Computer","Parallele Computing"und" verteiltes Computing "haben viel Überlappung, und es gibt keine klare Unterscheidung zwischen ihnen.[18] Das gleiche System kann sowohl als "parallel" als auch als "verteilt" charakterisiert werden. Die Prozessoren in einem typischen verteilten System laufen gleichzeitig parallel.[19] Parallele Computing kann als eine bestimmte eng gekoppelte Form des verteilten Computing angesehen werden.[20] und verteiltes Computer kann als locker gekoppelte Form des parallelen Computing angesehen werden.[10] Trotzdem ist es möglich, gleichzeitige Systeme als "parallel" oder "verteilt" unter Verwendung der folgenden Kriterien grob zu klassifizieren:

  • Im parallelen Computer können alle Prozessoren Zugriff auf a haben geteilte Erinnerung Informationen zwischen Prozessoren auszutauschen.[21]
  • Im verteilten Computer hat jeder Prozessor seinen eigenen privaten Speicher (Verteilter Speicher). Informationen werden durch Übergabe von Nachrichten zwischen den Prozessoren ausgetauscht.[22]

Die Abbildung rechts zeigt den Unterschied zwischen verteilten und parallelen Systemen. Abbildung (a) ist eine schematische Ansicht eines typischen verteilten Systems; Das System wird als Netzwerk -Topologie dargestellt, bei der jeder Knoten ein Computer ist und jede Zeile, die die Knoten verbindet, eine Kommunikationsverbindung ist. Abbildung (b) zeigt das gleiche verteilte System ausführlicher: Jeder Computer verfügt über einen eigenen lokalen Speicher, und Informationen können nur ausgetauscht werden, indem Nachrichten mithilfe der verfügbaren Kommunikationsverbindungen von einem Knoten an einen anderen weitergegeben werden. Abbildung (c) zeigt ein paralleles System, bei dem jeder Prozessor einen direkten Zugriff auf einen gemeinsam genutzten Speicher hat.

Die Situation wird durch die traditionellen Verwendungen der parallel und verteilten Begriffe weiter erschwert Algorithmus Das entspricht nicht ganz den obigen Definitionen Parallel und verteilt Systeme (sehen unter für detailliertere Diskussionen). Dennoch verwendet die Hochleistungs-Parallelberechnung in einem gemeinsamen Memory-Multiprozessor als Faustregel parallele Algorithmen, während die Koordination eines großflächigen verteilten Systems verteilte Algorithmen verwendet.[23]

Geschichte

Die Verwendung von gleichzeitigen Prozessen, die durch Nachrichtenübergang kommunizieren, hat seine Wurzeln in Betriebssystem Architekturen wurden in den 1960er Jahren untersucht.[24] Die ersten weit verbreiteten verteilten Systeme waren Lokale Netzwerke wie zum Beispiel Ethernet, der in den 1970er Jahren erfunden wurde.[25]

Arpanet, einer der Vorgänger der Internetwurde Ende der 1960er Jahre und Arpanet eingeführt Email wurde in den frühen 1970er Jahren erfunden. E-Mail wurde die erfolgreichste Anwendung von Arpanet,[26] Und es ist wahrscheinlich das früheste Beispiel für eine große Größe verteilte Anwendung. Zusätzlich zu Arpanet (und seinem Nachfolger, dem globalen Internet), einschließlich anderer frühzeitiger weltweiter Computernetzwerke inklusive Usenet und Fidonet Aus den 1980er Jahren wurden beide zur Unterstützung verteilter Diskussionssysteme verwendet.[27]

Die Untersuchung des verteilten Computers wurde in den späten 1970er und frühen 1980er Jahren zu einem eigenen Zweig der Informatik. Die erste Konferenz vor Ort, Symposium über Prinzipien des verteilten Computers (PODC), stammt aus dem Jahr 1982 und sein Gegenstück International Symposium on Distributed Computing (Disc) wurde 1985 erstmals in Ottawa als internationaler Workshop zu verteilten Algorithmen in Graphen abgehalten.[28]

Architekturen

Für das verteilte Computer werden verschiedene Hardware- und Softwarearchitekturen verwendet. Auf einer niedrigeren Ebene ist es erforderlich, mehrere CPUs mit einer Art Netzwerk zu verbinden, unabhängig davon, ob dieses Netzwerk auf eine Leiterplatte gedruckt wird oder aus locker gekoppelten Geräten und Kabeln besteht. Auf einer höheren Ebene ist es notwendig, sich zu verbinden Prozesse Laufen auf diesen CPUs mit einer Art von einer Art Kommunikationssystem.[29]

Die verteilte Programmierung fällt typischerweise in eine von mehreren grundlegenden Architekturen: Kundenserver, dreistufige, n-Ebene, oder Peer-To-Peer; oder Kategorien: lose Kopplung, oder enge Kupplung.[30]

  • Kundenserver: Architekturen, bei denen intelligente Clients den Server für Daten kontaktieren, formatieren und den Benutzern angezeigt. Die Eingabe im Client wird an den Server zurückgeführt, wenn er eine dauerhafte Änderung darstellt.
  • Dreistufige: Architekturen, die die Client -Intelligenz auf eine mittlere Ebene bewegen staatenlos Kunden können verwendet werden. Dies vereinfacht die Anwendungsbereitstellung. Die meisten Webanwendungen sind dreistufig.
  • n-Ebene: Architekturen, die sich in der Regel auf Webanwendungen beziehen, die ihre Anfragen weiter an andere Unternehmensdienste weiterleiten. Diese Art von Anwendung ist diejenige, die am meisten für den Erfolg von verantwortlich ist Anwendungsserver.
  • Peer-To-Peer: Architekturen, bei denen es keine speziellen Maschinen gibt, die einen Dienst anbieten oder die Netzwerkressourcen verwalten.[31]: 227 Stattdessen sind alle Verantwortlichkeiten gleichmäßig auf alle Maschinen aufgeteilt, die als Gleichaltrige bekannt sind. Gleichaltrige können sowohl als Kunden als auch als Server dienen.[32] Beispiele für diese Architektur sind Bittorrent und die Bitcoin -Netzwerk.

Ein weiterer grundlegender Aspekt der verteilten Computerarchitektur ist die Methode zur Kommunikation und Koordinierung von Arbeiten zwischen gleichzeitigen Prozessen. Durch verschiedene Nachrichtenprotokolle können Prozesse direkt miteinander kommunizieren, typischerweise in a Master/Sklave Beziehung. Alternativ a "Datenbank-zentrierte" Architektur kann ermöglichen, verteiltes Computer ohne irgendeine Form von direkter Form zu erfolgen Interprozesskommunikationdurch Verwendung eines gemeinsamen Gebrauchs Datenbank.[33] Insbesondere datenbankzentrierte Architektur bietet eine relationale Verarbeitungsanalyse in einer schematischen Architektur, die das Live-Umgebungsrelais ermöglicht. Dies ermöglicht verteilte Computerfunktionen sowohl innerhalb als auch über die Parameter einer vernetzten Datenbank hinaus.[34]

Anwendungen

Gründe für die Verwendung verteilter Systeme und verteiltes Computing können umfassen:

  1. Die Art einer Anwendung kann benötigen Die Verwendung eines Kommunikationsnetzwerks, das mehrere Computer verbindet: Beispielsweise Daten, die an einem physischen Ort erstellt und an einem anderen Ort erforderlich sind.
  2. Es gibt viele Fälle, in denen die Verwendung eines einzelnen Computers grundsätzlich möglich wäre, aber die Verwendung eines verteilten Systems ist vorteilhaft aus praktischen Gründen. Zum Beispiel kann es kosteneffizienter sein, das gewünschte Leistungsniveau mit a zu erhalten Cluster von mehreren Low-End-Computern im Vergleich zu einem einzigen High-End-Computer. Ein verteiltes System kann mehr Zuverlässigkeit als ein nicht verteiltes System bieten, da es keine gibt der Punkt des Versagens. Darüber hinaus kann ein verteiltes System leichter erweitert und verwaltet sein als ein monolithisches Uniprozessorsystem.[35]

Beispiele

Beispiele für verteilte Systeme und Anwendungen des verteilten Computers umfassen Folgendes:[36]

Theoretische Grundlagen

Modelle

Viele Aufgaben, die wir durch die Verwendung eines Computers automatisieren möchten, sind von Frage - einen Typ. Wir möchten eine Frage stellen, und der Computer sollte eine Antwort geben. Im Theoretische Informatiksolche Aufgaben werden genannt Rechenprobleme. Formal besteht ein Rechenproblem aus Instanzen zusammen mit a Lösung Für jede Instanz. Beispiele sind Fragen, die wir stellen können, und Lösungen sind gewünschte Antworten auf diese Fragen.

Theoretische Informatik versucht zu verstehen, welche Rechenprobleme mithilfe eines Computers gelöst werden können (Computerbarkeitstheorie) und wie effizient (Computerkomplexitätstheorie). Traditionell wird gesagt, dass ein Problem durch die Verwendung eines Computers gelöst werden kann, wenn wir eine entwerfen können Algorithmus Das erzeugt eine korrekte Lösung für eine bestimmte Instanz. Ein solcher Algorithmus kann als implementiert werden Computer Programm Das läuft auf einem allgemeinen Computer: Das Programm liest eine Probleminstanz aus Eingangführt einige Berechnungen durch und erzeugt die Lösung als Ausgang. Formalismen wie Zufallszugriffsmaschinen oder Universelle Turing -Maschinen Kann als abstrakte Modelle eines sequentiellen allgemeinen Computers verwendet werden, der einen solchen Algorithmus ausführt.[38][39]

Das Gebiet der gleichzeitigen und verteilten Computerstudien ähnliche Fragen bei mehreren Computern oder eines Computers, das ein Netzwerk interagierender Prozesse ausführt: Welche Rechenprobleme können in einem solchen Netzwerk gelöst werden und wie effizient? Es ist jedoch überhaupt nicht offensichtlich, was bei einem gleichzeitigen oder verteilten System "ein Problem lösen" ist: Zum Beispiel, was ist die Aufgabe des Algorithmus -Designers und was ist das gleichzeitige oder verteilte Äquivalent eines sequentiellen Allzweckcomputer?

Die folgende Diskussion konzentriert sich auf den Fall mehrerer Computer, obwohl viele der Probleme für gleichzeitige Prozesse, die auf einem einzelnen Computer ausgeführt werden, gleich sind.

Allgemein werden drei Aussichtspunkte verwendet:

Parallelalgorithmen im Shared-Memory-Modell
  • Alle Prozessoren haben Zugriff auf einen gemeinsam genutzten Speicher. Der Algorithmus -Designer wählt das von jedem Prozessor ausgeführte Programm aus.
  • Ein theoretisches Modell ist das Parallele Zufallszugriffsmaschinen (Pram) die verwendet werden.[40] Das klassische Pram -Modell setzt jedoch einen synchronen Zugriff auf den gemeinsam genutzten Speicher aus.
  • Programme zur gemeinsamen Abhilfe können auf verteilte Systeme erweitert werden, wenn das zugrunde liegende Betriebssystem die Kommunikation zwischen Knoten zusammenfasst und den Speicher virtuell über alle einzelnen Systeme hinweg vereint.
  • Ein Modell, das dem Verhalten von realen Multiprozessor-Maschinen näher liegt und die Verwendung von Maschinenanweisungen berücksichtigt, wie z. Vergleiche und swap (Cas), ist das von Asynchrones gemeinsames Speicher. Es gibt eine breite Arbeit an diesem Modell, von denen eine Zusammenfassung in der Literatur zu finden ist.[41][42]
Parallelalgorithmen im Nachrichten-Passing-Modell
  • Der Algorithmus -Designer wählt die Struktur des Netzwerks sowie das von jedem Computer ausgeführte Programm aus.
  • Modelle wie Boolesche Schaltungen und Sortiernetzwerke werden verwendet.[43] Eine Boolesche Schaltung kann als Computernetzwerk angesehen werden: Jedes Gate ist ein Computer, der ein extrem einfaches Computerprogramm ausführt. In ähnlicher Weise kann ein Sortiernetzwerk als Computernetzwerk angesehen werden: Jeder Komparator ist ein Computer.
Verteilte Algorithmen im Nachrichten-Passing-Modell
  • Der Algorithmus -Designer wählt nur das Computerprogramm aus. Alle Computer führen das gleiche Programm aus. Das System muss unabhängig von der Struktur des Netzwerks korrekt funktionieren.
  • Ein häufig verwendetes Modell ist a Graph mit einer Finite-State-Maschine per Knoten.

Bei verteilten Algorithmen hängen Rechenprobleme typischerweise mit Diagrammen zusammen. Oft die Grafik, die die Struktur des Computernetzwerks beschreibt ist Die Probleminstanz. Dies ist im folgenden Beispiel dargestellt.

Ein Beispiel

Berücksichtigen Sie das Rechenproblem, wenn Sie eine Färbung eines bestimmten Diagramms finden G. Verschiedene Felder können die folgenden Ansätze verfolgen:

Zentralisierte Algorithmen
  • Der Graph G wird als Zeichenfolge codiert, und die Zeichenfolge wird als Eingabe an einen Computer angegeben. Das Computerprogramm findet eine Färbung des Diagramms, kodiert die Färbung als Zeichenfolge und gibt das Ergebnis aus.
Parallelalgorithmen
  • Wieder die Grafik G ist als Zeichenfolge codiert. Mehrere Computer können jedoch parallel auf die gleiche Zeichenfolge zugreifen. Jeder Computer kann sich auf einen Teil des Diagramms konzentrieren und eine Färbung für diesen Teil erzeugen.
  • Das Hauptaugenmerk liegt auf Hochleistungsberechnungen, die die Verarbeitungsleistung mehrerer Computer parallel ausnutzen.
Verteilte Algorithmen
  • Der Graph G ist die Struktur des Computernetzwerks. Es gibt einen Computer für jeden Knoten von G und eine Kommunikationsverbindung für jeden Rand von G. Anfangs kennt jeder Computer nur seine unmittelbaren Nachbarn in der Grafik G; Die Computer müssen Nachrichten miteinander austauschen, um mehr über die Struktur von zu erfahren G. Jeder Computer muss seine eigene Farbe als Ausgabe erzeugen.
  • Das Hauptaugenmerk liegt auf der Koordinierung des Betriebs eines willkürlichen verteilten Systems.

Während das Feld paralleler Algorithmen einen anderen Schwerpunkt hat als das Feld verteilter Algorithmen, besteht zwischen den beiden Feldern eine große Wechselwirkung. Zum Beispiel die Cole -Vishkin -Algorithmus Für die Grafikfärbung[44] wurde ursprünglich als paralleler Algorithmus präsentiert, aber die gleiche Technik kann auch direkt als verteilter Algorithmus verwendet werden.

Darüber hinaus kann ein paralleler Algorithmus entweder in einem parallelen System (unter Verwendung des gemeinsamen Speichers) oder in einem verteilten System (unter Verwendung von Nachrichtenübergabe) implementiert werden.[45] Die traditionelle Grenze zwischen parallelen und verteilten Algorithmen (wählen Sie ein geeignetes Netzwerk im Vergleich zu einem bestimmten Netzwerk) nicht an derselben Stelle wie die Grenze zwischen parallelen und verteilten Systemen (Shared Memory vs. Message Passing).

Komplexitätsmaßnahmen

In parallelen Algorithmen ist eine weitere Ressource zusätzlich zu Zeit und Raum die Anzahl der Computer. In der Tat gibt es oft einen Kompromiss zwischen der Laufzeit und der Anzahl der Computer: Das Problem kann schneller gelöst werden, wenn mehr Computer parallel laufen beschleunigen). Wenn ein Entscheidungsproblem gelöst werden kann Polylogarithmische Zeit Durch die Verwendung einer Polynomzahl von Prozessoren soll das Problem in der Klasse sein NC.[46] Die Klasse NC kann durch Verwendung des Pram -Formalismus oder Booleschen Schaltkreise gleich gut definiert werden.[47]

Bei der Analyse verteilter Algorithmen wird normalerweise mehr Aufmerksamkeit auf Kommunikationsvorgänge geschenkt als auf Rechenschritte. Das vielleicht einfachste Modell des verteilten Computing ist ein synchrones System, bei dem alle Knoten in einer Lockstep -Weise arbeiten. Dieses Modell ist allgemein als lokales Modell bekannt. In jedem KommunikationsrundeAlle Knoten parallel (1) erhalten die neuesten Nachrichten von ihren Nachbarn, (2) eine beliebige lokale Berechnung durchführen und (3) neue Nachrichten an ihre Nachbarn senden. In solchen Systemen ist eine zentrale Komplexitätsmaßnahme die Anzahl der synchronen Kommunikationsrunden, die zur Ausführung der Aufgabe erforderlich sind.[48]

Diese Komplexitätsmaß ist eng mit dem verwandt Durchmesser des Netzwerks. Lassen D Sei der Durchmesser des Netzwerks. Einerseits kann jedes rechenbare Problem in einem synchronen verteilten System in ungefähr 2 trivial gelöst werdenD Kommunikationsrunden: Sammeln Sie einfach alle Informationen an einem Ort (D Runden), das Problem lösen und jeden Knoten über die Lösung informieren (D Runden).

Andererseits, wenn die Laufzeit des Algorithmus viel kleiner als D Kommunikationsrunden, dann müssen die Knoten im Netzwerk ihre Ausgabe erzeugen, ohne die Möglichkeit zu haben, Informationen über entfernte Teile des Netzwerks zu erhalten. Mit anderen Worten, die Knoten müssen weltweit konsistente Entscheidungen auf der Grundlage von Informationen treffen, die in ihrem verfügbar sind Lokale D-Nachbarschaft. Viele verteilte Algorithmen sind mit der Laufzeit bekannt als viel kleiner als D Runden und Verständnis, welche Probleme durch solche Algorithmen gelöst werden können, ist eine der zentralen Forschungsfragen des Feldes.[49] Typischerweise wird in diesem Modell ein Algorithmus, der ein Problem in der Polylogarithmischen Zeit in der Netzwerkgröße löst.

Eine weitere häufig verwendete Maßnahme ist die Gesamtzahl der im Netzwerk übertragenen Bits (vgl. Kommunikationskomplexität).[50] Die Merkmale dieses Konzepts werden typischerweise mit dem Constelgest (B) -Modell erfasst, das ähnlich als lokales Modell definiert ist, bei denen einzelne Nachrichten jedoch nur B -Bits enthalten können.

Andere Probleme

Traditionelle Computerprobleme nehmen die Perspektive ein, dass der Benutzer eine Frage stellt, ein Computer (oder ein verteiltes System) die Frage verarbeitet, dann eine Antwort erstellt und stoppt. Es gibt jedoch auch Probleme, bei denen das System nicht anhalten muss, einschließlich der Dachphilosophenproblem und andere ähnliche gegenseitiger Ausschluss Probleme. Bei diesen Problemen soll das verteilte System die Verwendung gemeinsamer Ressourcen kontinuierlich koordinieren, damit keine Konflikte oder Deadlocks geschehen.

Es gibt auch grundlegende Herausforderungen, die für verteilte Computing einzigartig sind, zum Beispiel diejenigen, die mit Fehlertoleranz. Beispiele für verwandte Probleme umfassen Konsensprobleme,[51] Byzantinische Fehlertoleranz,[52] und Selbststabilisierung.[53]

Viel Forschung konzentriert sich auch darauf, das zu verstehen asynchron Art von verteilten Systemen:

Wahl

Koordinatorwahlen (oder Führungswahlen) ist der Prozess der Bezeichnung eines einzelnen Prozess als Organisator einer Aufgabe, die zwischen mehreren Computern (Knoten) verteilt sind. Bevor die Aufgabe beginnt, sind sich alle Netzwerkknoten entweder nicht bewusst, welcher Knoten als "Koordinator" (oder Leader) der Aufgabe dient oder nicht mit dem aktuellen Koordinator kommunizieren kann. Nachdem ein Koordinator -Wahlalgorithmus ausgeführt wurde, erkennt jeder Knoten im gesamten Netzwerk einen bestimmten, eindeutigen Knoten als Aufgabenkoordinator.[57]

Die Netzwerkknoten kommunizieren untereinander, um zu entscheiden, welcher von ihnen in den "Koordinator" -Zustand gelangt. Dafür brauchen sie eine Methode, um die Symmetrie unter ihnen zu brechen. Wenn beispielsweise jeder Knoten eindeutige und vergleichbare Identitäten hat, können die Knoten ihre Identitäten vergleichen und entscheiden, dass der Knoten mit der höchsten Identität der Koordinator ist.[57]

Die Definition dieses Problems wird Lelann häufig zugeschrieben, der es als Methode formalisiert hat, um ein neues Token in einem Token zu erstellen Ringnetz in dem das Token verloren gegangen ist.[58]

Koordinator -Wahlalgorithmen sind in Bezug auf die Gesamtsumme wirtschaftlich ausgelegt Bytes übertragen und Zeit. Der von Gallager, Humblet und Spira vorgeschlagene Algorithmus [59] Für allgemeine undireziierte Grafiken hat sich ein starker Einfluss auf die Gestaltung verteilter Algorithmen im Allgemeinen gehabt und die gewonnen Dijkstra -Preis für ein einflussreiches Papier im verteilten Computer.

Viele andere Algorithmen wurden für verschiedene Arten von Netzwerk vorgeschlagen Grafiken, wie ungerichtete Ringe, unidirektionale Ringe, vollständige Grafiken, Gitter, gerichtete Euler -Diagramme und andere. Eine allgemeine Methode, die das Problem der Graph -Familie aus dem Entwurf des Koordinator -Wahlalgorithmus entkoppelt, wurde von Korach, Kutten und Moran vorgeschlagen.[60]

Um Koordination durchzuführen, verwenden verteilte Systeme das Konzept der Koordinatoren. Das Problem der Koordinator -Wahl besteht darin, einen Prozess aus einer Gruppe von Prozessen auf verschiedenen Prozessoren in einem verteilten System auszuwählen, um als zentraler Koordinator zu fungieren. Es existieren mehrere Wahlalgorithmen für zentrale Koordinator.[61]

Eigenschaften verteilter Systeme

Bisher lag der Fokus auf Entwerfen Ein verteiltes System, das ein bestimmtes Problem löst. Ein komplementäres Forschungsproblem ist Studium Die Eigenschaften eines bestimmten verteilten Systems.[62][63]

Das Problem stoppen ist ein analoges Beispiel aus dem Gebiet der zentralisierten Berechnung: Wir erhalten ein Computerprogramm und die Aufgabe besteht darin, zu entscheiden, ob es für immer angehalten oder ausgeführt wird. Das Stoppproblem ist unentscheidbar Im allgemeinen Fall ist und natürlich das Verhalten des Verhaltens eines Computernetzwerks mindestens so schwierig wie das Verhalten des Verhaltens eines Computers.[64]

Es gibt jedoch viele interessante Sonderfälle, die lichtdurchschnittlich sind. Insbesondere ist es möglich, das Verhalten eines Netzwerks von Finite-State-Maschinen zu vermitteln. Ein Beispiel ist auszuweisen, ob ein bestimmtes Netzwerk interagierender (asynchroner und nicht deterministisches) Finite-State-Maschinen einen Deadlock erreichen kann. Dieses Problem ist PSPACE-Complete,[65] d.h., es ist entzündbar, aber nicht wahrscheinlich, dass es einen effizienten (zentralisierten, parallelen oder verteilten) Algorithmus gibt, der das Problem bei großen Netzwerken löst.

Siehe auch

Anmerkungen

  1. ^ a b Tanenbaum, Andrew S.; Steen, Maarten Van (2002). Verteilte Systeme: Prinzipien und Paradigmen. Upper Saddle River, NJ: Pearson Prentice Hall. ISBN 0-13-088893-1.
  2. ^ "Verteilte Programme". Texte in Informatik. London: Springer London. 2010. S. 373–406. doi:10.1007/978-1-84882-745-5_11. ISBN 978-1-84882-744-8. ISSN 1868-0941. Systeme bestehen aus einer Reihe von physikalisch verteilten Komponenten, die unabhängig voneinander mit ihrem privaten Speicher arbeiten, aber auch von Zeit zu Zeit mit explizitem Nachrichtenübergang kommunizieren. Solche Systeme werden als verteilte Systeme bezeichnet.
  3. ^ Dusseau & Dusseau 2016, p. 1-2.
  4. ^ "Verteilte Programme". Texte in Informatik. London: Springer London. 2010. S. 373–406. doi:10.1007/978-1-84882-745-5_11. ISBN 978-1-84882-744-8. ISSN 1868-0941. Verteilte Programme sind abstrakte Beschreibungen von verteilten Systemen. Ein verteiltes Programm besteht aus einer Sammlung von Prozessen, die gleichzeitig funktionieren und durch explizites Botschaftübergang kommunizieren. Jeder Prozess kann auf eine Reihe von Variablen zugreifen, die von den Variablen, die durch jeden anderen Prozess geändert werden können, nicht mehr als
  5. ^ Andrews (2000). Dolev (2000). Ghosh (2007), p. 10.
  6. ^ Magnoni, L. (2015). "Moderne Nachrichten für verteilte SYTEMS (sic)". Journal of Physics: Konferenzreihe. 608 (1): 012038. doi:10.1088/1742-6596/608/1/012038. ISSN 1742-6596.
  7. ^ Godfrey (2002).
  8. ^ a b Andrews (2000), p. 291–292. Dolev (2000), p. 5.
  9. ^ Lynch (1996), p. 1.
  10. ^ a b Ghosh (2007), p. 10.
  11. ^ Andrews (2000), S. 8–9, 291. Dolev (2000), p. 5. Ghosh (2007), p. 3. Lynch (1996), p. xix, 1. Peleg (2000), p. xv.
  12. ^ Andrews (2000), p. 291. Ghosh (2007), p. 3. Peleg (2000), p. 4.
  13. ^ Ghosh (2007), p. 3–4. Peleg (2000), p. 1.
  14. ^ Ghosh (2007), p. 4. Peleg (2000), p. 2.
  15. ^ Ghosh (2007), p. 4, 8. Lynch (1996), p. 2–3. Peleg (2000), p. 4.
  16. ^ Lynch (1996), p. 2. Peleg (2000), p. 1.
  17. ^ Ghosh (2007), p. 7. Lynch (1996), p. xix, 2. Peleg (2000), p. 4.
  18. ^ Ghosh (2007), p. 10. Keidar (2008).
  19. ^ Lynch (1996), p. xix, 1–2. Peleg (2000), p. 1.
  20. ^ Peleg (2000), p. 1.
  21. ^ Papadimitriou (1994), Kapitel 15. Keidar (2008).
  22. ^ Siehe Referenzen in Einführung.
  23. ^ Bentaleb, a.; Yifan, L.; Xin, J.; et al. (2016). "Parallele und verteilte Algorithmen" (PDF). Nationale Universität von Singapur. Abgerufen 20. Juli 2018.
  24. ^ Andrews (2000), p. 348.
  25. ^ Andrews (2000), p. 32.
  26. ^ Peter (2004), Die Geschichte der E -Mail.
  27. ^ Banks, M. (2012). Auf dem Weg zum Web: Die geheime Geschichte des Internets und seiner Gründer. Apress. S. 44–5. ISBN 9781430250746.
  28. ^ Tel, G. (2000). Einführung in verteilte Algorithmen. Cambridge University Press. S. 35–36. ISBN 9780521794831.
  29. ^ Ohlídal, M.; Jaroš, J.; Schwarz, J.; et al. (2006). "Evolutionsdesign von OAB- und AAB -Kommunikationsplänen für Verbindungsnetzwerke". In Rothlauf, F.; Branke, J.; Cagnoni, S. (Hrsg.). Anwendungen des evolutionären Computers. Springer Science & Business Media. S. 267–78. ISBN 9783540332374.
  30. ^ "Echtzeit und verteilte Computersysteme" (PDF). ISSN 2278-0661. Archiviert von das Original (PDF) Am 2017-01-10. Abgerufen 2017-01-09. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  31. ^ Vigna P, Casey MJ. Das Zeitalter der Kryptowährung: Wie Bitcoin und Blockchain die globale Wirtschaftsordnung in Frage stellen St. Martin's Press 27. Januar 2015 ISBN9781250065636
  32. ^ Hieu., Vu, Quang (2010). Peer-to-Peer-Computing: Prinzipien und Anwendungen. Lupu, Mihai., Ooi, Beng Chin, 1961-. Heidelberg: Springer. p. 16. ISBN 9783642035135. OCLC 663093862.
  33. ^ Lind P, AlM M (2006), "Ein datenbankzentriertes System zur virtuellen Chemie", J Chem Inf Modell, 46 (3): 1034–9, doi:10.1021/ci050360b, PMID 16711722.
  34. ^ Chiu, G. (1990). "Ein Modell für eine optimale Datenbankzuweisung in verteilten Computersystemen". Verfahren. IEEE INFOCOM'90: Neunte jährliche gemeinsame Konferenz der IEEE Computer and Communications Societies.
  35. ^ Elmasri & Navathe (2000), Abschnitt 24.1.2.
  36. ^ Andrews (2000), p. 10–11. Ghosh (2007), p. 4–6. Lynch (1996), p. xix, 1. Peleg (2000), p. xv. Elmasri & Navathe (2000), Abschnitt 24.
  37. ^ Haussmann, J. (2019). "Kosteneffiziente parallele Verarbeitung unregelmäßig strukturierter Probleme in Cloud-Computing-Umgebungen". Journal of Cluster Computing. 22 (3): 887–909. doi:10.1007/s10586-018-2879-3. S2CID 54447518.
  38. ^ Toomarian, N.B.; Barhen, J.; Gulati, S. (1992). "Neuronale Netze für Echtzeit-Roboteranwendungen". In Fijany, a.; Bejczy, A. (Hrsg.). Parallele Berechnungssysteme für Robotik: Algorithmen und Architekturen. Welt wissenschaftlich. p. 214. ISBN 9789814506175.
  39. ^ Savage, J. E. (1998). Berechnungsmodelle: Erforschung der Berechnungsleistung. Addison Wesley. p. 209. ISBN 9780201895391.
  40. ^ Cormen, Leiserson & Rivest (1990), Abschnitt 30.
  41. ^ Herlihy & Shavit (2008), Kapitel 2-6.
  42. ^ Lynch (1996)
  43. ^ Cormen, Leiserson & Rivest (1990), Abschnitte 28 und 29.
  44. ^ Cole & Vishkin (1986). Cormen, Leiserson & Rivest (1990), Abschnitt 30.5.
  45. ^ Andrews (2000), p. ix.
  46. ^ Arora & Barak (2009), Abschnitt 6.7. Papadimitriou (1994), Abschnitt 15.3.
  47. ^ Papadimitriou (1994), Abschnitt 15.2.
  48. ^ Lynch (1996), p. 17–23.
  49. ^ Peleg (2000), Abschnitte 2.3 und 7. Linial (1992). Naor & Stockmeyer (1995).
  50. ^ Schneider, J.; Witttenhofer, R. (2011). "Handelsbit, Nachrichten und Zeitkomplexität verteilter Algorithmen". In Peleg, D. (Hrsg.). Verteiltes Computer. Springer Science & Business Media. S. 51–65. ISBN 9783642240997.
  51. ^ Lynch (1996), Abschnitte 5–7. Ghosh (2007), Kapitel 13.
  52. ^ Lynch (1996), p. 99–102. Ghosh (2007), p. 192–193.
  53. ^ Dolev (2000). Ghosh (2007), Kapitel 17.
  54. ^ Lynch (1996), Abschnitt 16. Peleg (2000), Abschnitt 6.
  55. ^ Lynch (1996), Abschnitt 18. Ghosh (2007), Abschnitte 6.2–6.3.
  56. ^ Ghosh (2007), Abschnitt 6.4.
  57. ^ a b Haloi, S. (2015). Apache Zookeeper Essentials. Packt Publishing Ltd. S. 100–101. ISBN 9781784398323.
  58. ^ Lelann, G. (1977). "Verteilte Systeme - auf einen formalen Ansatz". Informationsverarbeitung. 77: 155 · 160 - über Elsevier.
  59. ^ R. G. GallagerP. A. Humblet und P. M. Spira (Januar 1983). "Ein verteilter Algorithmus für Bäume mit minimalem Gewicht" (PDF). ACM -Transaktionen zu Programmiersprachen und Systemen. 5 (1): 66–77. doi:10.1145/357195.357200. S2CID 2758285.{{}}: Cs1 montiert: Mehrfachnamen: Autorenliste (Link)
  60. ^ Korach, Ephraim; Kutten, Shay; Moran, Shlomo (1990). "Eine modulare Technik für das Design effizienter verteilter Leader -Finding -Algorithmen" (PDF). ACM -Transaktionen zu Programmiersprachen und Systemen. 12 (1): 84–101. Citeseerx 10.1.1.139.7342. doi:10.1145/77606.77610. S2CID 9175968.
  61. ^ Hamilton, Howard. "Verteilte Algorithmen". Abgerufen 2013-03-03.
  62. ^ "Große ungelöste Probleme in verteilten Systemen?". cstheory.Stackexchange.com. Abgerufen 16. März 2018.
  63. ^ "Wie große Daten und verteilte Systeme traditionelle Skalierbarkeitsprobleme lösen". theServerside.com. Abgerufen 16. März 2018.
  64. ^ Svozil, K. (2011). "Indeterminismus und Zufälligkeit durch Physik". In Hector, Z. (Hrsg.). Zufälligkeit durch Berechnung: Einige Antworten, mehr Fragen. Welt wissenschaftlich. S. 112–3. ISBN 9789814462631.
  65. ^ Papadimitriou (1994), Abschnitt 19.3.

Verweise

Bücher
Artikel
Websites

Weitere Lektüre

Bücher
Artikel
Konferenz Unterlagen
  • Rodriguez, Carlos; Villagra, Marcos; Baran, Benjamin (2007). "Asynchrone Teamalgorithmen für boolesche Befriedigung". 2007 2. Bio-inspirierte Modelle für Netzwerk-, Informations- und Computersysteme. S. 66–69. doi:10.1109/bimnics.2007.4610083. S2CID 15185219.

Externe Links