Diese Erfindung bezieht sich auf eine verteilte Datenstruktur und
eine Technik zur Verwendung der Datenstruktur, um mit einem Peer-To-Peer-System
zu interagieren, wie auch die Verwendung der Technik bei Multicasting auf Applikationsebene.
HINTERGRUND
Peer-To-Peer-Systeme (Peer-To-Peer = P2P) verwenden ein Netzwerk,
das teilnehmende Maschinen verbindet, die gleiche oder ähnliche Fähigkeiten
und Verantwortlichkeiten haben. Diese Systeme führen Aufgaben ohne die Koordination
eines herkömmlichen Servers (oder mit einer minimalen Einrichtungs-Koordination
durch einen Server) aus. 1 zeigt beispielsweise die
Darstellung eines P2P-Systems 100 auf hoher Ebene. Das System
100 enthält eine Sammlung von Peer-Einheiten (102–112)
mit gleichen oder ähnlichen Fähigkeiten und Verantwortlichkeiten. Bei
einem Beispiel können die Peer-Einheiten (102–112)
unabhängigen PC-Geräten entsprechen, die über das Internet oder ein
Intranet miteinander verbunden sind. Die Peer-Einheiten (102–112)
können Dateien oder andere Informationen untereinander (wie es mit dem beispielhaften
Kommunikationsweg 114 gezeigt ist) ohne die Hilfe eines Servers direkt
austauschen. Eine allgemeine Einführung in P2P-Systeme findet sich in D. S.
Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja, J. Pruyne, B. Richard, S. Rollins
und Z. Xu., "Peer-To-Peer Computing" Technical Report HPL-2002-57, HP Lap, 2002.
P2P-Systeme verwenden im allgemeinen eine verteilte Hash-Tabelle (DHT),
um die Speicherung und das Abrufen von Objekten in Peer-Einheiten zu erleichtern,
die in den Systemen teilnehmen. Wie der Name vermuten lässt, bezieht sich eine
verteilte Hash-Tabelle (DHT) auf eine Hash-Tabelle, die über mehrere Orte verteilt
ist, wie etwa über mehrere Speicher, die unterschiedlichen Computergeräten
zugeordnet sind. Eine verteilte Hash-Tabelle legt eine Vielzahl von DHT-Knoten fest,
die entsprechende zugewiesene IDs haben. Die DHT-Knoten definieren zusammen einen
abstrakten logischen DHT-Raum. Ein Objekt kann in diesen logischen DHT-Raum eingefügt
oder aus diesem abgerufen werden, indem dieses Objekt einer Hash-Funktion unterzogen
wird, um einen Schlüssel zu erzeugen. Dieser Schlüssel wird anschließend
verwendet, um eine spezielle Zielknoten-ID im logischen DHT-Raum zu lokalisieren,
die das Objekt empfangen wird, oder bei der das Objekt wiederaufgefunden werden
kann. Das heißt jeder DHT-Knoten ist einem Bereich von Schlüsseln zugeordnet;
ein Objekt wird einem speziellen DHT-Knoten hinzugefügt oder dort abgerufen,
abhängig davon, ob der Schlüssel des Objektes in den Bereich von Schlüsseln
fällt, die diesem speziellen DHT-Knoten zugeordnet sind. Im Gegensatz zu Anwendungen
einer nicht verteilten Hash-Tabelle, können DHT-Knoten frei zum logischen DHT-Raum
hinzukommen oder diesen verlassen (z.B. entsprechend Computergeräten, die zum
P2P-System hinzukommen bzw. dieses verlassen), weshalb eine Funktionalität
bereitgestellt sein muss, die sich diesen Ereignissen zuwendet.
Es wurde eine Vielfalt von DHT-Strategien entwickelt, um die Speicherung
und das Abrufen von Objekten in einem P2P-System zu verwalten. 2
zeigt eine CAN-Strategie (CAN – Content Adressable Network), wie sie beispielsweise
in S. Ratnasamy, P. Francis, M. Handley, R. Karp und S-Shenker, "A Scalable Content-Adressable
Network", ACM SigComm 2001, San Diego, CA, USA, August 2001 beschrieben ist. Diese
Strategie modelliert den logischen DHT-Raum zu einem D-dimensionalen kartesischen
Raum 200. Die CAN-Strategie unterteilt den Raum 200, wenn Knoten
zum DHT-Raum 200 hinzukommen. Wenn beispielsweise Knoten n1 hinzukommt,
weist die CAN-Strategie den gesamten Raum 200 diesem Knoten zu. Wenn der
Knoten n2 hinzukommt teilt die CAN-Strategie den Raum in zwei Hälften und ordnet
jede Hälfte dem Knoten n1 bzw. n2 zu. Kommt der Knoten n3 hinzu, teilt die
CAN-Strategie die rechte Hälfte in eine oberes und ein unteres Viertel, wobei
das obere Viertel dem Knoten n2 und das untere Viertel dem Knoten n3 zugeordnet
wird. Und wenn der Knoten n4 hinzukommt, teilt die CAN-Strategie das untere rechte
Viertel in ein linkes Achtel (das dem Knoten n3 zugeordnet wird) und ein rechtes
Achtel (das dem Knoten n4 zugeordnet wird). Dieser Vorgang wird sooft wiederholt,
wie es notwendig ist, um den Knoten die hinzukommen oder entfernt werden, Rechnung
zu tragen. Die resultierenden Unterteilungen definieren logische Räume, die
verwendet werden, um Objekte in die verteilte Hash-Tabelle einzufügen und aus
dieser abzurufen. Es kann gesagt werden, dass ein Knoten die Objekte "besitzt",
die zu seinem Raum passen.
3 zeigt eine weitere Strategie, die CHORD genannt wird
(z.B. wie es in I. Stoica, R. Morris, D. Karger, M. F. Kaashoek and H. Balakrishnan,
"Chord: a Scalable Peer-To-Peer Lookup Service for Internet Applications", ACM SigComm
2001, San Diego, CA, USA, August 2001 beschrieben ist). Bei dieser Strategie wird
der logische DHT-Raum als kreisförmiger Raum 300 aufgebaut. DHT-Knoten
werden IDs zugeordnet und dem kreisförmigen logischen DHT-Raum
300 auf der Basis ihrer zugeordneten IDs hinzugefügt. Beispielsweise
haben die beispielhaften DHT-Knoten n1, n2, n3, n4 und n5, die in 3
gezeigt sind, zugeordnete IDs, die deren "Anordnung" im kreisförmigen logischen
DHT-Raum 300 regeln. Wie bei 2 teilen die
DHT-Knoten den logischen DHT-Raum, wenn sie hinzugefügt werden, wodurch mehrere
Teilräume oder Zonen definiert werden. Diese Zonen definieren die Objekte,
die jeder Knoten "besitzt". Um beispielsweise ein Objekt in eine verteilte Hash-Tabelle
einzufügen, die mit der DHT-Strategie festgelegt wird, die in 3
gezeigt ist, wird das Objekt einer Hash-Funktion unterzogen, um einen Schlüssel
zu erzeugen. Das Objekt wird anschließend an dem DHT-Knoten gespeichert, der
eine Zone hat, die diesem Schlüssel zugewiesen ist (z.B. an dem DHT-Knoten,
der einen Bereich von Schlüsseln umfasst, die den Schlüssel des Objektes
beinhalten). In beiden Fällen von 2 und
3 kann eine Vielfalt von Suchstrategien verwendet werden,
um einen speziellen Knoten im P2P-System schnell zu finden. Im allgemeinen beinhalten
die Suchstrategien das Ausführen zahlreicher "Sprünge" im logischen DHT-Raum,
um sich dem gewünschten DHT-Zielknoten zu nähern. Normalerweise sind unterschiedliche
Mechanismen vorgesehen, um diese Suche zu beschleunigen. Beispielsweise speichert
jeder DHT-Knoten bei der CHORD-Strategie die IDs eines Satzes anderer DHT-Knoten.
Diese andern IDs können auf exponentielle Art und Weise zunehmen, wodurch sogenannte
"Finger" eingerichtet werden, die den logischen Raum sondieren. Dadurch kann der
Suchvorgang einen gewünschten DHT-Knoten mit einer geringen Anzahl von Sprüngen
schnell lokalisieren.
2 und 3 geben lediglich
eine Übersicht zweier beispielhafter bekannter DHT-Routing-Strategien einer
höheren Ebene an. Es gibt zahlreiche andere Strategien. Beispielsweise ist
eine weitere hinlänglich bekannte Routing-Strategie die PASTRY-Routing-Strategie,
wie sie in A. Rowstron and P. Druchel, "Pastry: Scalable, Distributed Object Location
and Routing for Large-Scale Peer-To-Peer Systems" 18. FIFP/ACM International Conference
on Distributed Systems Platforms (Middleware), Heidelberg, Deutschland, November
2001 beschrieben ist.
Die Druckschrift "SOMO: Self-Organized Metadata Overlay for Ressource
Management in P2P DHT", Z. Zhang et. al, Springer Verlag 2003 beschreibt den Aufbau
eines selbstorganisierten Metadaten-Overlay auf einem strukturierten P2P-DHT in
Top-Down-Manier.
P2P-Systeme bieten gegenüber herkömmlichen Client-Server-Strategien
zahlreiche Vorteile. Beispielsweise verfügen P2P-Systeme über die Fähigkeit,
sich ohne zentrale Koordination automatisch und frei zu erweitern und zu verkleinern.
Dieser Mangel einer überwachenden Koordination stellt jedoch auch zahlreiche
Herausforderungen. Beispielsweise kann es erwünscht sein, dass sich das P2P-System
konzertiert verhält, um eine bestimmte umfassende Funktion auszuführen.
Unter Umständen kann es erwünscht sein, Daten von den Teilnehmern des
P2P-Systems zu sammeln. Oder es kann erwünscht sein, Informationen unter den
Teilnehmern im P2P-System zu verteilen. Beim Client-Server-Ansatz kann ein Server
einfach seine Clients pollen, um Informationen von seinen Clients zu sammeln, oder
Informationen zu seinen Clients rundzusenden, um Informationen zu seinen Clients
zu verteilen. Die Datensammlung und -verteilung wird in einem P2P-System jedoch
zunehmend problematisch, da es aus einem losen Zusammenschluss miteinander verbundener
Peers besteht, die frei kommen und gehen können. Das Hinzufügen einer
zentralisierten herkömmlichen Berichtsfunktionalität kann die Wirkung
haben, dass das P2P-System verkompliziert wird und somit seine Flexibilität
und Brauchbarkeit verringert wird.
Somit gibt nach dem Stand der Technik beispielsweise den Bedarf an
einer wirkungsvollen Strategie zur Interaktion mit einer P2P-DHT, die beispielsweise
das Sammeln von Daten von ihren Teilnehmern und das Verteilen von Informationen
auf ihre Teilnehmer gestattet. Darüber hinaus ist es gewünscht, die P2P-DHT
wirkungsvoll zu organisieren und mit ihr bei Vorgängen zu interagieren, die
von ihrer Effizienz profitieren, wie etwa bei einer Multicasting-Session auf Applikationsebene.
ÜBERSICHT
Gemäß einer beispielhaften Anwendung ist ein Verfahren zum
Aufbauen eines Daten-Overlay beschrieben. Das Verfahren enthält das Bereitstellen
einer verteilten Hash-Tabelle (DHT), die das Einfügen und Abrufen von Objekten
in und aus dem Peer-To-Peer-System regelt, wobei die verteilte Hash-Tabelle einen
logischen Raum enthält, der eine Vielzahl von DHT-Knoten beinhaltet, die eine
dazugehörige Vielzahl von DHT-Zonen haben. Das Verfahren umfasst zudem das
Aufbauen des Daten-Overlays als Datenstruktur auf dem logischen Raum der verteilten
Hash-Tabelle durch Zuordnen von Objekten in der Datenstruktur auf DHT-Knoten und
durch Einrichten von Verknüpfungen zwischen den Objekten in der Datenstruktur.
Der Daten-Overlay hat die Topologie eines Baums, wobei der Baum über Baumknoten
verfügt, die entsprechenden DHT-Knoten zugeordnet sind. Jeder Baumknoten hat
eine ihm zugeordnete entsprechende Baumknotenzone, die einem Teil
des logischen Raums der verteilten Hash-Tabelle entspricht.
Maschinen werden auf den logischen Raum der DHT abgebildet. Jede Maschine
entspricht einer oder mehreren der Baumknotenzonen. Jede Maschine wählt als
ihren repräsentativen Knoten aus der einen oder den mehreren Baumknotenzonen,
die ihr entspricht/entsprechen, den Baumknoten, der der größten Baumknotenzone
entspricht. Jeder repräsentative Knoten wählt als seinen Elternknoten
einen weiteren repräsentativen Knoten, der der repräsentative Knoten für
eine angrenzende der Baumknotenzone ist, die größer ist.
Nachdem die Maschinen auf den logischen Raum der DHT abgebildet worden
sind, können Metadaten Metadaten an jeder Maschine erfassen. Die erfassten
Metadaten können von jeder Maschine zu ihrem repräsentativen Knoten gesendet
werden, wobei diese repräsentativen Knoten die auf diese Weise empfangenen
Metadaten zu ihrem jeweiligen Elternknoten senden können. Die Metadaten, die
am höchsten Knoten in einem Baum (z.B. dem Wurzelknoten) empfangen werden,
können verarbeitet und zu jeder Maschine über die entsprechenden Elternknoten
und repräsentativen Knoten gesendet werden. Die Metadaten können beispielsweise
Informationen sein, die den Betrieb jeder Maschine betreffen, und die verarbeiteten
Metadaten können Anweisungen sein, die den Betrieb jeder Maschine steuern.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
Ein umfangreicheres Verständnis der Anwendungen kann unter Bezugnahme
auf die folgenden detaillierte Beschreibung in Verbindung mit den beiliegenden Zeichnungen
gewonnen werden.
1 zeigt ein herkömmliches Peer-To-Peer-System
(P2P-System).
2 zeigt eine herkömmliche CAN-Routing-Strategie.
3 zeigt eine herkömmliche CHORD-Routing-Strategie.
4 zeigt einer herkömmliche Technik zum Verknüpfen
von zwei Objekten einer Datenstruktur im Zusammenhang einer lokalen Maschinenumgebung.
5 zeigt eine beispielhafte Technik zum Verknüpfen
von zwei Objekten einer Datenstruktur in einer P2P-Umgebung einer verteilten Hash-Tabelle
(DHT), bei der zwei Objekte zwei unterschiedlichen Knoten in der P2P-DHT-Umgebung
zugeordnet werden und bei der die Verknüpfungstechnik die Basis eines Daten-Overlays
bildet, der sich "auf" der DHT befindet.
6 zeigt eine einfache P2P-DHT, die einen Ring, eine
Zone und eine Basis-Routingtabelle enthält, die r Nachbarn auf jeder Seite
aufzeichnet, wobei ein Hashvorgang den DHT-Knoten Zonen zuordnet.
7 zeigt eine beispielhafte Baumstruktur, die mit Hilfe
des Konzeptes eines Daten-Overlays aus 5 aufgebaut
ist, wobei die Baumstruktur als Selbstorganisierender Metadaten-Overlay (SOMO) bezeichnet
wird.
8a–8c zeigen progressive
schematische Ansichten eines Vorgangs zum Aufbauen eines SOMO von unten nach oben,
wobei 8a das Aufbauen eines logischen Baums als einen
Bezugsrahmen zeigt, 8b das Finden repräsentativer
virtueller Knoten und 8c ein Abbilden des logischen
Baumes auf physikalische Maschinen zeigt.
9a–9c zeigen fortschreitende
schematische Ansichten eines Eigenskaliervorgangs zum Wiederherstellen des von unten
nach oben aufgebauten SOMO, der in 8c gezeigt ist,
wobei 9a den von unten nach oben aufgebauten SOMO zeigt,
der in 8c dargestellt ist, 9b
das Hinzufügen einer physikalischen Maschine zeigt, für die ein entsprechender
virtueller Knoten im logischen Baum gefunden wird, und 9c
ein Abbilden des korrigierten logischen Baums auf sämtliche physikalischen
Maschinen zeigt.
10a zeigt die Kombination von Fähigkeiten einer
DHT für die Pool-Bildung von Ressourcen und einen von unten nach oben aufgebauten
SOMO, um gemeinsam einen Ressourcen-Pool herzustellen.
10b zeigt eine beispielhafte Anwendung der SOMO-Baumstruktur
von 7 auf die Sammlung von Informationen von und die
Verteilung von Informationen auf die Teilnehmer des P2P-Systems.
11a zeigt eine schematische Anordnung für Multicasting
auf Applikationsebene, und 11b zeigt eine Verbesserung
an der Anordnung aus 11a durch Verwendung eines Helferknotens
in einem Ressourcen-Pool, wobei Kreise ursprüngliche Mitglieder einer Multicast-Session
auf Applikationsebene repräsentieren und ein Quadrat einen verfügbaren
Peer zeigt, der eine hohe Ordnung hat.
12 zeigt eine SOMO-Berichtsstruktur zur Zeitplanung
einer einzelnen Multicast-Session auf Applikationsebene, wobei jeder Knoten seine
Netzwerkkoordinaten wie auch seine Bandbreitenbegrenzungen in seinem Bericht für
den SOMO veröffentlicht.
13 zeigt einen beispielhaften Computer, der verwendet
wird, um einen Teilnehmer eines P2P-Systems zu implementieren, wobei das P2P-System
einen Daten-Overlay enthält, der auf dessen DHT aufgebaut ist.
Es werden dieselben Ziffern im Verlauf der Beschreibung und in den
Zeichnungen verwendet, um ähnliche Bestandteile und Merkmale zu kennzeichnen.
Ziffern der Folge 100 beziehen sich auf Merkmale, die ursprünglich
in 1 zu finden sind, Ziffern der Folge 200
beziehen sich auf Merkmale, die ursprünglich in 2
zu finden sind, Ziffern der Folge 300 beziehen sich auf Merkmale, die ursprünglich
in 3 zu finden sind, usw..
DETAILLIERTE BESCHREIBUNG
Die hier beschriebenen Strategien betreffen eine Datenstruktur, die
"auf" einer verteilten Hash-Tabelle (DHT) aufgebaut ist, die in einem Peer-To-Peer-(P2P-)System
verwendet wird. Der Begriff Peer-To-Peer-(P2P-)System kann eine beliebige Zwischenverbindung
von Teilnehmern beschreiben, bei der die Teilnehmer direkt mit Anderen interagieren
können, wie etwa ein Zwischenverbindungsnetzwerk 100, das in
1 dargestellt ist. Bei einer Anwendung verlangt das
P2P-System nicht die Unterstützung von serverartigen Einheiten. Die Teilnehmer
können eine beliebige Art von Einheit beinhalten, wie etwa PCs, Laptop-Computer,
PDAs, applikationsspezifische Rechenvorrichtungen und dergleichen. Die Teilnehmer
können miteinander über eine beliebige Kombination einer Routing-Infrastruktur
kommunizieren, wie etwa über drahtgebundene und/oder drahtlose Kommunikations-Routing-Machanismen,
unterschiedliche Router, Gateways, etc.. Zudem können die Teilnehmer miteinander
durch eine beliebige Kombination von Netzwerkprotokollen, wie etwa TCP/IP (wie es
beispielsweise durch das Internet oder ein Intranet bereitgestellt wird), kommunizieren.
Allgemeiner gesagt kann eine beliebige der Funktionen, die hier beschrieben
sind, unter Verwendung von Software, Firmware (z.B. unveränderte logische Schaltkreise),
manueller Verarbeitung oder einer Kombination aus diesen Anwendungen eingesetzt
werden. Der Begriff "Logik" oder "Modul", wie er hier verwendet wird, steht allgemein
für Software, Firmware oder eine Kombination aus Software und Firmware. Für
den Fall einer Softwareanwendung repräsentiert der Begriff "Logik" oder "Modul"
beispielsweise Programmcode, der festgelegte Aufgaben durchführt, wenn er auf
einer Verarbeitungsvorrichtung oder Verarbeitungsvorrichtungen (z.B. einer CPU oder
CPUs) ausgeführt wird. Der Programmcode kann in einer oder mehreren von einem
Computer lesbaren Speichervorrichtung(en) gespeichert sein.
Diese Beschreibung enthält folgendes: Abschnitt A beschreibt
eine allgemeine Daten-Overlay-Struktur, die "auf" einer P2P-DHT aufgebaut werden
kann; Abschnitt B beschreibt einen Selbstorganisierenden Metadaten-Overlay oder
"SOMO"; Abschnitt C beschreibt die Verwendung des SOMO zum Erfassen und Verteilen
von Informationen in einem P2P-System; Abschnitt D beschreibt ALM (Application Level
Multicasting – Multicasting auf Applikationsebene) mit Hilfe der P2P-DHT;
Abschnitt E beschreibt die Verwendung eines beispielhaften P2P-Teilnehmers, der
bei dem Typ des P2P-DHT-Systems mit ALM verwendet werden kann, wie es in den Abschnitten
A–D beschrieben ist.
A. DATEN-OVERLAY ÜBER EINER P2P-DHT
Ein Daten-Overlay ist eine Datenstruktur, die aus Objekten besteht.
Die Datenstruktur wird "auf" einer verteilten Hash-Tabelle implementiert. Als Hintergrund
stellt die DHT eine Technik zum Einfügen von Objekten in und zum Abrufen von
Objekten aus einem verteilten Speicher bereit, der durch ein P2P-System bereitgestellt
ist. Sie führt diese Aufgabe durch Definieren einer Sammlung von DHT-Knoten
innerhalb eines logischen DHT-Raumes aus. Das heißt, die DHT-Technik ordnet
jeden DHT-Knoten einem vorbestimmten Abschnitt des logischen DHT-Raumes zu, der
als die "Zone" des DHT-Knotens bezeichnet wird. Bei der CHORD-Technik kann die Zone
eines speziellen DHT-Knotens als die Spanne interpretiert werden, die zwischen diesem
speziellen DHT-Knoten und seinem benachbarten Knoten in einem kreisförmigen
logischen DHT-Raum (wie etwa in 3
gezeigt) definiert ist. Ein Objekt wird gespeichert, indem es einem Hashvorgang
unterzogen wird, um einen Schlüssel zu erzeugen, und anschließend dieser
Schlüssel verwendet wird, um das Objekt einer speziellen Knoten-ID im logischen
DHT-Raum zuzuordnen. Das Objekt wird aus dem logischen DHT-Raum in einer entsprechenden
Art und Weise abgerufen. Diese zugeordneten Zonen führen schließlich eine
Abbildung auf reale Maschinen aus (z.B. Computergeräte und zugeordnete Dateispeichersysteme),
wenngleich es keine Eins-zu-Eins-Beziehung zwischen Knoten und Maschinen geben muss.
Der Daten-Overlay wird "auf" der DHT in dem Sinne implementiert, dass
dessen Objekte Knoten im logischen DHT-Raum zugeordnet sind. Zudem geht eine Applikation
von einem Objekt zu einem weiteren Objekt in der Datenstruktur des Overlays über
(führt ein Routing aus), indem sie die zugrundeliegenden Protokolle und Dienste
der P2P-DHT verwendet. Insbesondere sei für einen Bezugsrahmen der herkömmliche
Fall von 4 betrachtet, die die Umgebung 402
einer einzelnen Maschine zeigt. In dieser Umgebung 402 enthält eine
Datenstruktur zwei Objekte a 404 und b 406, die im Speicher eingesetzt
sind, der von einer einzelnen Maschine bereitgestellt ist. Ein Objekt repräsentiert
im weiten Sinn eine beliebige Einheit eines beliebigen Typs von Informationen; in
einem herkömmlichen Fall kann ein Objekt beispielsweise einem Datenbankeintrag,
z.B. einem Dokument, entsprechen. Im Beispiel von 4
enthält das Objekt a 404 einen Verweis 408, der auf Objekt
b Bezug nimmt.
Im Gegensatz dazu zeigt 5 den Einsatz
eines Daten-Overlays im Zusammenhang einer P2P-DHT-Umgebung 502. Da in
dieser Umgebung 502 die Objekte "auf" dem DHT-Knoten-Gerüst aufgebaut
sind, das durch die DHT bereitgestellt wird, bilden einzelne Knoten im logischen
DHT-Raum den "Host" für die Objekte im Daten-Overlay. Beispielsweise ist der
DHT-Knoten x 504 der Host für das Objekt a 506 und der DHT-Knoten
y 508 der Host für das Objekt b 510. Bei diesem Beispiel
bezieht sich das Objekt a 506 auf das Objekt b 510. Im allgemeinen
kann das Objekt a 506 mit dem Objekt b 510 verknüpft werden,
indem der Schlüssel gespeichert wird, der verwendet wird, um auf das Objekt
b 510 zuzugreifen. Dieser Schlüssel wird eingerichtet, wenn das Objekt
b 510 erzeugt wird. Für den Fall von 5
enthält das Bezugsschema jedoch zwei Felder. Ein erstes Feld 510 enthält
eine feste Adresse, die von Objekt a 506 auf Objekt b 510 verweist.
Dieses Feld wird als a.foo.key bezeichnet. Ein zweites Feld 510 enthält
einen Soft-State-Bezug, der den letzten bekannten Knoten (z.B. Knoten y
508) identifiziert, der der Host für Objekt b 510 ist. Dieses
Feld wird als a.foo.host bezeichnet. Das zweite Feld 514 dient somit als
Routing-Abkürzung für einen Zugriff auf Objekt b 510.
Da die Knoten des Daten-Overlays über mehrere DHT-Knoten verteilt
sein können, kann der Daten-Overlay an sich als verteilte Datenstruktur betrachtet
werden. Obwohl die Datenstruktur verteilt ist, kann es gewünscht sein, sie
derart zu speichern, dass ihre Objekte geografisch nicht unnötig weit zerstreut
sind. Dies kann dadurch erreicht werden, dass die Schlüssel von a
506 und b 510 so erzeugt werden, dass sie dicht beieinander liegen.
Dadurch erhöht sich die Wahrscheinlichkeit, dass das P2P-DHT-System diese Schlüssel
mit demselben Knoten im P2P-System oder in eng aufeinander bezogene Knoten im P2P-DHT-System
zuordnet.
Der Daten-Overlay stellt zudem eine Sammlung von Primitiven bereit,
die verwendet werden, um Verweise und Objekte in seiner Datenstruktur zu verändern.
Insbesondere beinhalten diese Primitive eine Prozedur (setref) zum Einrichten eines
Bezuges von Objekt a zu einem weiteren Objekt b, eine Prozedur (dref) zum Zurückführen
eines Objekt, auf das durch Objekt a verwiesen wurde, und eine Prozedur zum Löschen
(delete) eines Objektes, auf das durch Objekt a verwiesen wurde.
Da der Daten-Overlay auf dem DHT-System aufgebaut ist, nutzen dessen
Primitive die Dienste der DHT. Beispielsweise können die Primitive einen DHT_insert-Dienst
zum Einfügen eines Objektes in den logischen DHT-Raum nutzen. Die Primitive
können einen DHT_lookup-Dienst verwenden, um eine vorbestimmte DHT-Routing-Prozedur
zu nutzen und so ein Objekt auf Basis seines Schlüssels im logischen DHT-Raum
zu finden (wie etwa die exponentiale Finger-Suchstruktur, die von CHORD verwendet
wird). Und die Primitive können zudem eine DHT_direct-Prozedur verwenden, um
direkt auf ein Objekt zuzugreifen, wenn der DHT-Knoten, der das Objekt speichert,
im voraus bekannt ist. Mit anderen Worten umgeht DHT_direct die normale DHT_lookup-Routing-Prozedur
und sucht direkt den Knoten, der der Host für das Objekt ist, dessen Schlüssel
gegeben ist. Sowohl DHT_lookup als auch DHT_insert führen als Nebeneffekt den
DHT-Knoten in der DHT zurück, die momentan der Host für das Zielobjekt
ist.
Der Daten-Overlay kann unter Verwendung seines zugrundeliegenden DHT-Dienstes
implementiert werden, indem abgeändert wird, welche Bibliotheksroutinen auch
immer verwendet werden, um Objekte zu erzeugen, so dass diese Routinen ebenfalls
die Verweise, die oben beschrieben wurden, als Attribute der Objekte
einrichten. Die Bibliotheksroutinen sollten zudem abgeändert werden, um sich
den oben beschriebenen Primitiven zum Einstellen eines Bezuges anzupassen, ein Objekt
zurückzuführen, auf das durch einen Bezug verwiesen wurde, und ein Objekt
zu löschen, auf das durch einen Bezug verwiesen wurde.
Es gibt eine Reihe von Vorteilen dafür, den Daten-Overlay auf
einer DHT aufzubauen. Beispielsweise ist die DHT darauf ausgelegt, sich selbst zu
organisieren, wenn DHT-Knoten dem logischen DHT-Raum hinzugefügt und aus diesem
gelöscht werden (was sich auf reale Maschinen bezieht, die zu einem P2P-System
hinzukommen oder dieses verlassen). Die DHT ist zudem derart beschaffen, dass sie
sich selbst in Erwiderung darauf "heilt" (wiederherstellt), dass DHT-Knoten dem
logischen DHT-Raum hinzugefügt und aus diesem gelöscht werden (wie etwa
durch Wiedereinrichtung von Verknüpfungen zwischen Knoten, Übertagen von
Objekten zwischen Knoten, etc.). Dadurch, dass er auf der DHT implementiert ist,
kann der Daten-Overlay zudem die Merkmale der Selbstorganisation und der Selbstwiederherstellung
annehmen. Insbesondere kann der Daten-Overlay so beschaffen sein, dass er im selben
Umfang selbstorganisierend und selbstwiederherstellend ist wie die zugrundeliegende
DHT.
Weiterhin können unterschiedliche Applikationen portiert werden,
um auf einer P2P-DHT zu laufen, wodurch diesen Applikationen die Illusion eines
unbegrenzten Speicherplatzes gegeben ist (wie etwa, dass der Eindruck eines einzigen
Ressourcen-Pools gegeben ist, der eine große Größe hat, die die Knoten
des logischen DHT-Raumes umfasst). Dieser Speicherplatz kann umfangreich Speicher-Heaps
von Maschinen enthalten, die am P2P-DHT-System beteiligt sind. Die Host-Routing-Abkürzung
(z.B. a.foo.host) bestimmt das Verhalten von Applikationen, die den Daten-Overlay
unabhängig vom zugrundeliegenden DHT-System nutzen.
In einer DHT wird von einem sehr großen logischen Raum (z.B.
160 Bits) ausgegangen. Knoten kommen zu diesem Raum mit zufälligen IDs hinzu
und teilen somit den Raum gleichmäßig. Die ID kann beispielsweise ein
MD5-Hash über einer IP-Adresse eines Knotens sein. Ein geordneter Satz von
Knoten gestattet es, dass eine für einen Knoten verantwortliche Zone strikt
definiert ist. Es seien p und q der Vorgänger bzw. der Nachfolger eines Knotens
x. Eine Definition einer Zone des Knotens ist einfach der Zwischenraum zwischen
der ID seiner unmittelbaren Vorgänger-ID (nicht inklusiv) und einer eigenen
ID. Mit anderen Worten: zone(x) ≡ (ID(p), ID(x)].
6 zeigt eine Art, eine DHT als logischen Raum zu betrachten,
wobei jeder Knoten eine logische Position im logischen Raum belegt und der logische
Raum unterteilt ist. Somit muss jeder Knoten einige wenige seiner angrenzenden Nachbarn
im Gedächtnis behalten, um den logischen Raum kohärent zu gestalten. Eine
neue Maschine nimmt eine beliebige ID und kommt zur DHT hinzu. Die neue Maschine
kontaktiert beliebige der Knoten, sucht nach einer Position und teilt anschließend
den logischen Raum für sich selbst, so dass sich der Baum, selbst organisiert
und selbst wiederherstellt. Der sich selbst wiederherstellende Aspekt kommt zum
Tragen, wenn eine Maschine ausscheidet, da ihr Ausscheiden von ihren angrenzenden
Nachbarmaschinen beobachtet wird, wobei dieses Ausscheiden erfasst wird, wenn die
ausscheidende Maschine nicht länger einen "Heartbeat" sendet, um ihre Gegenwart
zu kennzeichnen. Anschleißend kann eine benachbarte Maschine aufgenommen werden.
6 zeigt zudem im wesentlichen, wie konsistent der Hashvorgang
Zonen den DHT-Knoten zuweist, wobei ein Ring, eine Zone und eine Basis-Routingtabelle
verwendet werden. Um den Ring gegen die dynamische Kraft des Systems unempfindlich
zu machen, zeichnet jeder Knoten r Nachbarn auf jeder Seite in der rudimentären
Routing-Tabelle auf, die allgemein als Blattsatz bekannt ist. Nachbarn kommunizieren
periodisch miteinander, um ihre Gegenwart zu kennzeichnen (z.B. "Heartbeats") wie
auch ihre Routing-Tabellen zu aktualisieren, wenn ein Knoten hinzukommt/ausscheidet
oder wenn Ereignisse auftreten. Dieser Basisring, gezeigt in 6,
ist eine einfache P2P-DHT. Wenn man sich vorstellt, dass die Zone ein Hash-Bucket
in einer herkömmlichen Hash-Tabelle ist, dann ist der Ring eine DHT. Mit einem
gegebenen Schlüssel im Raum kann man immer herausfinden, welcher Knoten verantwortlich
ist. Die Suchleistung ist O(N) bei diesem einfachen Ringaufbau, wobei N die Zahl
der Knoten im System ist.
Ein Algorithmus, der auf dem oben beschriebenen Konzept aufgebaut
ist, erzielt ein O(logN)-Verhalten entweder mit O(logN)-Zuständen oder sogar
konstanten Zuständen (d.h. die Routing-Tabelleneinträge). Repräsentative
Systeme beinhalten das CAN-Unterteilungsschema, das CHORD-Unterteilungsschema und
dergleichen. Das gesamte System einer DHT ist selbstorganisierend mit einem Overhead
in einer Größenordnung von O(logN). Zudem ist die DHT die Virtualisierung
eines Raumes, bei dem sowohl Ressourcen als auch andere Einheiten (wie etwa Dokumente,
die in der DHT gespeichert sind) nebeneinander existieren.
B. DIE SOMO-BAUMSTRUKTUR: EIN BEISPIEL DES DATEN-OVERLAYS
Der oben beschriebene Daten-Overlay stellt ein Gerüst zum Aufbauen
einer willkürlichen Datenstruktur auf einer DHT bereit. Die Datenstruktur enthält
eine Vielzahl von Objekten, die Knoten in der Datenstruktur bilden. Diese Datenstruktur
kann eine beliebige Art einer Topologie durch Verknüpfen der Knoten miteinander
auf unterschiedliche Weise annehmen. Zudem kann die Datenstruktur unterschiedliche
Funktionen in Abhängigkeit der Operationen einsetzen, die ihren einzelnen Knoten
zugeordnet sind. Der folgende Abschnitt beschreibt ein Beispiel des Daten-Overlays,
der als selbstorganisierender Metadaten-Overlay oder kurz "SOMO" bezeichnet wird.
Die SOMO-Datenstruktur ist derart aufgebaut, dass sie die Topologie
einer Baumstruktur annimmt. Die SOMO-Baumstruktur hat einen Wurzel-Knoten. Der Wurzel-Knoten
kann einen oder mehrere Nachfolger haben, die ihrerseits ihre eigenen jeweiligen
Nachfolger haben. Die Endknoten der SOMO-Baumstruktur werden als Blattknoten bezeichnet.
Die Blattknoten sind entsprechenden DHT-Knoten im logischen DHT-Raum des P2P-Systems
zugeordnet.
Wie es später im folgenden detaillierter beschrieben wird, besteht
eine Funktion der SOMO-Baumstruktur darin, Metadaten aus den DHT-Knoten zu extrahieren
(was letztendlich das Extrahieren von Daten aus den Maschinen beinhaltet, die das
P2P-System implementieren) und diese Metadaten nach oben durch den SOMO-Baum zum
Wurzel-Knoten der SOMO-Baumstruktur weiterzuleiten. Eine Applikation kann anschließend
diese Metadaten lesen und eine bestimmte Aktion auf der Basis dieser Metadaten ausführen.
(Metadaten bezeichnen im allgemeinen eine beliebige Art von Informationen, die den
Operationen zugeordnet sind, die vom P2P-System ausgeführt werden, wie etwa
Informationen die das Verhalten von Maschinen betreffen, die das P2P-System beinhalten).
Die SOMO-Baumstruktur kann zudem dazu verwendet werden, Informationen vom Wurzel-Knoten
der SOMO-Baumstruktur abwärts zu den DHT-Knoten und zugehörigen Maschinen
innerhalb des P2P-Systems zu verteilen. Somit kann die SOMO-Baumstruktur, allgemein
gesagt, die Rolle der Datenerfassung (z.B. Anhäufung) und der Datenrundsendung
übernehmen.
7 zeigt eine beispielhafte SOMO-Baumstruktur
702, die auf einem zugrundeliegenden logischen DHT-Raum 704 aufgebaut
ist. Der logische DHT-Raum 704 ist in eine Zahl von Zonen unterteilt, wie
etwa die beispielhafte Zone 706 und die beispielhafte Zone 708.
Jede Zone enthält einen ihr zugeordneten DHT-Knoten, wie etwa den beispielhaften
DHT-Knoten 710. Die DHT kann den logischen DHT-Raum 704 in Zonen
gemäß einer beliebigen Technik unterteilen, wie etwa den Techniken, die
durch das CAN-Unterteilungsschema, das CHORD-Unterteilungsschema, das PASTRY-Unterteilungsschema
oder eine beliebige andere Art eines DHT-Unterteilungsschemas bereitgestellt sind.
Bei Verwendung des CHORD-Unterteilungsschemas kann der logische DHT-Raum
704 beispielsweise als ein Ring definiert werden, der über Knoten
verfügt, die an unterschiedlichen Orten um diesen herum verteilt sind, wobei
die Zonen den Spannen entsprechen können, die benachbarte, angrenzende DHT-Knoten
auf dem Ring trennen.
Die SOMO-Baumstruktur 702 enthält einen oder mehrere
Knoten, die hier als "SOMO-Knoten" bezeichnet werden, um sie von DHT-Knoten zu unterscheiden.
Jeder SOMO-Knoten ist durch das Symbol s repräsentiert. Die beispielhafte SOMO-Baumstruktur
702, die in 7 gezeigt ist, enthält SOMO-Knoten
s 712–726. Die Knoten s 712–726
bilden eine umgekehrte Baumstruktur. Das heißt ein Wurzel-Knoten
712 verzweigt in einen Nachkommens-Knoten 714 und einen Nachkommens-Knoten
716. Diese Nachkommens-Knoten haben ihre eigenen jeweiligen Nachkommens-Knoten;
beispielsweise enthält der Nachkommens-Knoten 714 den Nachkommens-Knoten
718 und den Nachkommens-Knoten 720. Wenngleich die gesamte Struktur
der beispielhaften SOMO-Baumstruktur 702 in 7
verkürzt ist, um die Darstellung und Erläuterung zu vereinfachen, endet
die SOMO-Baumstruktur 702 schließlich in Blattknoten (z.B. den Blattknoten
722, 724, 726), die in entsprechende DHT-Knoten im logischen
DHT-Raum 704 gepflanzt sind. Im allgemeinen sind die Verknüpfungen
zwischen den SOMO-Knoten in der SOMO-Baumstruktur 702 in 7
mit Punktlinien dargestellt, die die SOMO-Knoten miteinander verbinden; diese Verknüpfungen
können unter Verwendung eines Bezugsschemas eingesetzt werden, das im Abschnitt
"Daten-Overlay" oben beschrieben ist.
Jeder SOMO-Knoten s hat eine ihm zugeordnete Zone. Beispielsweise
enthält der Wurzel-SOMO-Knoten 712 eine Zone 728, die den
gesamten logischen DHT-Raum 704 überspannt. Der Nachkommens-Knoten
716 enthält eine Zone 730, die die Hälfte der Zone
728 des Wurzel-Knotens 712 überspannt. Ein weiterer Nachkommens-Knoten
720, der in der SOMO-Baumstruktur 702 tiefer angeordnet ist, hat
eine Zone 732, die ein Viertel der Zone 728 des Wurzel-Knotens
712 ist. Demzufolge führen nachfolgende Knoten s, die zur Hierarchie
der SOMO-Baumstruktur 702 hinzugefügt werden, zu einer allmählich
feineren Unterteilung der Zone 728 des Wurzel-Knotens 712. Zudem
wächst die Hierarchie der SOMO-Baumstruktur 702 "höher" für jene
Bereiche des logischen DHT-Raumes 704, die eine feinere (das heißt,
dichtere) Unterteilung des Raumes 704 aufweisen. Im allgemeinen repräsentiert
7 die Zonen, die einzelnen SOMO-Knoten zugeordnet sind,
durch horizontale Pfeile, die die Länge der jeweiligen Zonen der SOMO-Knoten
überspannen. Ein DHT-Knoten, der der Host eines speziellen SOMO-Knotens s ist,
ist als DHT_host(s) ausgedrückt.
Wie es oben erläutert wurde, sollte eine DHT zur Vervollständigung
eines P2P-Ressourcen-Pools um eine systemeigene Überwachungs-Infrastruktur
erweitert werden, da es bei einem großen System nicht praktikabel ist, sich
auf einen externen Überwachungsdienst zu verlassen. Eine derartige Infrastruktur
muss ein paar Schlüsseleigenschaften erfüllen: (1) sie muss im selben
Umfang selbstorganisierend sein wie die Host-DHT; (2) sie muss vollständig
verteilt und selbstwiederherstellend sein; und muss (3) im Bezug auf die Metadaten
die erfasst und verteilt werden, so präzise wie möglich sein. Der SOMO,
der hier vorgeschlagen ist, ist von unten nach oben aufgebaut, wie es im folgenden
beschrieben wird.
Die Überwachungsinfrastruktur kann eine Reihe von Topologien
annehmen. Was den Ressourcen-Pool angeht, ist eine der wichtigsten Funktionalitäten
die Anhäufung. Somit ist der SOMO ein Baum des Ordnung k, dessen Blätter
in jedem DHT-Knoten gepflanzt sind. Informationen werden von unten erfasst und breiten
sich zur Wurzel aus. Somit kann man den SOMO so bezeichnen, dass er eine "zusammenlaufende
Sendung" von den Blättern zur Wurzel und anschließend (wahlweise) eine
Rundsendung wieder zurück abwärts zu den Blättern ausführt.
Sowohl die Erfassungs- als auch die Verteilungsphase sind O(logkN)-gebunden,
wobei N die Gesamtzahl von Objekten ist. Jede Operation im SOMO beinhaltet nicht
mehr als k – 1 Interaktionen, wodurch er vollständig verteilt ist. Durch
Verwendung des Prinzips des Soft-State können Daten in O(logkN)-Zeit
wiedergewonnen werden. Der SOMO-Baum organisiert und stellt sich selbst innerhalb
dieser Zeitgrenze wieder her. In gewisser Weise kann der SOMO als reagierender "Nachrichtensender"
bezeichnet werden, dessen Aufbau und Verarbeitung von sämtlichen Knoten gemeinsam
genutzt wird. Es ist die zeitgerechte, globale "Nachricht", die die Illusion des
Ressourcen-Pools erzeugt.
B.1 Aufbauen des SOMO
Die Grundidee des SOMO besteht darin, dass, anstelle mit jeder einer
Vielzahl von einzelnen Maschinen zu arbeiten und diese zu einer Hierarchie zu konfigurieren,
zunächst ein Baum in einem logischen Raum "gezeichnet" wird und anschließend
eine Abbildung vom logischen Baum zu tatsächlichen Maschinen ausgeführt
wird.
Wie es oben erläutert wurde, kann der Daten-Overlay als eine
Funktion dynamischer und unbeaufsichtigter Abänderungen, die in der zugrundeliegenden
DHT vorgenommen werden, wachsen und schrumpfen. Da die SOMO-Baumstruktur
702 ein Beispiel eines Daten-Overlay ist, bedeutet dies, dass die SOMO-Baumstruktur
702 ebenfalls die Fähigkeit hat, in Erwiderung auf Abänderungen
zu wachsen und zu schrumpfen, die an der zugrundeliegenden DHT vorgenommen werden.
Zudem hat die SOMO-Baumstruktur wie ihre zugrundeliegende DHT die Fähigkeit,
sich selbst wiederherzustellen und Abänderungen in der zugrundeliegenden DHT
entgegenzuwirken. Der folgende Teilabschnitt erläutert die Art und Weise, in
der die sich SOMO-Baumstruktur 702 in Erwiderung auf Änderungen in
ihrer zugrundeliegenden DHT entwickelt.
B.2 Aufbauen des logischen Baumes
Der logische Baum verhält sich wie ein Bezugsgerüst, das
sämtlichen Maschinen im P2P-Pool hilft, sich zu einer Hierarchie in einer vollständig
verteilten und automatischen Art und Weise zu organisieren. Er besteht aus einem
Satz virtueller Knoten, von denen jeder über einen Schlüssel verfügt,
wie es in 8a gezeigt ist, der zudem seine Position
im eindimensionalen logischen DHT-Raum bestimmt.
Die erste Invariante beim Aufbauen des Baumes besteht darin, dass
jeder virtuelle Knoten einen Abschnitt des Raumes besitzt und der Schlüssel
des virtuellen Knotens das Zentrum des Teilraumes ist, den er besitzt. Angenommen,
der logische Raum ist [0, 1], dann ist der Schlüssel des virtuellen Wurzel-Knotens
0,5. Anschließend wird der Raum des virtuellen Wurzel-Knotens (der gesamte
logische Raum an diesem Punkt) gleichmäßig in k Teilräume unterteilt
und jeder Teilraum durch einen virtuellen Knoten auf Ebene-1 abgedeckt. Durch umgekehrtes
Anwenden dieses Teilungsvorgangs wird ein logischer Baum aufgebaut. Somit enthält
Ebene-i insgesamt ki virtuelle Knoten, wobei jeder virtuelle Knoten einen
Teilraum der Größe 1/ki besitzt. Insbesondere besitzt der j-te
(0 <= J < 2i) virtuelle Knoten auf Ebene-i einen Raum von [j/ki,
(j + 1)/ki) und ist bei (2j + 1)/2ki positioniert/verschlüsselt,
wobei 'k' die Ordnung und 'i' die Ebene ist. Dementsprechend ist eine beispielhafte
Prozedur zum Aufbauen einer SOMO-Baumstruktur von unten nach oben in 8a–8c
gezeigt.
B.3 Abbilden auf einen physikalischen Baum
Der physikalische Baum wird aufgebaut, wenn jede Maschine in der P2P-Umgebung
ihre Elternmaschine gefunden hat. Dies kann in einer vollständig verteilten
Art und Weise dadurch erreicht werden, dass der oben aufgebaute logische Baum zur
Wirkung kommt. Da sämtliche Maschinen die gesamte Kenntnis des logischen Baumes
haben, wählt jede Maschine unter Verwendung eines Ebenengrößen-Baumtraversal-Algorithmus'
den höchsten virtuellen Knoten, der in ihre Zone fällt. Dieser virtuelle
Knoten repräsentiert diese Maschine im fertigen physikalischen Baum und kann
als solches der repräsentative Knoten oder repre(x) für Maschine x bezeichnet
werden. Das deterministische Wesen des logischen Baums bedeutet, dass x den Schlüssel
des virtuellen Eltern-Knotens von repre(x) berechnen kann. Mit Hilfe einer DHT-Lookup
findet x die Maschine y, die der Host für diesen Schlüssel ist, und richtet
eine Verbindung zu y ein, wie es in 8b gezeigt ist.
Jede Maschine führt dieselbe Prozedur mit rein lokalem Wissen aus (die Zone
und die deterministische logische Baumtopologie). Sämtliche Nachkommens-Eltern-Verbindungen
werden durch ein Paar logischer Schlüssel identifiziert: den repräsentativen
virtuellen Knoten, der auf die Nachkommens-Maschine fällt und den entsprechenden
virtuellen Eltern-Knoten, der auf die Eltern-Maschine fällt. Die Verbindung
wird mit Hilfe von Heartbeats aufrechterhalten, wobei die oben beschriebene Invariante
immer gleich bleibt. Wenn sich beispielsweise die Zone von x teilt, weil ein neuer
Nachbar hinzukommt, unterbricht x sämtliche Verbindungen, deren Punkte am Elternende
nicht länger zu seiner Zone gehören. Zu diesem Zeitpunkt richten Maschinen
am anderen Ende der Verbindungen ihre Eltern-Maschinen neu ein, indem sie eine Prozedur
ausführen, wie sie zuvor beschrieben wurde, wodurch sich die Topologie selbst
wiederherstellt – ein Beispiel hierfür ist die Prozedur, die in
9a–9c gezeigt ist.
Die vorangehende Prozedur kann als das Abbilden von Maschinen auf
den logischen Raum der DHT verstanden werden. Jede Maschine entspricht einer oder
mehreren Baumknotenzonen. Jede Maschine wählt als ihren repräsentativen
Knoten aus einer oder mehreren der Baumknotenzonen, die ihr entsprechen, den Baumknoten
entsprechend der größten Baumknotenzone. Jeder repräsentative Knoten
wählt als seinen Eltern-Knoten einen weiteren repräsentativen Knoten,
der der repräsentative Knoten für eine benachbarte Baumknotenzone ist,
die eine größere Größe hat. Eine beispielhafte Prozedur für
die Auswahl der repräsentativen Knoten und der Elternknoten, einschließlich
dem Wurzel-Knoten, ist in 8a–8c
zu sehen. Wie es in 7 gezeigt ist, nimmt die Größe
der Baumknotenzone mit der zunehmenden Ebene des Baumes ab, wobei die erste Ebene
die des Wurzel-Knotens ist, der eine Baumknotenzone entsprechend der gesamten Spanne
des logischen Raumes der DHT hat.
Die vorangegangene Prozedur organisiert die physikalischen Maschinen
zu einem Baum in einer vollständig verteilten Art und Weise. Weiterhin ist
der Baum mit hoher Wahrscheinlichkeit von Ordnung k und ausgeglichen. Die Definition
des repräsentativen virtuellen Knotens besteht darin, dass es der höchste
virtuelle Knoten ist, der in die Zone einer Maschine fällt. Jede Maschine ist
angeschlossen, da sich der virtuelle Eltern-Knoten auf einer anderen Maschine befindet.
Der resultierende Graph hat keine Schleife, da dies die Definition des repräsentativen
virtuellen Knotens verletzen würde. Somit muss es ein Baum sein. Die logische
Baumstruktur ist deterministisch, und die einzige zusätzliche Eingabe, die
eine Maschine benötigt, ist ihre eigene Zone im DHT-Raum. Somit ist das Aufbauen
des Baumes vollständig verteilt. Der logische Baum ist ausgeglichen und von
der Ordnung k. Ob der physikalische Baum ebenfalls von Ordnung k und ausgeglichen
ist, wird hauptsächlich durch die Zonenverteilung bestimmt. Da die ID einer
Maschine im DHT zufallsartig erzeugt wird, ist der resultierende Baum mit hoher
Wahrscheinlichkeit von Ordnung k und ausgeglichen.
Der SOMO kann mit Änderungen der Mitgliedschaft automatisch und
mit minimalem Overhead umgehen, da über jede Verbindung durch zwei logische
Punkte entschieden wird: der erste Punkt davon ist der repräsentative virtuelle
Knoten und ist durch seine DHT-Zone bestimmt, und der zweite Punkt davon ist ebenfalls
deterministisch, sofern der erste gegeben ist. Somit kann, solange diese Invariante
beibehalten wird, die Topologie neu eingerichtet werden, wenn immer es Veränderungen
der Mitgliedschaft gibt. Infolgedessen wächst der SOMO-Baum, wenn neue Mitglieder
zum Pool hinzukommen, und schrumpft, wenn sich Peers entfernen, wie es in
9a–9c gezeigt ist.
Demzufolge ist eine beispielhafte Prozedur zum Wiederherstellen der von unten nach
oben aufgebauten SOMO-Baumstruktur in 9a–9c
zu sehen.
Ist es gewünscht, eine Maschine, die über die meisten Fähigkeiten
verfügt, oben auf dem logischen Baum zu plazieren, kann die Knoten-ID zu einer
anderen als der zufallsartig erzeugten geändert werden. Ein aufwärtsgerichteter
Merge-Sort wird dann vom SOMO ausgeführt, um den am besten befähigten
Knoten zu finden. Dieser Knoten tauscht anschließend seine ID mit dem Knoten
aus, der momentan den logischen Wurzelpunkt des SOMO besitzt (d.h. 0,5 des gesamten
Raumes [0, 1], wobei dies wirkungsvoll die Maschine ändert, die als Wurzel
arbeitet, ohne dass andere Peers zerstört werden. Diese selbstoptimierende
Eigenschaft wird dadurch möglich gemacht, das zunächst
im logischen Raum operiert wird.
C. ANHÄUFUNG UND VERTEILUNG VON METADATEN
Der SOMO als Infrastruktur bestimmt weder, welche Daten erfasst werden
sollen, noch die Operation, die aufgerufen wird, um die erfassten Daten zu verarbeiten.
Um einen Ressourcen-Pool aufzubauen, sammelt jede Maschine einfach ihre Ressourcen-Metrik,
kombiniert ihre Ressourcen-Metrik mit dem, was von ihren Nachkommens-Knoten empfangen
wird, und verschmilzt diese mit ihrem Elternknoten. Die Daten, die weitergeleitet
werden, sollten Soft-State sein. Zudem können Berichte als Optimierung die
Gestalt von 'Delta' aufeinander folgender Berichte haben.
Das Verhalten des SOMO ist durch die Höhe des physikalischen
Baums bestimmt, die ihrerseits durch die Parameter (d.h. k) des logischen Baums
und die Verteilung von DHT-Knoten im logischen Raum festgelegt ist. Da die Knoten-ID
zufällig ist, ist die Höhe des physikalischen Baums O(logkN).
Daher werden bei einem Datenberichtsintervall T Informationen von den SOMO-Blättern
erfasst, wobei diese zu ihrer Wurzel mit einer maximalen Verzögerung von logkN·T
fließen. Diese Begrenzung wird abgeleitet, wenn der Fluss zwischen Hierarchien
des SOMO vollständig unsynchronisiert ist. Wenn der Aufruf der oberen Knoten
des SOMO nach Berichten unverzüglich die ähnlichen Aktionen ihrer Nachkommen
auslösen, kann die Latenz auf T + thop·logkN verringert
werden, wobei thop eine durchschnittliche Latenz einer Auslösung
im DHT ist, der als Host dient. Dieser unsynchronisierte Fluss hat eine Latenzgrenze
von logkN·T, wohingegen die synchronisierte Version in der Praxis
mit T (z.B. 5 Minuten) begrenzt sein wird. Es wird darauf hingewiesen, dass O(thop·logkN)
die absolute Untergrenze ist. Für M2-Knoten mit k = 8 und einer typischen Latenz
von 200 ms pro DHT-Sprung hat die SOMO-Wurzel eine globale Übersicht mit einer
Verzögerung von 1,6 s.
C.1 Anwenden der SOMO-Baumstruktur
Wie es oben beschrieben wurde, besteht eine beispielhafte Verwendung
der SOMO-Baumstruktur 702 darin, Informationen von den physikalischen Maschinen
im P2P-System zu erfassen, die durch den logischen DHT-Raum 704 repräsentiert
sind. Eine weitere beispielhafte Verwendung der SOMO-Baumstruktur 702 besteht
darin, Informationen auf diese physikalischen Maschinen zu verteilen. Die gesammelten
Informationen können Metadaten sein. Metadaten beschreiben Informationen, die
den Betrieb des P2P-Systems betreffen, wie etwa Informationen, die das Verhalten
der physikalischen Maschinen widerspiegeln. Die Informationen, die auf die physikalischen
Maschinen verteilt werden, können Anweisungen repräsentieren, die den
Betrieb der physikalischen Maschinen steuern können. Somit kann man den SOMO-Mechanismus
so interpretieren, dass er eine konvergierende Sendung von den SOMO-Blattknoten
zum SOMO-Wurzelknoten ausführt, um die Datenerfassung zu ermöglichen,
und anschließend einen Multicast zurück nach unten zu den SOMO-Blattknoten
ausführt, um die Datenverteilung zu ermöglichen.
10a zeigt, dass die Kombination der DHT-Fähigkeit,
einen Pool für Ressourcen zu bilden, mit einem SOMO zusammen zu einem P2P-Ressourcen-Pool
führt, der aus einer DHT und einem SOMO besteht. Als Rekapitulation wird die
DHT nicht im Sinne der gemeinsamen Nutzung von Inhalten verwendet, sondern vielmehr
als effiziente Möglichkeit, mit geringem oder ohne Verwaltungsaufwand und ohne
Skalierbarkeits-Engpass eine große Menge von Ressourcen zu einem Pool zusammenzustellen.
Der SOMO ist eine selbstorganisierende "Nachrichten-Rundsende"-Hierarchie, die über
eine DHT geschichtet ist. Das Anhäufen des Ressourcenstatus' in O(logN)-Zeit
erzeugt dann die Illusion eines einzigen Ressourcen-Pools. Die Prozedur, die in
10a zu sehen ist, zeigt die paarweise Registrierung
der Ressourcen, das Erfassen von Statistiken, eine Ansammlung der erfassten Statistiken
zu einem Schnappschuss und das anschließend Sicherstellen, das die resultierende
dynamische Datenbank von Applikationen abgefragt werden kann. Der Maßstab und
die Zusammensetzung der P2P-Ressourcen erfordern es, dass jede Ebene vollständig
selbstorganisierend, selbstskalierend, und selbstwiederherstellend ist, so dass
es einen geringen Verwaltungsaufwand gibt.
10b zeigt beispielsweise ein Szenario 1002,
bei dem eine SOMO-Baumstruktur 1004 verwendet wird, um Informationen von
physikalischen Maschinen 1006 im P2P-System über den logischen DHT-Raum
1008 zu sammeln. Insbesondere rufen die SOMO-Blattknoten die erforderlichen
Informationen von ihren DHT-Knoten ab, die als Host dienen. (Als Nebeneffekt kann
diese Prozedur auch einen SOMO-Nachkommens-Knoten neustarten, für den Fall,
dass dieser verschwunden ist, da der DHT-Knoten der als Host dient, abgestürzt
ist). Eine oder mehrere Applikationen 1010 können diesen Erfassungsvorgang
für einen beliebigen definierten Zweck aufrufen (wie etwa zum Zweck der Leistungsüberwachung,
d.h. Sammeln unterschiedlicher Informationen, die unterschiedliche Belastungen und
Kapazitäten der physikalischen Infrastruktur betreffen, die das P2P-System
enthält).
Insbesondere zeigt 10b die Konfiguration
der SOMO-Baumstruktur 1004, um Informationen zu sammeln, indem Linien dargestellt
sind, die Pfeile aufweisen, die nach oben von jedem SOMO-Knoten zu seinem entsprechenden
SOMO-Elternknoten zeigen. Auf diese Weise verlaufen die Informationen trichterförmig
nach oben in der SOMO-Baumstruktur 1004 von deren SOMO-Blattknoten zu deren
SOMO-Wurzelknoten. Die Applikation(en) 1010 kann (können) einen vollständigen
Bericht aus dem SOMO-Wurzelknoten extrahieren, der Informationen aus dem gesamten
P2P-System entnimmt. Alternativ kann dieser Bericht verschmolzene und sortierte
Daten enthalten, vorausgesetzt, dass die SOMO-Knoten so konfiguriert wurden, dass
sie diese Funktion ausführen, bevor sie die Informationen, die sie sammeln,
zu ihren entsprechenden SOMO-Elternknoten weiterleiten. Die SOMO-Knoten können
dazu eingerichtet sein, diese Aufgabe auszuführen, indem ein 'op'-Element so
konfiguriert wird, das es Verschmelzen und Sortieren ausführt. Beispielsweise
kann das Element op eine Operation definieren, die der betreffende SOMO-Knoten an
Informationen ausführen kann, die er weiterleitet (entweder in einem Datenerfassungs-
oder Datenverteilungsmodus). Beispielsweise kann unter Bezugnahme auf
7 das op festlegen, dass eine Verschmelzungsoperation
im Verlauf des Sammelns von Informationen mit Hilfe der SOMO-Baumstruktur
702 ausgeführt werden soll. Durch Einschließend des op-Elementes
kann die SOMO-Baumstruktur 702 eine beliebige Funktionalität in verteilter
oder paralleler Art und Weise ausführen. Somit kann die SOMO-Baumstruktur
702 auch als Mechanismus betrachtet werden, der ein verteiltes, paralleles
Verarbeitungsgerüst bereitstellt, um eine beliebige Art von Funktionalität
zu implementieren. Dies ist lediglich ein veranschaulichendes Beispiel. Die SOMO-Knoten
können andere Operationen an den Informationen ausführen, während
diese die SOMO-Knoten auf ihrem Weg zum SOMO-Wurzelknoten durchlaufen, wie etwa
unterschiedliche arithmetische Operationen.
Der folgende Pseudo-Code stellt eine Technik zum Erfassen von Informationen
unter Verwendung der SOMO-Baumstruktur 1004 bereit: Pseudo-Code: SOMO-Erfassungsprozedur:
Um System-Metadaten zu erfassen, können die SOMO-Knoten periodisch
die oben beschriebene Prozedur ausführen, indem sie Berichte von ihren jeweiligen
Nachkommen anfordern. Die Erfassungsprozedur kann abgestimmt werden, um bestimmte
Informationen aus der SOMO-Baumstruktur 1004 zu extrahieren. Insbesondere
erleichtert die hierarchische Beschaffenheit der SOMO-Baumstruktur 1004
die Verwendung von Abfragen komplexer Bereiche, um Informationen zu entdecken, die
für einen gegebenen logischen DHT-Raumbereich relevant sind. Ist k beispielsweise
2 und ist es gewünscht, einen Zustandsbericht über das erste Viertel des
logischen DHT-Raums abzurufen, muss eine Applikation 1010 lediglich einen
Bericht vom linken SOMO-Nachkommens-Knoten 1012 der SOMO-Baumstruktur
1004 der zweiten Ebene beziehen. Eine weitere nützliche Implementierung
beinhaltet Registrierungsabfragen an SOMO-Knoten, die den SOMO-Mechanismus im wesentlichen
in eine Veröffentlichungs-Teilnahme-("pub-sub"-)Infrastruktur umwandelt.
10b zeigt zudem das Szenario 1002, bei dem
die SOMO-Baumstruktur 1004 verwendet wird, um Informationen auf die physikalischen
Maschinen 1006 im P2P-System über den logischen DHT-Raum
1008 zu verteilen. Eine oder mehrere Applikationen 1010 kann/können
diese Verteilungsoperation für einen beliebigen definierten Zweck aufrufen
(wie etwa für die Verteilung von Anweisungen auf die physikalischen Maschinen
1006). Die Konfiguration der SOMO-Baumstruktur 1004 für die
Verteilung von Informationen ist in 10b gezeigt, indem
Linien dargestellt sind, die über Pfeile verfügen, die nach unten von
den SOMO-Elternknoten zur ihren jeweiligen SOMO-Nachkommens-Knoten zeigen. Auf diese
Weise breiten sich Informationen die SOMO-Baumstruktur 1004 nach unten
von ihrem SOMO-Wurzelknoten zu ihren SOMO-Blattknoten aus. Die Informationen können
sich durch die Verzweigungen der SOMO-Baumstruktur 1004 ohne Abänderung
durch die SOMO-Knoten ausbreiten. Alternativ können die SOMO-Knoten mit Hilfe
ihres op-Elementes eine beliebige Art von Operation an den Informationen ausführen,
bevor diese zu ihren zugehörigen SOMO-Nachkommens-Knoten weitergeleitet werden.
Wie es für den Fall der Datenerfassung beschrieben ist, ist es ebenfalls möglich,
Informationen lediglich auf Teile des logischen DHT-Raumes 1008 zu verteilen,
indem lediglich gewählte Verzweigungen des SOMO-Baumstruktur 1004
herangezogen werden.
D. MULTICASTING AUF APPLIKATIONSEBENE (ALM)
Es können zusätzliche Applikationen und Abänderungen
des Daten-Overlays und der SOMO-Baumstruktur implementiert werden. Bei einer beispielhaften
Implementierung kann der SOMO-Mechanismus mit Multicasting auf Applikationsebene
(ALM) verwendet werden, indem Algorithmen bereitgestellt werden, die auf die Metadaten
wirken, die aus der SOMO-Baumstruktur erfasst werden, oder die die Informationen
erzeugen, die sich durch die SOMO-Baumstruktur nach unten ausbreiten. ALM-Techniken
können implementiert werden, indem eine geeignete Funktionalität in der
Applikation (den Applikationen) 1010 bereitgestellt wird, die in
10b gezeigt ist/sind. 11a–11b
zeigen schematische Anordnungen für das ALM.
Die Verfügbarkeit eines P2P-Ressourcen-Protokolls bietet Optimierungsmöglichkeiten.
Wie es in 11a–11b
gezeigt ist, kann eine Optimierung vorgenommen werden, wenn ein anderweitiger, sich
im Leerlauf befindender, jedoch geeigneter Peer identifiziert ist. Sobald der geeignete
Peer identifiziert ist, kann er in eine Topologie mit einer besseren Leitungsfähigkeit
integriert werden. Somit zeigt 11b eine Verbesserung
an der Anordnung, die in 11a gezeigt ist. Die Verbesserung
wird durch Verwendung eines Helfer-Knotens in einem Ressourcen-Pool vorgenommen.
In 11a–11b kennzeichnen
Kreise ursprüngliche Elemente einer Multicast-Session auf Applikationsebene
und kennzeichnet ein Quadrat einen verfügbaren Peer der eine hohe Ordnung hat.
Die Optimierung kann marktbedarfsorientiert sein, so dass die ressourcenhungrigsten
Aufgaben von den Maschinen in einem Peer-To-Peer-System ausgeführt werden,
die über die meisten Ressourcen verfügen.
D.1 Erzeugen einer Ressourcen-Metrik für ALM
Bei zahlreichen P2P-Applikationen beinhaltet die Ressourcen-Statistik
nicht nur die CPU-Auslastungen und die Netzwerkaktivitäten, sondern auch eine
komplexere Ressourcen-Statistik, die nicht lokal von der Maschine abgeleitet werden
kann. Ein betreffender Fall ist ALM. Angenommen, es ist gewünscht, die Zeitplanung
einer Session auszuführen, und eine lange Liste von potentiellen Helfer-Peers
wurde durch Abfragen des SOMO zusammengestellt, dann muss ein Peer gewählt
werden, der sich in der Nähe befindet und die geeignete Bandbreite hat. Sind
lediglich die IP-Adressen des Peers gegeben, ist das Senden eine Pings über
diese, um deren Nachbarschaft zu finden, sowohl zeitaufwendig als auch fehlerbehaftet.
Die folgende Beschreibung konzentriert sich auf die Metrik der IP-Adresse und der
Bandbreite als Minderung dieses Problems. Es wird erläutert, wie diese Attribute
erzeugt werden können, indem die Interaktionen zwischen den DHT-Knoten zum
tragen kommen, die die Integrität des logischen Raumes beibehalten.
D.2 Schätzung der Knotenkoordinaten
Um eine koordinatenbasierte Latenzschätzung, Latenz(x, y), zu
finden, ist es ausreichend, Distanz (coord(x), coord(y)) zu berechnen, wobei coord
eine Netzwerkkoordinate in einem d-dimensionalen euklidischen Raum ist. Jeder Knoten
muss seine Heartbeats mit seinen Blattsatz-Knoten bereitstellen, um den DHT-Raum
kollektiv beizubehalten. Wenn jeder Knoten zufallsartig wählt, die Heartbeat-Nachricht
von Knoten in seinem Blattsatz zu bestätigen, so wird er im Laufe der Zeit
einen gemessenen Verzögerungsvektor dm zu seinen Blattsatz-Nachbarn
haben. In der Heartbeat-Nachricht teilt jeder Knoten zudem seine momentanen Koordinaten
mit. Somit ist zudem ein vorhergesagter Verzögerungsvektor dp lokal
verfügbar. Der Knoten x aktualisiert seine eigenen Koordinaten durch Ausführen
eines Downhill-Simplex-Algorithmus' und Minimieren der Funktion:
Die Optimierung erfolgt lokal und aktualisiert lediglich die eigenen
Koordinaten von x, die auf die Blattsatz-Nachbarn von x bei anschließenden
Heartbeats verteilt werden. Diese Prozedur wird von allen Knoten periodisch ausgeführt,
wobei die Knotenkoordinaten sowie die gemessenen und vorhergesagten Verzögerungsvektoren
fortwährend aktualisiert werden.
D.3 Schätzung der Engpassbandbreite
Die Netzwerkbandbreite eines Peers ist dahingehend eine weitere wichtige
Metrik für zahlreiche Applikationen, die auf einem P2P-Ressourcen-Pool laufen,
dass es eine Korrelation zwischen der Engpassbandbreite und dem Durchsatz gibt.
Daher kann die Engpassbandbreite als Prädiktor für den Durchsatz dienen.
Es kann davon ausgegangen werden, dass ein Engpass im letzten Sprung liegt. Für
jeden Knoten wird dessen Upstream-Engpassbandbreite als Maximum der gemessenen Engpassbandbreiten
von dem Knoten zu seinen Blattsatz-Elementen geschätzt, die
sowohl durch die Uplink-Bandbreite des Knotens und die Downklink-Bandbreiten der
Blattsatz-Knoten beschränkt sind. De grundlegende Idee besteht darin, dass,
wenn es einen Nachbarn mit einer Downlink-Bandbreite gibt, die größer
ist als die Uplink-Bandbreite des Knotens, die Schätzung genau ist. Somit wäre
bei einer größeren Zahl von Blattsatz-Knoten die Möglichkeit größer,
eine präzise Schätzung zu bekommen. Aus demselben Grund wird die Downstream-Engpassbandbreite
als das Maximum der gemessenen Engpassbandbreiten von seinen Blattsatz-Knoten zu
sich selbst geschätzt.
Die Messung der Engpassbandbreite ist hinlänglich bekannt. Bei
einer Paket-Paar-Technik werden beispielsweise zwei Pakete der Größe S
direkt hintereinander von einem Quell-Knoten gesendet. Der Empfänger misst
die Zeitstreuung T dazwischen und schätzt die Engpassbandbreite aus der Quelle
als S/T.
Die Kooperation von Blattsatz-Knoten über Heartbeats ermöglicht
es, dass die Paket-Paar-Technik natürlich entwickelt wird. Ein Knoten x wählt
periodisch, einem Nachbarn y zwei aufeinander folgende Heartbeat-Nachrichten direkt
hintereinander zu senden, wobei jede derart gefüllt ist, dass ihre Größe
ausreichend groß ist (wie etwa 1,5 kB). 'y' verfügt nun über die
Schätzung der Engpassbandbreite auf dem Weg von x zu sich selbst. Dieser Wert
wird beim nächsten Heartbeat zu x Huckepack genommen. In ähnlicher Weise
führt y dieselbe Prüfung durch wie x. Nachdem x genügend gemessene
Bandbreiten von seinen Blattsatz-Elementen gesammelt hat, kann es nun seine eigene
Engpassbandbreite, wie oben beschrieben, schätzen.
D.4 Zeitplanung von ALM-Sessions innerhalb eines P2P-Ressourcen-Pools
Es wird nun gezeigt, wie ein P2P-Ressourcen-Pool optimal für
mehrere gleichzeitige ALM-Sessions verwendet wird. Das Endziel besteht darin, für
aktive Sessions die optimale Leistung mit allen verfügbaren und geeigneten
Peers im Ressourcen-Pool zu erreichen. Die Leistungs-Metrik einer Session ist durch
bestimmte Dienstgüten-Definitionen bestimmt. Darüber hinaus sollten Sessions
höherer Priorität proportional einen höheren Anteil der Ressourcen
im Pool beziehen. Hier liegt die Konzentration auf einer kleinen bis mittleren Session-Größe,
bei der davon ausgegangen wird, dass eine Dienstgüte in vielen Fällen
eine Bedingung ist (z.B. Videokonferenz). Es wird zudem von einer statischen Mitgliedschaft
ausgegangen, bei der die ursprüngliche Gruppe von Telnehmern mit M(s) für
einen bestimmte Session 's' gekennzeichnet ist, obwohl der Algorithmus erweitert
werden kann, um sich auch auf eine dynamische Mitgliedschaft anzupassen.
Ein Aufgaben-Manager einer Session ist dafür verantwortlich,
einen modifizierten heuristischen Algorithmus ablaufen zu lassen, um die Topologie
der ALM zu planen. Um wenig Ressourcen im Pool zu verwenden, fordert der Aufgaben-Manager
den SOMO auf, eine Liste von Kandidaten zu beziehen. Die Gegenstände auf der
Liste beinhalten nicht nur die Ressourcen-Verfügbarkeit, sondern auch deren
Netzwerkkoordinaten und deren Bandbreite. Wenn der Plan gezeichnet ist, beginnt
der Aufgaben-Manager die helfenden Peers zu kontaktieren, damit diese ihre Verwendung
bereitstellen. Konkurrierende Aufgaben lösen ihre Behauptung lediglich durch
ihre jeweiligen Prioritäten.
Für das ALM gibt es unterschiedliche Kriterien für die Optimierung;
wie etwa den Bandbreiten-Engpass, die maximale Latenz, oder die Varianz von Latenzen.
Die maximale Latenz sämtlicher Elemente wird hier als das Hauptziel des Baumaufbau-Algorithmus'
verwendet, da sie in großem Maße die Wahrnehmung der Endbenutzer beeinflussen
kann. Jeder Knoten hat eine Begrenzung der Zahl von Kommunikations-Sessions, die
er handhaben kann, die hier "Ordnung" genannt wird. Dies kann auf die begrenzte
Zugriffsbandbreite oder die Arbeitslast von Endsystemen zurückzuführen
sein. Die Optimierung wird so ausgeführt, dass der ressourcenhungrigsten Aufgabe
durch die Maschinen mit den meisten Ressourcen im Peer-To-Peer-System gedient wird.
Eine Definition für eine Dienstgüte für eine bestimmte
Session kann formal wie folgt formuliert sein:
Definition 1. Problem der ordnungsbegrenzten, minimalen Höhe eines Baumes (DB-MHT).
Gegeben sei ein ungerichteter, vollständiger Graph G(V, E), eine Ordnungsbegrenzung
dbound(v) für jedes v ∊ V, eine Latenzfunktion l(e) für
jede Flanke e ∊ E. Finde einen überspannenden Baum T von G, so dass
für jedes v ∊ T die Ordnung von v erfüllt: d(v) ≤ dbound(v)
und die Höhe von T (gemessen als gesamte Latenz von der Wurzel) minimiert wird.
Mit Hilfe des Ressourcen-Pools kann die Definition für die Dienstgüte
erweitert werden. Eine erweiterte Gruppe von Helfer-Knoten H wird dem Graphen hinzugefügt,
wobei das Ziel darin besteht, die beste Lösung im Bezug auf einen optimalen
Plan, der ohne Verwendung von H abgeleitet wird, zu erreichen, indem die geringste
Anzahl von Helfer-Knoten hinzugefügt wird.
D.5 Zeitplanung einer einzelnen ALM-Session
Es werden das Verfahren zur Zeitplanung einer einzelnen ALM-Session
wie auch ein Algorithmus zum Optimieren einer einzelnen ALM-Session erläutert,
wenn ein Ressourcen-Pool verwendet wird. Der Algorithmus weist eine O(N3)-Leistungsgrenze
auf und kann eine Lösung für Hunderte von Knoten in weniger als einer
Sekunde erzeugen. Siehe beispielsweise unten die TABELLE A, ohne den Code im gestrichelten
Kasten. Dieser Algorithmus, der hier als "AMCast" bezeichnet wird, beginnt zunächst
mit der Wurzel und fügt diese einem Satz der momentanen Lösung zu. Als
nächstes werden die minimalen Höhen der restlichen Knoten berechnet, indem
ihre nächstgelegenen potentiellen Eltern im Lösungssatz gefunden werden,
die Gegenstand der Ordnungsbeschränkungen sind. Dies kehrt wieder durch Aufnehmen
des Knotens mit der geringsten Höhe in die Lösung. Der Vorgang fährt
fort, bis sämtliche Knoten schließlich im resultierenden Baum enthalten
sind. Um sicherzustellen, dass der bestmögliche Baum für einen Beginn
ermittelt wurde, kann der Algorithmus mit einem Satz weiterer Abstimmungs- oder
Justiermaßnahmen versehen werden. Beispielsweise können Abstimm- und Justiermaßnahmen
zur Annäherung an einen global optimalen Algorithmus das Justieren eines Baumes
mit einem Satz heuristischer Schritte beinhalten. Diese Schritte umfassen: (a) das
Auffinden neuer Eltern für den höchsten Knoten; (b) das Austauschen des
höchsten Knotens mit einem weiteren Blattknoten; und (c) das Austauschen. des
Teilbaums, dessen Wurzel die Eltern des höchsten Knoten ist, mit einem weiteren
Teilbaum.
Bei der Suche nach dienlichen Helfer-Knoten enthält der Algorithmus
zwei Berücksichtigungen: (1) die Zeit zur Auslösung der Suche; und (2)
die Kriterien, um eine Addition zu bewerten. Der allgemeine Mechanismus ist durch
den Pseudo-Code in dem durch einen Kasten gekennzeichneten "Section A" in der Tabelle
A beschrieben:
Tabelle A:
Es seien u der Knoten, den der AMCast-Algorithmus der Lösung
hinzufügen möchte, und parent(u) dessen Eltern. Wenn die freie Ordnung
von parent(u) auf Eins verringert wird, wird die Suche nach einem zusätzlichen
Knoten h ausgelöst. Ist ein derartiges h im Ressourcen-Pool vorhanden, dann
wird h anstelle dessen zu den Eltern von u und ersetzt u als Nachkommen des ursprünglichen
parent(u). Unterschiedliche Versionen variieren lediglich hinsichtlich das Auswahlkriteriums
h, wobei jedoch diese Klasse der Optimierung als Algorithmus eines kritischen Knotens
bezeichnet werden kann. "Kritisch" bedeutet hier, dass dies die letzte Möglichkeit
ist, für einen speziellen Knoten den ursprünglichen Algorithmus zu verbessern.
Es können unterschiedliche Algorithmen zur Suche nach h verwendet
werden. Eine erste Variation des Algorithmus' besteht darin, einen zusätzlichen
Knoten, nächstgelegen zum Elternknoten, mit einer geeigneten Ordnung (z.B.
kann '4' verwendet werden) zu finden. Es sei l(a, b) die Latenz zwischen zwei beliebigen
Knoten a und b. Die folgende Heuristik liefert sogar bessere Ergebnisse, wie es
in Tabelle B gezeigt ist:
Hier kann v eines der Geschwister von u sein. Die Idee besteht hierbei
darin, dass, da sämtliche v potentiell die zukünftigen Geschwister von
h sein werden, l(h, parent(u)) + max(l(h, v) höchst wahrscheinlich die potentielle
Baumhöhe nach dem Hinzukommen von h beeinflusst (Bedingung 1). Ein derartiger
Helfer-Knoten sollte eine geeignete Ordnung haben (Bedingung 2). Um schließlich
"unbrauchbare" Knoten zu vermeiden, die weit entfernt sind, wenngleich ihre Ordnungen
hoch sind, legen wir einen Radius R fest: h muss innerhalb R von parent(u) entfernt
liegen (Bedingung 3). Die Eingangsparameter, die notwendig sind, um diese Prozedur
auszuführen, beinhalten die Netzwerkkoordinaten, so dass wir die Latenz zwischen
einem willkürlichen Paar wie auch die Ordnungen jedes Knoten berechnen können.
Dies wird möglich, indem jeder Knoten veranlasst wird, seine Netzwerkkoordinaten
wie auch seine Bandbreitenbeschränkungen in seinem Bericht an den SOMO zu veröffentlichen,
wie es in 12 gezeigt ist, die eine Visualisierung des
SOMO-Berichtes ist, den ein Zeitplaner verwendet. Somit hat jeder Knoten eine Auslastung
(verfügbare CPU-Zyklen), ein spezielles Speichervermögen (RAM, Platz auf
der Platte, Cache) und verfügt zudem über bestimmte Netzwerkinformationen,
wie etwa wo sich der Knoten befindet (IP-Adresse) und wie viel verfügbare Bandbreite
der Knoten hat. 10a zeigt die Sammlung von Daten für
die Verwendung in einem SOMO-Bericht, wie er etwa in 12
dargestellt ist.
D.6 Optimieren mehrerer ALM-Sessions
Während der vorhergehende Abschnitt den eigenständigen Zeitplanalgorithmus
für eine ALM-Session beschreibt, erläutert dieser Abschnitt, wie mit mehreren
aktiven Sessions verfahren wird, bei denen Sessions mit einer höheren Priorität
proportional mehr Ressourcen zugeordnet wird und die Verwendung des Ressourcen-Pools
insgesamt maximiert wird.
Sämtliche Sessions können zu beliebigen Zeiten beginnen
und enden. Jede Session hat eine mit einer ganzen Zahl bewertete Priorität
zwischen 1 und 3. Eine Priorität-1-Session ist die höchste Klasse. Die
Zahl der maximalen gleichzeitigen Sessions schwankt zwischen 10 und 60, wobei jede
Session einen nicht überlappenden Elementensatz von 20 hat. Wenn es 60 aktive
Sessions gibt, gehören somit sämtliche Knoten zu wenigstens eines Session.
Das heißt, der Anteil ursprünglicher Elemente aktiver Sessions schwankt
zwischen 17% und 100%. Zählt man die Helfer-Knoten, verwendet eine Sessions
normalerweise mehr als die ursprünglichen Elemente. Es können zudem Knoten
mit einer höheren Ordnung an mehr als einer Session beteiligt sein.
Das Prinzip, das diesem Ansatz zur Optimierung mehrerer ALM-Sessions
zugrunde liegt, ist in gewisser Weise analog zu einer gut organisierten Gesellschaft:
solange globales, rechtzeitiges und vertrauenswürdiges Wissen verfügbar
ist, mag es das Beste sein, jede Aufgabe so zu belassen, dass sie um Ressourcen
mit ihren eigenen Empfehlungen (d.h. mit ihren jeweiligen Prioritäten) in Wettstreit
tritt. Dieses rein marktorientierte Modell gestattet das Erreichen des Ziels ohne
den Bedarf eines globalen Zeitplaners gleich welcher Art.
Das Einstellen der geeigneten Prioritäten bei Knoten, die an
einer Session beteiligt sind, erfordert zusätzliche Überlegung. Wenn in
einer gemeinschaftlichen P2P-Umgebung ein Knoten eine Aufgabe ausführen muss,
die ihn selbst als Element enthält, ist es angemessen, dass dies Aufgabe in
diesem Knoten die höchste Priorität hat. Daher hat sie für eine Session
s mit Priorität L die höchste Priorität (d.h. die erste Priorität)
für Knoten in M(s) und L an anderer Stelle (d.h. für beliebige Helfer-Knoten,
die außerhalb M(s) liegen). Damit ist sichergestellt, dass jede Session ausgeführt
werden kann, wobei eine untere Grenze dem AMCast-adju-Algorithmus entspricht. Die
obere Grenze erhält man unter der Voraussetzung, dass s die einzige Session
im System ist (d.h. Blattsatz + adju).
Wie zuvor ist die Wurzel einer ALM-Session der Aufgaben-Manager, der
die Planung und die Zeitplanung der Baumtopologie ausführt. Jede Session verwendet
den Blattsatz-Justier-Algorithmus, um die Zeitplanung vollständig selbständig
auf der Basis von Systemressourcen-Informationen auszuführen, die vom SOMO
bereitgestellt werden. Für eine Session mit der Priorität L werden beliebige
Ressourcen, die mit Aufgaben belegt sind, die eine geringere Priorität als
L haben, als für deren Verwendung verfügbar angesehen. Wenn eine aktive
Session eine Ressource in ihrem momentanen Plan verliert, muss sie in ähnlicher
Weise die Zeitplanung erneut ausführen. Jede Session wird zudem eine Zeitplanung
periodisch wiederholen, um zu prüfen, ob ein besserer Plan, der kürzlich
frei gewordene Ressourcen verwendet, besser ist als der momentane Plan, und zu diesem
umschalten, wenn dies der Fall ist.
Um es dem SOMO zu erleichtern, Ressourcen-Informationen zu erfassen
und zu verteilen und so die Planung jedes Aufgaben-Managers zu unterstützen,
veröffentlicht, wie zuvor, jeder Knoten seine Informationen, wie etwa Netzwerkkoordinaten,
in seinem Bericht an den SOMO. Dessen Ordnung ist jedoch zu Prioritäten heruntergebrochen,
die von aktiven Sessions belegt sind. Dies ist in den folgenden beiden Beispielen
in der Ordnungs-Tabelle C zusammengefasst:
Ordnungs-Tabelle C:
In der Ordnungs-Tabelle C sind die Ordnungs-Tabellen von zwei Knoten
dargestellt. Die Gesamtordnung von x ist 4 und wird von der Session s4 mit 2 Ordnungen
verwendet und von s12 mit einer weiteren Ordnung, so dass x mit einer freien Ordnung
verbleibt. y verfügt andererseits lediglich über zwei Ordnungen, die beide
von Session s5 verwendet werden. Die Ordnungs-Tabellen werden immer dann aktualisiert,
wenn eine Zeitplanung stattfindet, die die Ordnungsteilung eines Knotens beeinflusst.
Ordnungs-Tabellen werden, wie es zuvor erläutert wurde, vom SOMO erfasst und
für jede beliebige laufende Aufgabe zur Abfrage verfügbar gemacht. Die
Ordnungs-Tabelle C zeigt, dass es für eine Maschine möglich ist, sich
unter unterschiedlichen Strömen von ALM-Sessions aufzuteilen, so dass einige
Dinge simultan durch Aufteilen der Bandbreite erledigt werden können. Somit
zeigt die Ordnungs-Tabelle C, wie viele Gesamt-Ordnungen verfügbar sein können
und wie viele Fähigkeiten verfügbar sein können, indem die Fähigkeiten
auf verschiedene Aufgaben aufgeteilt werden, so dass sie als Sessions unterschiedlicher
Priorität zeitlich geplant werden können.
Wenn es mehr Sessions beim Multicasting auf Applikationsebene gibt
und die gesamten Ressourcen knapp werden, nimmt die Leistungsfähigkeit ab.
Aufgaben höherer Priorität sind jedoch in der Lage, eine weitaus bessere
Leistungsfähigkeit beizubehalten, als jene geringerer Priorität. Zudem
verlieren Aufgaben geringerer Priorität mehr Helfer-Knoten, wenn die Ressourcen
in intensivem Wettstreit stehen.
D.7 Ressourcen-Pools mit ALM-Sessions
Um einen Ressourcen-Pool zu erzeugen, ist es unvermeidlich, dass eine
hierarchische Struktur eingerichtet wird, um eine zeitliche Anhäufung sicherzustellen.
Bei einer Zwei-Ebenen-Architektur, bei der das IP-Ebenen-Multicasting angewendet
wird, um Statistiken an einem Ort zu erfassen, kann beispielsweise das Ergebnis
dann an einer zentralen Stelle angehäuft werden. Die Bestandteile sind hier
erläutert, um einen Weitbereichs-Ressourcen-Pool plausibel zu machen, d.h.
(1) die Kombination der selbstorganisierenden Fähigkeit einer P2P-DHT und (2)
eine systemeigene, selbstskalierende Überwachungsstruktur.
D.8 Optimieren eines ALM unter Verwendung von Ressourcen-Pools
ALM ist eine zu bevorzugende Applikation für P2P-DHTs. Um ein
ALM zu optimieren, sollte jedoch ein Ressourcen-Pool verwendet werden. Mit einem
Ressourcen-Pool können eine Optimierung einer einzelnen ALM-Session wie auch
eine Optimierung mehrerer gleichzeitiger ALM-Sessions in einem vollautomatischen, marktorientierten
Ansatz ausgeführt werden. Es wird jedoch darauf hingewiesen, dass das ALM lediglich
eine Applikation für den P2P-Ressourcen-Pool ist. Trotzdem wird für eine
Methodik, die ein eher verteilter als ein zentralisierter Abstimmungsmechanismus
ist, ein Ansatz in zwei Schritten befürwortet: (1) applikationsspezifische
Zeitplanung je Aufgabe; und (2) kombiniert mit marktorientiertem fairem Wettstreit
durch Koordination innerhalb der Aufgaben.
E. BEISPIELHAFTE COMPUTERUMGEBUNG ZUR IMPLEMENTIERUNG EINES P2P-TEILNEHMERS
Der Daten-Overlay, der oben in Abschnitt A beschrieben ist, ist eine
Datenstruktur, die auf mehrere Maschinen und möglicherweise über eine
andere Infrastruktur in einem P2P-System verteilt werden kann. Somit kann jeder
der Teilnehmer im P2P-System so angesehen werden, dass er einen Teil des Daten-Overlays
implementiert. Um diesen Effekt zu erzielen, kann jeder Teilnehmer den erforderlichen
Code und die Daten speichern, um einen Daten-Overlay zu erzeugen und mit diesem
zu interagieren. Der Code und die Daten können im flüchtigen und/oder
nicht flüchtigen Speicher jedes Teilnehmers gespeichert werden (was im folgenden
erläutert wird).
Beispielsweise zeigt 13 eine Ansicht
höherer Ebene eines beispielhaften P2P-Teilnehmers als einen Computer
1342. Dieser Computer 1342 entspricht einem Computer für
allgemeine Zwecke oder einem Server-Computer sowie einer angeschlossenen Anzeigevorrichtung
1374. Der Computer 1342 kann jedoch auch unter Verwendung anderer
Arten eines Computergerätes implementiert sein. Beispielsweise kann der Computer
1342, wenngleich dies nicht gezeigt ist, ein Hand- oder Laptopgerät,
Set-Top-Boxen oder Großrechner und dergleichen umfassen.
Der beispielhafte Computer 1342 kann verwendet werden, um
die Prozesse auszuführen, die hier beschrieben sind. Der Computer
1342 enthält einen oder mehrere Prozessoren oder Prozessoreinheiten
1344, einen Systemspeicher 1346 und einen Bus 1348, der
unterschiedliche Systemkomponenten, die den Systemspeicher 1346 enthalten,
mit den Prozessoren 1344 verbindet. Es können ein oder mehrere Speicher
im Computer 1342 verwendet werden, um den Code und die Daten zu speichern,
die verwendet werden, um einen Teil des Daten-Overlays, wie etwa einen Teil der
SOMO-Baumstruktur, zu implementieren.
Der Bus 1348 repräsentiert eine oder mehrere unterschiedlicher
Arten von Busstrukturen, enthaltend einen Speicherbus oder Speicher-Controller,
einen Peripheriebus, einen beschleunigten Graphikanschluss und einen Prozessorbus
oder lokalen Bus, bei denen eine Vielfalt von Busarchitekturen Verwendung findet.
Der Systemspeicher 1346 enthält einen ROM (Festspeicher)
1350 und einen RAM (Direktzugriffsspeicher) 1352. Ein BIOS (Basic
Input/Output System) 1354, das die Basisroutinen enthält, die dabei
hilfreich sind, Informationen zwischen Elementen innerhalb des Computers
1342, wie etwa während des Startens, zu übertragen, ist im ROM
1350 gespeichert.
Der Computer 1342 enthält zudem ein Festplattenlaufwerk
1356 um von einer Festplatte (nicht gezeigt) zu lesen und auf diese zu
Schreiben, ein Magnetplattenlaufwerk 1358, um von einer entnehmbaren Magnetplatte
1360 zu lesen und auf diese zu schreiben, und ein optisches Plattenlaufwerk
1362, um von einer entnehmbaren optischen Platte 1364, wie etwa
einer CD-ROM oder einem anderen optischen Medium zu lesen und auf dieses zu schreiben.
Das Festplattenlaufwerk 1356, das Magnetplattenlaufwerk 1358 und
das optische Plattenlaufwerk 1362 sind mit dem Bus 1348 über
eine SCSI-Schnittstelle 1366 oder eine andere geeignete Schnittstelle verbunden.
Die Laufwerke und ihre zugehörigen computerlesbaren Medien stellen einen nicht
flüchtigen Speicher für computerlesbare Anweisungen, Datenstrukturen,
Programmmodule und andere Daten für den Computer 1342 bereit. Wenngleich
die beispielhafte Ausführungsform, die hier beschrieben ist, eine Festplatte,
eine entnehmbare Magnetplatte 1360 und eine entnehmbare optische Platte
1364 verwendet, wird der Fachmann verstehen, das andere Typen computerlesbarer
Medien, die Daten speichern können und auf die von einem Computer zugegriffen
werden kann, wie etwa Magnetkassetten, Flash-Speicherkarten, digitale Videoplatten,
RAMs und ROMs und dergleichen, ebenfalls in der beispielhaften Betriebsumgebung
verwendet werden können.
Es kann eine Anzahl von Programmmodulen auf der Festplatte
1356, der Magnetplatte 1360, der optischen Platte 1364,
im ROM 1350 oder im RAM 1352 gespeichert sein, die ein Betriebssystem
1370, eines oder mehrere Applikationsprogramme 1372 (wie etwa
die Web-Anfrage-Verfolgungs-Applikation) 140, einen Cache/andere Module
1374 und Programmdaten 1376 beinhalten. Das Betriebssystem
1370 kann ein Web-Anfrage-Ereignisverfolgungswerkzeug beinhalten, wie es
hier beschrieben ist (wie etwa die Verfolgungs-Infrastruktur 144). Ein
Benutzer kann Befehle und Informationen in den Computer 1342 über
Eingabevorrichtungen, wie etwa eine Tastatur 1378 und eine Zeigevorrichtung
1380, eingeben. Andere Eingabevorrichtungen (die nicht
gezeigt sind) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel,
einen Scanner und dergleichen beinhalten. Diese und andere Eingabevorrichtungen
sind mit der Verarbeitungseinheit 1344 durch eine Schnittstelle
1382 verbunden, die mit dem Bus 1348 gekoppelt ist. Ein Monitor
1384 oder ein anderer Typ einer Anzeigevorrichtung ist ebenfalls mit dem
Bus 1348 über eine Schnittstelle, wie etwa einen Videoadapter
1386, verbunden. Zusätzlich zum Monitor enthalten PCs normalerweise
andere Peripherie-Ausgabevorrichtungen (nicht gezeigt), wie etwa Lautsprecher und
Drucker.
Der Computer 1342 arbeitet im allgemeinen in einer Netzwerkumgebung
mit Hilfe logischer Verbindungen zu einem oder mehreren entfernten Computern, wie
etwa einem entfernten Computer 1388. Der entfernte Computer 1388
kann ein PC, ein weiterer Server, eine Router, ein Netzwerk-PC, eine Peer-Vorrichtung
oder anderer gewöhnlicher Netzwerkknoten sein und enthält viele oder sämtliche
Elemente, die oben im Bezug auf den Computer 1342 beschrieben wurden. Die
logischen Verbindungen, die in 13 gezeigt sind, beinhalten
ein lokales Netzwerk (LAN) 1390 und ein Weitbereichsnetzwerk (WAN)
1392. Derartige Netzwerke sind in Büros, weltweiten Computernetzwerken,
Intranets und dem Internet allgemein üblich.
Bei der Verwendung in einer LAN-Netzwerkumgebung ist der Computer
1342 mit dem lokalen Netzwerk durch eine Netzwerkschnittstelle oder einen
Adapter 1394 verbunden. Bei Verwendung in einer WAN-Netzwerkumgebung enthält
der Computer 1342 normalerweise ein Modem 1396 oder eine andere
Einrichtung zum Einrichten von Kommunikationen über das Weitbereichsnetzwerk
1392, wie etwa das Internet. Das Modem 1396, das intern oder extern
sein kann, ist mit dem Bus 1348 über eine Seriellanschluss-Schnittstelle
1368 verbunden. In einer Netzwerkumgebung können Programmmodule, die
im Bezug auf den PC 1342 dargestellt sind, oder Teile derselben in der
entfernten Speichervorrichtung gespeichert sein. Es wird darauf hingewiesen, dass
die dargestellten Netzwerkverbindungen beispielhaft sind und andere Einrichtungen
zum Herstellen einer Kommunikationsverbindung zwischen Computern verwendet werden
können.
Im allgemeinen werden die Datenprozessoren des Computers
1342 mit Hilfe von Anweisungen programmiert, die zu unterschiedlichen Zeiten
auf den unterschiedlichen computerlesbaren Speichermedien des Computers gespeichert
werden. Programme und das Betriebssystem werden normalerweise beispielsweise auf
Floppy-Disketten oder CD-ROMs verteilt. Von dort werden sie in den Sekundärspeicher
eines Computers installiert oder geladen. Bei der Ausführung werden sie wenigstens
teilweise in den elektronischen Primärspeicher des Computers geladen. Die Erfindung,
die hier beschrieben ist, enthält diese und andere unterschiedliche Typen von
computerlesbaren Speichermedien, wenn derartige Medien Anweisungen oder Programme
zum Implementieren der Blöcke beinhalten, die im folgenden in Verbindung mit
einem Mikroprozessor oder einem anderen Datenprozessor beschrieben sind. Die Erfindung
umfasst zudem den Computer an sich, wenn er gemäß den Verfahren und den
Techniken programmiert wird, die hier beschrieben sind.
Zu Darstellungszwecken sind Programme und andere ausführbare
Programmkomponenten, wie etwa das Betriebssystem, hier als diskrete Blöcke
dargestellt, wenngleich es sich versteht, dass sich derartige Programme und Komponenten
zu unterschiedlichen Zeiten in unterschiedlichen Speicherkomponenten des Computers
befinden und durch den (die) Datenprozessor(en) des Computers ausgeführt werden.
Beliebige der hier beschriebenen Funktionen können unter Verwendung
von Software, Firmware (z.B. einer unveränderlichen Logikschaltung), manueller
Verarbeitung oder einer Kombination aus diesen Anwendungen implementiert werden.
Der Begriff "Logik" oder "Modul", wie er hier verwendet wird, repräsentiert
Software, Firmware oder eine Kombination aus Software und Firmware. Für den
Fall einer Softwareimplementierung repräsentiert der Begriff "Logik" oder "Modul"
Programmcode, der spezielle Aufgaben durchführt, wenn er in einer Verarbeitungsvorrichtung
oder Verarbeitungsvorrichtungen (z.B. einer CPU oder CPUs) ausgeführt wird.
Der Programmcode kann auf einer oder mehreren computerlesbaren Speichervorrichtungen
gespeichert sein. Die dargestellte Trennung von Logik und Modulen in eigene Einheiten
kann eine tatsächliche physikalische Gruppierung und Zuordnung derartiger Software
und/oder Hardware widerspiegeln, oder kann einer konzeptionellen Zuordnung unterschiedlicher
Aufgaben entsprechen, die von einem einzelnen Softwareprogramm und/oder einer Hardwareeinheit
ausgeführt werden. Die dargestellte Logik und die Module können sich an
einer einzigen Stelle (z.B. ausgeführt durch eine einzige Verarbeitungsvorrichtung)
befinden oder über mehrere Orte verteilt sein.
H. Folgerung
Um einen P2P-Ressourcen-Pool zu erzeugen, wird die Fähigkeit
der Selbstorganisation einer P2P-DHT mit einer sich selbst skalierenden, hierarchischen,
systemeigenen Überwachungs-Infrastruktur kombiniert. Um die Selbstskalierung
und eine Stabilität zu erreichen, muss diese Infrastruktur eine logische Hierarchie
sein, die im virtuellen Raum eingerichtet wird, der durch die DHT erzeugt wird,
und anschließend auf die Teilnehmer abgebildet wird. Es wurde hier erläutert,
wie ein SOMO, der mit einer DHT kombiniert ist, wirkungsvoll einen Ressourcen-Pool
erzeugt.
Die Leistung des Ressourcen-Pools kann verwendet werden, um die zeitgerechte
und präzise Nachrichtensendung über den SOMO zu nutzen, einen applikationsspezifischen
Zeitplaner für jede Aufgabe zu installieren und anschließend einen vollautomatischen,
marktorientierten Ansatz auszuführen, um Aufgaben in fairem Wettstreit zu koordinieren.
Es wurden Implementierungen zum Aufbauen einer Datenstruktur auf einer
DHT in einem P2P-System beschrieben. Es wurde eine spezifische hierarchische Struktur
speziell zum Verteilen von Informationen im P2P-System und zum Sammeln von Informationen
aus dem P2P-System erläutert.
Bestimmte Vorgänge wurde so erläutert, das sie eindeutige
Schritte bilden, die in einer bestimmten Reihenfolge ausgeführt werden. Derartige
Implementierungen sind beispielhaft und nicht einschränkend. Bestimmte Schritte,
die hier beschrieben wurden, können gruppiert und in einem einzigen Vorgang
ausgeführt werden, und bestimmte Schritte können in einer Reihenfolge
ausgeführt werden, die sich von der Reihenfolge unterscheidet, die bei den
Beispielen zur Anwendung kommt, die in dieser Beschreibung erläutert sind.
Zudem sind zahlreiche Beispiele in dieser Beschreibung als Alternative
dargestellt (z.B. Fall A oder Fall B). Darüber hinaus schließt diese Beschreibung
jene Fälle ein, die Alternativen in einer einzigen Anwendung kombinieren (z.B.
Fall A und Fall B), wenngleich diese Beschreibung nicht ausdrücklich diese
verbindenden Fälle bei jedem Beispiel erwähnt.
Die vorliegende Erfindung kann in anderer spezieller Form ausgeführt
werden, ohne von ihren speziellen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen
sind in allen Aspekten lediglich als beispielhaft und nicht einschränkend zu
betrachten. Der Geltungsbereich der Erfindung ist somit durch die beigefügten
Ansprüche anstelle durch die vorangehende Beschreibung definiert. Sämtliche
Änderungen, die der Bedeutung und dem Bereich der Äquivalenz der Ansprüche
entsprechen, sind in deren Geltungsbereich eingeschlossen.
Anspruch[de]
Aufbauen eines Daten-Overlay als eine Datenstruktur auf einem logischen
Raum, der in einer verteilten Hash-Tabelle (distributed hash table – DHT)
für ein Peer-To-Peer-System enthalten ist, wobei der logische Raum eine Vielzahl
von DHT-Knoten mit einer dazugehörigen Vielzahl von DHT-Zonen enthält;
Aufbauen einer Topologie eines Baums mit einer Vielzahl von Ebenen in dem Daten-Overlay,
der jeweils einen oder mehrere Baumknoten enthält, die mit den jeweiligen der
DHT-Knoten verbunden sind, wobei:
die erste Ebene des Baums einen einzelnen Baumknoten mit einer einzelnen Baumknotenzone
enthält, die der gesamten Ausdehnung des logischen Raums der DHT entspricht
und logisch in eine Vielzahl der Baumknoten unterteilt ist, die jeweils entsprechen:
den Baumknoten auf jeder Ebene des Baums; und
Teilen des logischen Raums der DHT;
wobei jeder der Baumknoten ein Schlüsselelement enthält, dass einen Schlüssel
identifiziert, der mit seiner jeweiligen Baumknotenzone verbunden ist,
Abbilden einer Vielzahl von Maschinen auf dem logischen Raum der DHT, wobei:
jede Maschine einer oder mehreren der Baumknotenzonen entspricht;
dadurch gekennzeichnet, dass
jede Maschine als ihren repräsentativen Knoten aus der einen oder den mehreren
Baumknotenzonen, die ihr entspricht/entsprechen, den Baumknoten auswählt, der
der größten Baumknotenzone entspricht; und
jeder der repräsentativen Knoten als seinen Elternknoten einen anderen repräsentativen
Knoten auswählt, der der repräsentative Knoten für eine angrenzende
der Baumknotenzone ist, die größer ist.Verfahren nach Anspruch 1, das des Weiteren umfasst:
Erfassen von Metadaten an jeder der Maschinen;
Senden der an der Maschine erfassten Metadaten zu dem entsprechenden repräsentativen
Knoten;
Erfassen der durch jeden der repräsentativen Knoten empfangene Metadaten; und
Senden der durch jeden der repräsentativen Knoten erfassten Metadaten zu den
entsprechenden Elternknoten; und
Erfassen von Metadaten, die an dem einzelnen Baumknoten auf der ersten Ebene des
Baums empfangen werden.Verfahren nach Anspruch 2, das des Weiteren umfasst:
Verarbeiten der an dem einzelnen Baumknoten auf der ersten Ebene des Baums erfassten
Metadaten; und
Senden der verarbeiteten Metadaten von dem einzelnen Baumknoten auf der ersten Ebene
des Baums zu jeder Maschine über die jeweiligen Elternknoten und repräsentativen
Knoten.Verfahren nach Anspruch 3, wobei:
die Metadaten Informationen bezüglich der Funktion jeder der Maschinen umfassen;
und
die verarbeiteten Metadaten Befehle umfassen, die die Funktion jeder der Maschinen
steuern können.Verfahren nach Anspruch 1, wobei:
die einzelne Baumknotenzone, die der gesamten Ausdehnung des logischen Raums der
DHT entspricht, gleichmäßig in Baumknotenzonen unterteilt ist;
k die Anzahl der Baumknoten auf der ersten Ebene des Baums ist; und
der j-te Baumknoten auf Ebene i des Baums eine Baumknotenzone aufweist, die eine
Größe von [j/ki, /j + 1)/ki]; und
einen Schlüssel (2i + 1)/2ki hat; wobei (0 <= j <
2i)Verfahren nach Anspruch 5, wobei
jeder der Schlüssel einen Wert hat, der eine Funktion von Koordinaten ist,
die die Mitte der jeweiligen Baumknotenzone identifizieren;
die i-Ebene des Baums ki Baumknoten enthält; und
die Baumknotenzone jedes Baumknotens eine Größe von 1/ki hat.Verfahren nach Anspruch 1, das des Weiteren Berechnen jeweiliger Schlüssel
der jeweiligen repräsentativen Knoten und Elternknoten für die Maschine
für jede der Maschinen umfasst.Verfahren nach Anspruch 7, wobei das Berechnen der jeweiligen Schlüssel
des Weiteren Gewinnen von Informationen mit der Maschine unter Verwendung eines
Suchlaufs in der DHT umfasst, wobei die Maschine die Informationen mit dem Schlüssel
des entsprechenden der repräsentativen Knoten verwendet, um Kommunikation mit
der Maschine herzustellen, die dem repräsentativen Knoten entspricht.Verfahren nach Anspruch 1, das des Weiteren umfasst:
Empfangen einer Heartbeat-Übertragung von jeder der Maschinen in einer angrenzenden
der Baumknotenzonen an jeder der Maschinen; und
dass, wenn eine der Heartbeat-Übertragungen nicht rechtzeitig empfangen wird,
das Nichtvorhandensein der entsprechenden Maschine in der benachbarten Baumknotenzone
berücksichtigt wird, indem:
das Bereitstellen der DHT wiederholt wird;
das Aufbauen des Daten-Overlay als die Datenstruktur auf logischem Raum der DHT
wiederholt wird;
das Aufbauen des Mehrfachebenen-Baums in dem wieder aufgebauten Daten-Overlay wiederholt
wird; und
das Abbilden der Vielzahl von Maschinen auf dem logischen Raum der DHT wiederholt
wird.Verfahren nach Anspruch 1, wobei jeder der repräsentativen Knoten
und jeder der Elternknoten als eine Optimierungsfunktion der Verfügbarkeit
von Ressourcen ausgewählt wird.Verfahren nach Anspruch 10, wobei die Optimierungsfunktion auf Kriterien
basiert, die aus der Gruppe ausgewählt werden, die aus Netzwerkkoordinaten,
Bandbreiten-Engpass, maximaler Latenz und Varianz von Latenzen besteht, wobei die
Aufgabe mit dem größten Ressourcenbedarf durch die Maschinen mit den meisten
verfügbaren Ressourcen in dem Peer-To-Peer-System durchgeführt wird.Verfahren nach Anspruch 1, wobei
die DHT das Einfügen und Abrufen von Objekten in das Peer-To-Peer-System bzw.
aus ihm steuert; und
der logische Raum eine Vielzahl von DHT-Knoten mit einer damit verbundenen Vielzahl
von DHT-Zonen enthält; und
das Daten-Overlay der DHT aufgebaut wird, indem:
Objekte in der Datenstruktur mit den DHT-Knoten verbunden werden; und
Verknüpfungen zwischen den Objekten in der Datenstruktur eingerichtet werden.Verfahren nach Anspruch 12, wobei jede Verknüpfung enthält: ein erstes Feld, das einen fest verdrahteten Zeiger bereitstellt,
der von einem Objekt auf eine zweites Objekt zeigt; und
ein zweites Feld, das einen veränderlichen Zeiger (soft-state-pointer) bereitstellt,
der von einem ersten Objekt auf einen DHT-Knoten zeigt, der Host für das zweite
Objekt istVerfahren nach Anspruch 12, wobei das Aufbauen des Daten-Overlay verwendet:
ein erstes Primitiv, das einen Verweis setzt, der einen Zeiger zu einem Objekt in
der DHT einrichtet;
ein zweites Primitiv zum Zurückführen eines Objektes auf das durch einen
Zeiger verwiesen wird; und
ein drittes Primitiv zum Löschen eines Objektes, auf das durch einen Zeiger
verwiesen wird.Verfahren nach Anspruch 1, wobei jeder Baumknoten in dem Daten-Overlay
ein Operationselement enthält, das eine Operation definiert, die an Daten durchzuführen
ist, die durch den Baumknoten geleitet werden.Verfahren nach Anspruch 1, wobei jeder Baumknoten in dem Daten-Overlay
ein Bericht-Element enthält, das einen Bericht-Typ definiert, der unter Verwendung
des Baumknotens zu erzeugen ist.Verfahren nach Anspruch 1, wobei:
die erste Stufe des Baums den Baumknoten enthält, der ein Wurzelknoten für
den Baum ist; und
der Wurzelknoten der Baumknotenzone entspricht, die der gesamten Ausdehnung des
logischen Raums der DHT entspricht.Computerlesbarer Speicher, der maschinenlesbare Befehle zum Implementieren
des Aufbauens von Objekten in dem Daten-Overlay gemäß dem Verfahren nach
Anspruch 12 enthält.Computerlesbarer Speicher, auf dem ein gemäß dem Verfahren
nach Anspruch 1 erzeugtes Daten-Overlay gespeichert ist.Computerlesbarer Speicher, auf dem eine Datenstruktur gespeichert ist,
die ein Daten-Overlay als eine Datenstruktur auf einem logischen Raum umfasst, der
in einer verteilten Hash-Tabelle (DHT) für ein Peer-To-Peer-System enthalten
ist; wobei
die DHT das Einfügen und Abrufen von Objekten in das bzw. aus dem Peer-To-Peer-System
steuert;
der logische Raum eine Vielzahl von DHT-Knoten mit einer damit verbundenen Vielzahl
von DHT-Zonen enthält;
das Daten-Overlay der DHT aufgebaut wird, indem:
Objekte in der Datenstruktur mit DHT-Knoten verbunden werden; und
Verknüpfungen zwischen den Objekten in der Datenstruktur eingerichtet werden;
das Daten-Overlay eine Topologie eines Baums hat, der eine Vielzahl von Ebenen enthält;
der Baum eine Vielzahl von Baumknoten enthält, die mit jeweiligen der DHT-Knoten
verbunden sind;
der Baumknoten einen Wurzelknoten mit einer Baumknotenzone enthält, die dem
logischen Raum der DHT entspricht;
die Baumknotenzone des Wurzelknotens logisch in eine Vielzahl von Baumknotenzonen
unterteilt ist, die jeweils entsprechen:
der Anzahl von Baumknoten auf jeder Ebene des Baums; und
einem Teil des logischen Raums der verteilten Hash-Tabelle;
wobei jeder der Baumknoten ein Schlüsselelement enthält, das einen Schlüssel
identifiziert, der mit seiner jeweiligen Baumknotenzone verbunden ist;
der logische Raum der DHT auf einer Vielzahl von Maschinen abgebildet ist;
jede Maschine einer oder mehreren der Baumknotenzonen entspricht;
dadurch gekennzeichnet, dass
jede Maschine als ihren repräsentativen Knoten aus der einen oder der mehreren
Baumknotenzone/n, die ihr entspricht/entsprechen, den Knoten auswählt, der
der größten Baumknotenzone entspricht; und
jeder der repräsentativen Knoten als seinen Elternknoten einen repräsentativen
Knoten auswählt, der der repräsentative Knoten für eine benachbarte
Baumknotenzone ist, die größer ist.Computerlesbarer Speicher nach Anspruch 20, wobei:
die Baumknotenzone des Wurzelknotens gleichmäßig in k Baumknotenzonen
unterteilt ist, wobei k die Anzahl von Baumknoten auf der ersten Ebene des Baums
ist; und
der j-te Baumknoten auf der Ebene des Baums eine Baumknotenzone aufweist, die eine
Größe von [j/ki, (j + 1)/ki]; und und einen Schlüssel (2j + 1)/2ki hat; wobei (0
<= j < 2i).Computerlesbarer Speicher nach Anspruch 21, wobei:
jeder der Schlüssel einen Wert hat, der eine Funktion von Koordinaten ist,
die die Mittel der jeweiligen Baumknotenzone identifizieren;
die i-te Ebene des Baums ki Baumknoten enthält; und
die Baumknotenzone jedes Baumknotens eine Größe von I/ki hat.Computerlesbarer Speicher nach Anspruch 20, wobei
die DHT das Einfügen und Abrufen von Objekten in das bzw. aus dem Peer-To-Peer-System
steuert;
der logische Raum eine Vielzahl von DHT-Knoten mit einer damit verbundenen Vielzahl
von DHT-Zonen enthält; und
das Daten-Overlay des DHT
Objekte in der Datenstruktur aufweist, die mit den DHT-Knoten verbunden sind; und
zwischen den Objekten in der Datenstruktur eingerichtete Verknüpfungen aufweist.Computerlesbarer Speicher nach Anspruch 20, wobei jede Verknüpfung
enthält:
ein erstes Feld, das einen fest verdrahteten Zeiger bereitstellt, der von einem
ersten Objekt auf ein zweites Objekt zeigt; und
ein zweites Feld, das einen veränderlichen Zeiger bereitstellt, der von dem
ersten Objekt auf einen DHT-Knoten zeigt, der Host für das zweite Objekt ist.Computerlesbarer Speicher nach Anspruch 20, wobei
ein erstes Primitiv einen Verweis setzt, der einen Zeiger auf ein Objekt in der
DHT einrichtet;
ein zweites Primitiv ein Objekt zurückführt, auf das durch einen Zeiger
verwiesen wird; und
ein drittes Primitiv ein Objekt löscht, auf das durch einen Zeiger verwiesen
wird.Computerlesbarer Speicher nach Anspruch 20, wobei jeder Baumknoten in
dem Daten-Overlay ein Operationselement enthält, das eine Operation definiert,
die an Daten durchgeführt werden kann, die durch den Baumknoten geleitet werden.Computerlesbarer Speicher nach Anspruch 20, wobei jeder Baumknoten in
dem Daten-Overlay ein Bericht-Element enthält, das einen Bericht-Typ definiert,
der unter Verwendung des Baumknotens zu erzeugen ist.Computerlesbarer Speicher nach Anspruch 20, wobei
die erste Ebene des Baums den Baumknoten enthält, der ein Wurzelknoten für
den Baum ist; und
der Wurzelknoten der Baumknotenzone entspricht, die der gesamten Ausdehnung des
logischen Raums der DHT entspricht.Peer-To-Peer-System, das eine Vielzahl von Maschinen enthält, die
im Peer-To-Peer-Verfahren in Wechselwirkung sind, wobei es umfasst:
einen logischen Raum einer verteilten Hash-Tabelle (DHT), der eine Vielzahl von
DHT-Knoten mit einer Vielzahl damit verbundener DHT-Zonen enthält, wobei die
DHT das Einfügen und Abrufen von Objekten in das bzw. aus dem Peer-To-Peer-System
steuert;
eine Einrichtung zum Aufbauen eines Daten-Overlay als eine Datenstruktur auf dem
logischen Raum der DHT, wobei
das Daten-Overlay der DHT:
Objekte in der Datenstruktur aufweist, die mit dem DHT-Knoten verbunden sind; und
zwischen den Objekten in der Datenstruktur eingerichtete Verknüpfungen aufweist;
eine Einrichtung zum Aufbauen einer Topologie eines Baums in dem Daten-Overlay,
wobei der Baum eine Vielzahl von Ebenen hat und eine Vielzahl von Baumknoten enthält,
die mit den jeweiligen DHT-Knoten verbunden sind;
die Baumknoten einen Wurzelknoten mit einer Baumknotenzone enthalten, die dem gesamten
logischen Raum der DHT entspricht;
die Baumknotenzone des Wurzelknotens logisch in eine Vielzahl von Baumknotenzonen
unterteilt ist, die jeweils entsprechen:
der Anzahl von Baumknoten auf jeder Ebene des Baums; und
einem Teil des logischen Raums der verteilten Hash-Tabelle;
wobei jeder der Baumknoten ein Schlüsselelement enthält, das einen Schüssel
identifiziert, der mit seiner jeweiligen Baumknotenzone verbunden
ist;
eine Einrichtung, die den logischen Raum der DHT auf einer Vielzahl von Maschinen
abbildet;
wobei jede Maschine einer oder mehreren der Baumknotenzonen entspricht;
dadurch gekennzeichnet, dass
jede Maschine so eingerichtet ist, dass sie als ihren repräsentativen Knoten
aus der einen oder den mehreren Baumknotenzonen, die ihr entsprechen, den Baumknoten
auswählt, der der größten Baumknotenzone entspricht; und
jeder der repräsentativen Knoten so eingerichtet ist, dass er als seinen Elternknoten
den repräsentativen Knoten auswählt, der der repräsentative Knoten
für eine benachbarte Baumknotenzone ist, die größer ist.System nach Anspruch 29, das des Weiteren Routing-Logik umfasst, die
so konfiguriert ist, dass sie Routing von Daten durch das Daten-Overlay durchführt,
indem sie die Daten durch die Baumknoten leitet.System nach Anspruch 30, wobei die Routing-Logik so konfiguriert ist,
dass sie Routing der Daten durch das Daten-Overlay durchführt, indem sie Daten
von DHT-Knoten abruft und die Daten durch die Baumknoten bis zum Wurzelknoten des
Baums leitet.System nach Anspruch 30, wobei die Routing-Logik so konfiguriert ist,
dass sie Routing von Daten durch das Daten-Overlay durchführt, indem sie Daten
von dem Wurzelknoten des Baums über die Baumknoten zu den DHT-Knoten verbreitet.Vorrichtungen zum Aufbauen eines Peer-To-Peer-Systems, wobei die Vorrichtung
umfasst:
eine Einrichtung zum Aufbauen eines Daten-Overlay als eine Datensstruktur auf einem
logischen Raum, der in einer verteilten Hash-Tabelle (DHT) für ein Peer-To-Peer-System
enthalten ist; wobei
die DHT das Einfügen und Abrufen von Objekten in das bzw. aus dem Peer-To-Peer-System
steuert;
der logische Raum eine Vielzahl von DHT-Knoten mit einer damit verbundenen Vielzahl
von DHT-Zonen enthält; und
das Daten-Overlay der DHT aufgebaut wird, indem:
Objekte in der Datenstruktur mit den DHT-Knoten verbunden werden; und
Verknüpfungen zwischen den Objekten in der Datenstruktur eingerichtet werden;
eine Einrichtung zum Aufbauen einer Topologie eines Baums in dem Daten-Overlay,
wobei der Baum eine Vielzahl von Ebenen hat und eine Vielzahl von Baumknoten enthält,
die mit den entsprechenden DHT-Knoten verbunden sind, und
die Baumknoten einen Wurzelknoten mit einer Baumknotenzone enthalten, die dem logischen
Raum der DHT entspricht;
die Baumknotenzone des Wurzelknotens in eine Vielzahl von Baumknotenzonen unterteilt
ist, die jeweils entsprechen:
der Anzahl von Baumknoten auf jeder Ebene des Baums; und
einem Teil des logischen Raums der verteilten Hash-Tabelle;
wobei jeder der Baumknoten ein Schlüsselelement enthält, das einen Schlüssel
identifiziert, der mit seiner jeweiligen Baumknotenzone verbunden ist;
eine Einrichtung zum Abbilden einer Vielzahl von Maschinen auf dem logischen Raum
der DHT, wobei jede Maschine einer oder mehreren der Baumknotenzonen entspricht;
gekennzeichnet durch
eine Einrichtung zum Auswählen des Knotens, der der größten Baumknotenzone
entspricht, aus der einen oder den mehreren Baumknotenzonen, die einer jeweiligen
der Maschinen entsprechen, als ihren repräsentativen Knoten; und
eine Einrichtung zum Auswählen eines anderen der repräsentativen Knoten,
der der repräsentative Knoten für eine benachbarte der Baumknotenzonen
ist, die größer ist, für jeden der repräsentativen Knoten als
ihren Elternknoten.Vorrichtung nach Anspruch 33, die des Weiteren umfasst,
eine Einrichtung zum Erfassen von Metadaten an jeder der Maschinen;
eine Einrichtung zum Senden der an der Maschine erfassten Metadaten zu dem entsprechenden
repräsentativen Knoten;
eine Einrichtung zum Erfassen der durch jeden der repräsentativen Knoten empfangenen
Metadaten; und
eine Einrichtung zum Senden der durch jeden der repräsentativen Knoten erfassten
Metadaten zu den entsprechenden Elternknoten; und
eine Einrichtung zum Erfassen von an dem einzelnen Baumknoten auf der ersten Ebene
des Baums empfangenen Metadaten.Vorrichtung nach Anspruch 34, die des Weiteren umfasst:
eine Einrichtung zum Verarbeiten der an dem einzelnen Baumknoten auf der ersten
Ebene des Baums erfassten Metadaten; und
eine Einrichtung zum Senden der verarbeiteten Metadaten von dem einzelnen Baumknoten
auf der ersten Ebene des Baums zu jeder der Maschinen über die jeweiligen Elternknoten
und repräsentativen Knoten.Vorrichtung nach Anspruch 35, wobei:
die Metadaten Informationen bezüglich der Funktion jeder der Maschinen umfassen;
und
die verarbeiteten Metadaten Befehle umfassen, die die Funktion jeder der Maschinen
steuern können.Vorrichtung nach Anspruch 33, die des Weiteren umfasst:
eine Einrichtung zum Empfangen einer Heartbeat-Übertragung von jeder der Maschinen
in einer der benachbarten Baumknotenzonen an einer Maschine; und
eine Einrichtung, die, wenn eine der Heartbeat-Übertragungen nicht rechtzeitig
empfangen wird, die Abwesenheit der entsprechenden Maschine in der benachbarten
Baumknotenzone berücksichtigt, indem sie:
das Bereitstellen der DHT wiederholt;
das Aufbauen des Daten-Overlay als die Datenstruktur auf dem logischen Raum der
DHT wiederholt; und
das Aufbauen des Baums mit mehreren Ebenen in dem wieder aufgebauten Daten-Overlay
wiederholt.Verfahren nach Anspruch 37, wobei:
die Einrichtung, die berücksichtigt, des Weiteren eine Einrichtung zum Wiederholen
des Abbildens der Vielzahl von Maschinen auf dem logischen Raum der DHT umfasst;
und
die Vorrichtung des Weiteren eine Einrichtung zum Auswählen jedes der repräsentativen
Knoten und jedes der Elternknoten als eine Optimierungsfunktion der Verfügbarkeit
von Ressourcen der entsprechenden Maschinen umfasst.Vorrichtung nach Anspruch 38, wobei die Optimierungsfunktion auf Kriterien
basiert, die aus der Gruppe ausgewählt werden, die aus Netzwerkkoordinaten,
Bandbreiten-Engpass, maximaler Latenz und Varianz von Latenzen besteht, wobei die
Aufgabe mit dem größten Ressourcenbedarf durch die Maschinen mit den meisten
verfügbaren Ressourcen in dem Peer-To-Peer-System durchgeführt wird.Vorrichtung nach Anspruch 33, die des Weiteren eine Einrichtung umfasst,
die Routing von Daten durch das Daten-Overlay durchführt, indem sie Daten durch
die Baumknoten hindurch leitet.Vorrichtung nach Anspruch 40, wobei die Routing-Einrichtung eine Einrichtung
umfasst, die Routing von Daten durch das Daten-Overlay durchführt, indem sie
Daten von DHT-Knoten erfasst und die Daten durch die Baumknoten bis zu dem Wurzelknoten
des Baums leitet.Vorrichtung nach Anspruch 40, wobei die Routing-Einrichtung eine Einrichtung
enthält, die Routing von Daten durch das Daten-Overlay durchführt, indem
sie Daten von dem Wurzelknoten des Baums durch die Baumknoten zu den DHT-Knoten
verbreitet.