PatentDe  


Dokumentenidentifikation DE112005003035T5 27.12.2007
Titel Teilen einer Arbeitslast eines Knotens
Anmelder Hewlett-Packard Development Co., L.P., Houston, Tex., US
Erfinder Basu, Sujoy, Palo Alto, Calif., US;
Banerjee, Sujata, Palo Alto, Calif., US;
Sharma, Puneet, Palo Alto, Calif., US;
Lee, Sung-Ju, Palo Alto, Calif., US
Vertreter Schoppe, Zimmermann, Stöckeler & Zinkler, 82049 Pullach
DE-Aktenzeichen 112005003035
Vertragsstaaten AE, AG, AL, AM, AT, AU, AZ, BA, BB, BG, BR, BW, BY, BZ, CA, CH, CN, CO, CR, CU, CZ, DE, DK, DM, DZ, EC, EE, EG, ES, FI, GB, GD, GE, GH, GM, HR, HU, ID, IL, IN, IS, JP, KE, KG, KM, KN, KP, KR, KZ, LC, LK, LR, LS, LT, LU, LV, LY, MA, MD, MG, MK, MN, MW, MX, MZ, NA, NG, NI, NO, NZ, OM, PG, PH, PL, PT, RO, RU, SC, SD, SE, SG, SK, SL, SM, SY, TJ, TM, TN, TR, TT, TZ, UA, UG, US, UZ, VC, VN, YU, ZA, ZM, ZW, EP, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HU, IE, IS, IT, LT, LU, LV, MC, NL, PL, PT, RO, SE, SI, SK, TR, OA, BF, BJ, CF, CG, CI, CM, GA, GN, GQ, GW, ML, MR, NE, SN, TD, TG, AP, BW, GH, GM, KE, LS, MW, MZ, NA, SD, SL, SZ, TZ, UG, ZM, ZW, EA, AM, AZ, BY, KG, KZ, MD, RU, TJ, TM
WO-Anmeldetag 06.12.2005
PCT-Aktenzeichen PCT/US2005/044095
WO-Veröffentlichungsnummer 2006062964
WO-Veröffentlichungsdatum 15.06.2006
Date of publication of WO application in German translation 27.12.2007
Veröffentlichungstag im Patentblatt 27.12.2007
IPC-Hauptklasse H04L 29/08(2006.01)A, F, I, 20051206, B, H, DE

Beschreibung[de]
Technisches Gebiet

Diese Erfindung bezieht sich allgemein auf Netzwerke. Insbesondere bezieht sich die Erfindung auf ein Teilen von Arbeitslasten von Knoten in einem Netzwerk.

Hintergrund

Große Netzwerke, wie beispielsweise das Internet, die eventuell die Infrastruktur für viele Partner-zu-Partner-Systeme (Peer-to-Peer-Systeme) bereitstellen, werden nun verwendet, um eine Vielfalt von Diensten für Benutzer zu liefern. Beispielsweise können Mediendienste, wie beispielsweise Streaming und eine Umcodierung (Transcoding), Web-Dienste für elektronischen Handel, wie beispielsweise Flug- und Hotelreservierungen, oder Gitterrechendienste für eine Berechnung und für Daten über große Netzwerke verfügbar sein.

Eine grundlegende Herausforderung bei einem wirksamen Nutzen dieser Netzwerkdienste besteht darin, erwünschte Dienste in großen Netzwerken, wie beispielsweise dem Internet, effizient und schnell zu lokalisieren. Die Herausforderung eines Entdeckens von Diensten ist durch mehrere Faktoren verkompliziert. Falls beispielsweise ein zentralisierter Informationsdienst zum Erleichtern einer derartigen Entdeckung verwendet würde, wie beispielsweise ein zentralisierter Informationsdienst, der für Partner-zu-Partner-Dateiteilhabungssysteme (Peer-to-Peer-File-Sharing-Systeme) verwendet wird, ließe sich derselbe nicht ohne weiteres skalieren, wenn sich die Anzahl von verfügbaren Diensten und die Anzahl von Benutzern erhöhen. Zusätzlich weist jeder Dienst mehrere dynamische Attribute auf, z. B. Last und Latenz, die sich stets verändern und in dem Informationsdienst aktualisiert werden müssen. Die erwünschte Aktualisierungsrate kann durch einen zentralisierten Informationsdienst eventuell nicht aufrechterhalten werden. Ferner kann ein Bereitstellen eines Informationsdienstes mit einer minimalen Ausfallzeit mehrere Systemadministratoren für eine Wartung erfordern und wäre kostspielig. Schließlich sollte der Informationsdienst für schnellere Ansprechzeiten ortsbewusst sein. Beispielsweise sollte eine Abfrage, die eine Anforderung nach einem erwünschten Dienst umfasst, an einen Knoten in der Netzwerknähe des Knotens gerichtet sein, der die Abfrage anfänglich sendet, und die Dienste, die als eine Antwort auf die Abfrage zurückgegeben werden, sollten sich ebenfalls in der Netzwerknähe des abfragenden Knotens befinden.

Falls ein Informationsdienst verfügbar gemacht würde, sollte der Informationsdienst zusätzlich Selbstverwaltungseigenschaften umfassen, wie beispielsweise Arbeitslastausgleichs- und andere Verwaltungsaufgaben zum Minimieren einer kostspieligen, manuellen fehleranfälligen Verwaltung.

Zusammenfassung

Gemäß einem Ausführungsbeispiel wird aus einem Satz von Knoten in einem Partner-zu-Partner-Netzwerk ein Knoten identifiziert, der die höchsten Arbeitslasten in dem Partner-zu-Partner-Netzwerk aufweist. Die Arbeitslast des Knotens wird mit einem anderen Knoten unter Verwendung eines Teilungsalgorithmus geteilt.

Kurze Beschreibung der Zeichnungen

Verschiedene Merkmale der Ausführungsbeispiele können vollständiger erkannt werden, wenn dieselben mit Bezug auf die folgende detaillierte Beschreibung der Ausführungsbeispiele in Verbindung mit den zugehörigen Figuren besser verständlich werden, in denen:

1 ein Partner-zu-Partner-Netzwerk gemäß einem Ausführungsbeispiel darstellt;

2 ein Überlagerungsnetzwerk in einem Partner-zu-Partner-Netzwerk gemäß einem Ausführungsbeispiel darstellt;

3 einen Attributraum und Attributteilräume gemäß einem Ausführungsbeispiel darstellt;

4 in einem Informationsdienstknoten gespeicherte Informationen gemäß einem Ausführungsbeispiel darstellt;

5 ein Routen einer Abfrage gemäß einem Ausführungsbeispiel darstellt;

6 ein Routen einer Anzeige gemäß einem Ausführungsbeispiel darstellt;

7 eine Austauschphase und eine Verbreitungsphase gemäß einem Ausführungsbeispiel darstellt;

8A-D Routingtabellen für Informationsdienstknoten gemäß einem Ausführungsbeispiel darstellen;

9A-C Beispiele von Routingtabellen und Attributteilräumen darstellen, die aus einer Arbeitslastaufteilung resultieren, gemäß einem Ausführungsbeispiel;

10 Informationsdienstknoten in der Anfangsphase des globalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel darstellt;

11A-B Beispiele eines Anwendens eines globalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel darstellen;

12 ein Flussdiagramm eines Verfahrens zum Anwenden eines lokalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel darstellt;

13 ein Flussdiagramm eines Verfahrens zum Anwenden eines globalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel darstellt;

14 ein Beispiel eines Verwendens von Latenzberichten darstellt, um einen Informationsdienstknoten für eine Nachbildung auszuwählen;

15 ein Flussdiagramm eines Verfahrens zum Reproduzieren eines Informationsdienstknotens gemäß einem Ausführungsbeispiel darstellt; und

16 ein Computersystem gemäß einem Ausführungsbeispiel darstellt.

Detaillierte Beschreibung der Ausführungsbeispiele

Zu Einfachheits- und Darstellungszwecken sind die Prinzipien der Ausführungsbeispiele beschrieben. Ein Durchschnittsfachmann auf dem Gebiet würde jedoch ohne weiteres erkennen, dass die gleichen Prinzipien gleichermaßen auf alle Typen von Netzwerksystemen anwendbar sind und in denselben implementiert sein können, und dass jegliche derartigen Variationen nicht von der wahren Wesensart und dem Schutzbereich der Ausführungsbeispiele abweichen. In der folgenden detaillierten Beschreibung wird zudem Bezug auf die zugehörigen Zeichnungen genommen, die spezifische Ausführungsbeispiele darstellen. Elektrische, mechanische, logische und strukturelle Veränderungen können an den Ausführungsbeispielen vorgenommen werden, ohne von der Wesensart und dem Schutzbereich der Ausführungsbeispiele abzuweichen.

Gemäß einem Ausführungsbeispiel ist ein verteilter Informationsdienst zum Entdecken von Diensten in einem Netzwerk vorgesehen. Der Informationsdienst versieht Benutzer mit Informationen über Dienste, die über das Netzwerk verfügbar sind. Ein Benutzer fragt den Informationsdienst nach Informationen über erwünschte Dienste ab, die über das Netzwerk verfügbar sind. Der Informationsdienst kann mit einer Liste von Dienstknoten in dem Netzwerk antworten, die wirksam sind, um den erwünschten Dienst zu liefern.

Der Informationsdienst ist ein verteilter Informationsdienst, der eine Mehrzahl von Informationsdienstknoten in einem Partner-zu-Partner-Netzwerk umfasst, die Informationen über die verfügbaren Dienste speichern. Ungleich herkömmlichen Partner-zu-Partner-Netzwerken, bei denen die Knoten dazu neigen, vorübergehend zu sein, sind die Informationsdienstknoten stabile Knoten in einer Partner-zu-Partner-Architektur, bei denen es wahrscheinlicher ist, dass dieselben für eine erweiterte Zeitdauer in dem Partner-zu-Partner-Netzwerk bleiben, anstatt für eine kurze Zeitdauer dem Partner-zu-Partner-Netzwerk beizutreten. Einem Durchschnittfachmann auf dem Gebiet ist ersichtlich, dass das Partner-zu-Partner-Netzwerk ein Beispiel eines Organisierens der Informationsdienstknoten in einer verteilten Architektur ist und irgendein Typ einer verteilten Architektur verwendet werden kann.

Die verteilte Beschaffenheit des Informationsdiensts minimiert die Engstelle, die einem Verwenden eines herkömmlichen, zentralen Informationsdepots zugeordnet ist, das alle Abfragen nach Informationen handhabt, und verbessert somit Abfrageantwortzeiten. Ein Überlagerungsnetzwerk für das Partner-zu-Partner-Netzwerk wird verwendet, um Abfragen und Informationen über Dienste in dem verteilten Informationsdienst zum Erleichtern der Entdeckung verfügbarer Dienste in einem Netzwerk effizient zu routen.

Wie hierin verwendet, bezieht sich ein Dienst auf irgendeine Funktion, die an einer Eingabe wirksam ist und eine Ausgabe erzeugt. Beispiele von Diensten umfassen eine Umcodierung, eine Sprachübersetzung, eine Verschlüsselung, eine Bildreparatur und -analyse, eine Fehlerkorrektur, ein Umwandeln eines Inhalts in unterschiedliche Sprachen, etc. Ein Dienst kann ferner aus mehreren Diensten gebildet sein. Beispielsweise kann eine Ausgabe eines Dienstes für so viele Zwischendienste, wie verwendet werden, um den Dienst zusammenzusetzen, die Eingabe eines anderen Dienstes sein, usw. Ein Beispiel eines zusammengesetzten Dienstes kann einen Mediendienst umfassen, der eine Video-Streaming-Dienst-Eingabe in einem Umcodierungsdienst umfasst, derart, dass ein Benutzer Streaming-Video in einem Format empfangen kann, das an einem speziellen Endbenutzergerät betrachtet werden kann.

Andere Typen von Diensten umfassen Berechnungsdienste, Datenspeicherungsdienste und Gitterrechendienste, die ein gemeinschaftliches Verwenden von Computerressourcen einschließen können. Ein Gitterrechendienst beispielsweise ermöglicht Benutzern einen Zugriff auf Rechendienste basierend auf Spezifikationen, wie beispielsweise Anwendungserfordernissen.

1. Systemübersicht

1 stellt ein Netzwerk 100 dar, das Benutzerknoten 110, Dienstknoten 120 und Informationsdienstknoten 130 umfasst. Ein Beispiel des Netzwerks 100 umfasst ein Netzwerk auf großer Skala, wie beispielsweise das Internet, bei dem Dienste Benutzern verfügbar gemacht werden. Die Ausführungsbeispiele können jedoch in kleineren Netzwerken implementiert sein, die Dienste liefern. Benutzerknoten können irgendeinen Knoten umfassen, der wirksam ist, um einen Dienst zu empfangen. Typischerweise legt ein Benutzerknoten eine Abfrage einem Informationsdienst zum Bestimmen vor, ob ein Dienst, der durch einen Benutzer gewünscht wird, in dem Netzwerk 100 verfügbar ist, und falls der Dienst verfügbar ist, welcher Dienstknoten zum Empfangen des Dienstes zu kontaktieren ist. Die Dienstknoten 120 umfassen Knoten, die wirksam sind, um Dienste zu liefern. Nachdem ein Benutzerknoten einen Dienstknoten identifiziert, der wirksam ist, um durch ein Abfragen des Informationsdienstes einen erwünschten Dienst zu liefern, empfängt der Benutzerknoten den Dienst von dem Dienstknoten, der den erwünschten Dienst liefert. Ein Knoten ist irgendeine Vorrichtung, die Nachrichten über das Netzwerk senden und/oder empfangen kann und die typischerweise wirksam ist, um eine gewisse Art einer Datenverarbeitung durchzuführen. Beispiele von Knoten umfassen Router, Server und Endbenutzergeräte, wie beispielsweise PDAs, Personalcomputer, Laptops und Mobiltelefone.

Gemäß einem Ausführungsbeispiel wird der Informationsdienst durch die Informationsdienstknoten 130 geliefert. Die Informationsdienstknoten 130 ermöglichen die Entdeckung von Diensten in dem Netzwerk 100. Zusätzlich zu einer Dienstentdeckung gleichen die Informationsdienstknoten 130 Arbeitslasten unter denselben unter Verwendung mehrerer Techniken aus, die in der ebenfalls anhängigen US-Patentanmeldung (Anwaltsaktenzeichen Nr. 200500031-1) mit dem Titel „Splitting Workload Of A Node" von Sujoy Basu et al. und der ebenfalls anhängigen US-Patentanmeldung (Anwaltsaktenzeichen Nr. 200500030-1) mit dem Titel „Determining Highest Workloads For Nodes In A Network" von Sujoy Basu et al. beschrieben sind, die beide durch Bezugnahme in ihrer Gesamtheit aufgenommen sind.

Wie es oben beschrieben ist, führt der Informationsdienst, einschließlich der Informationsdienstknoten 130, Funktionen durch, die der Entdeckung von Diensten in dem Netzwerk 100 zugeordnet sind. Zwei wichtige Funktionen umfassen das Speichern von Informationen über verfügbare Dienste und das Ansprechen auf Abfragen über verfügbare Dienste. Die Informationsdienstknoten 130 sind in einem Partner-zu-Partner-Netzwerk, in 2 gezeigt, in dem Netzwerk 100 vorgesehen. Das Partner-zu-Partner-Netzwerk 200 und ein Überlagerungsnetzwerk 210 für das Partner-zu-Partner-Netzwerk 200 werden unter anderem zum Speichern von Informationen über Dienste in den Informationsdienstknoten 130, zum Routen unter den Informationsdienstknoten 130 und zum Ansprechen auf Abfragen verwendet.

Wie es in 2 gezeigt ist, überlagert das Überlagerungsnetzwerk 210 das darunter liegende Partner-zu-Partner-Netzwerk 200. Das Überlagerungsnetzwerk 210 ist eine logische Darstellung des Partner-zu-Partner-Netzwerks 200 und ist wirksam, um Abfragen und Dienstinformationen basierend auf Attributen und Attributbereichen effizient zu routen, die verwendet werden, um Dienste zu definieren, wie es unten detailliert beschrieben ist. 2 stellt die Informationsdienstknoten 130, die in dem Netzwerk 100 zentral positioniert sind, und die Benutzerknoten 110 sowie die Dienstknoten 120, die in dem Überlagerungsnetzwerk 210 vorgesehen sind, zu Zwecken eines Darstellens dar, dass das Partner-zu-Partner-Netzwerk 200 die Informationsdienstknoten 130 umfasst und dass die Benutzerknoten 110 und die Dienstknoten 120 mit den Informationsdienstknoten 130 in dem Partner-zu-Partner-Netzwerk 200 kommunizieren, wenn es erforderlich ist. Die Informationsdienstknoten 130 können in mehreren unterschiedlichen Bereichen des Netzwerks 100 vorgesehen sein, um eine Latenz zu minimieren, z. B. die Länge von Zeit, die ein Benutzerknoten benötigt, um eine Antwort auf eine Abfrageantwort zu bekommen.

2. Der Attributraum und Attributteilräume

Ein Dienst ist durch ein Spezifizieren von Werten für verschiedene Dienstattribute gekennzeichnet. Zum Beispiel kann ein Computerdienst durch die Werte von Attributen gekennzeichnet sein, wie beispielsweise einem Betriebssystem und Anwendungen, einer Menge an physischem Speicher, einem Plattenraum und einer Netzwerkbandbreite.

Der Informationsdienst verfolgt diese Attribute und Attributwerte. Jeder Informationsdienstknoten weist die Verantwortung zum Verfolgen eines bestimmten Satzes von Werten für eines oder mehrere der Attribute auf. Die Kombination der Sätze von Attributwerten für alle verfolgten Attribute bildet den Attributteilraum, der durch diesen Informationsdienstknoten verfolgt wird.

Der Informationsdienst, der aus den Informationsdienstknoten 130 gebildet ist, umfasst einen Attributraum 300, der in 3 gezeigt ist. Der Attributraum 300 umfasst alle Informationen über verfügbare Dienste in dem Partner-zu-Partner-Netzwerk 100. Der Attributraum 300 ist eine logische Darstellung der Informationen, die in dem Informationsdienst gespeichert sind.

Der Attributraum 300 ist unter den Informationsdienstknoten 130 verteilt. Lediglich drei Informationsdienstknoten 130a-c sind in 3 zu Darstellungszwecken gezeigt. Jedem der Informationsdienstknoten 130 ist eine Verantwortung für einen Attributteilraum in dem Attributraum 300 zugewiesen. Jeder Attributteilraum ist speziellen Attributen und Attributwerten zugeordnet. Bei dem Informationsdienst ist ein Dienst durch vorbestimmte Attribute und Attributwerte definiert, die je nach Dienst variieren. Attribute und Attributwerte sind jedem der Informationsdienstknoten 130 zugewiesen. Ein Dienst ist bestimmt, um in einen Attributteilraum eines Informationsdienstknotens zu fallen, und somit sind Informationen über diesen Dienst letztendlich in diesem Informationsdienstknoten gespeichert, falls die Attribute und Attributwerte für den Dienst mit den Attributen und Attributwerten übereinstimmen, die dem Attributteilraum für den Informationsdienstknoten zugewiesen sind. Beispielsweise kann ein Attributteilraum Attributwerte für ein spezielles Attribut umfassen. Falls ein Dienst unter Verwendung eines oder mehrerer Attributwerte definiert ist, die die Attributwerte eines Attributteilraums schneiden, kann der Dienst in den Attributteilraum fallen. Ein Beispiel, das die Attributteilräume weiter beschreibt, lautet wie folgt. Eine Liste von vorbestimmten Attributen zum Definieren aller Dienste in dem Netzwerk 100 kann einen Speicher, einen Plattenraum, eine Durchschnittslast, ein Betriebssystem, Anwendungen, eine Dienstbetriebszeit und eine Ansprechzeit umfassen. Ein Gitterrechendienst kann das gemeinschaftliche Verwenden von Computerressourcen umfassen. Ein Gitterrechendienst, z. B. ein Gitterrechendienst 1, kann basierend auf den Computerressourcen definiert sein, die gemeinschaftlich verwendet werden können. Der Gitterrechendienst 1 ist unter Verwendung der folgenden Attributwerte definiert:

Tabelle 1 von Attributen und Attributwerten für Gitterrechendienst 1

  • Speicher: 1 GB
  • Plattenraum: 2,5-5 GB
  • Betriebssystem: Linux 2.4
  • Durchschnittslast: 0
  • Anwendungen: Maya, Renderman
  • Dienstbetriebszeit: 99,5 %
  • Ansprechzeit: <= 20 ms

Wie es in 3 gezeigt ist, ist dem Informationsdienstknoten 130a der Attributteilraum zugewiesen, der durch die Attributwerte von Speicher <= 1 GB definiert ist. Eine Anzeige 310 für den Gitterrechendienst 1, der die Attributwerte in Tabelle 1 umfasst, ist an dem Informationsdienstknoten 130a gespeichert, weil der Informationsdienstknoten 130a alle Anzeigen speichert, die einen Speicherattributwert <= 1 GB aufweisen.

Eine Anzeige umfasst die Attribute und Attributwerte, die verwendet werden, um einen speziellen Dienst zu definieren. Ein vorbestimmter Satz von Attributen kann verwendet werden, um alle Dienste in dem Netzwerk 100 zu definieren. Jeder der Dienstknoten 120 misst oder bestimmt anderweitig die Attributwerte für jedes der Attribute in dem vorbestimmten Satz von Attributen. Jeder der Dienstknoten 120 sendet ferner regelmäßig die Anzeigen desselben zu dem Informationsdienst. Das Überlagerungsnetzwerk 210 routet die Anzeigen automatisch zu dem geeigneten Informationsdienstknoten, der den Attributteilraum besitzt, in den die Anzeige fällt. Die Attribute und Attributwerte, die oben für den Gitterrechendienst 1 gezeigt sind, sind ein Beispiel der Informationen in der Anzeige 130 für den Gitterrechendienst 1. Ein Dienstknoten, der den Gitterrechendienst 1 liefert, misst oder bestimmt anderweitig beispielsweise regelmäßig die Attributwerte für den Gitterrechendienst 1, die in Tabelle 1 gezeigt sind, und überträgt die Anzeige 310, die die Attributwerte umfasst, zu dem Überlagerungsnetzwerk 210 für eine Speicherung in dem Informationsdienstknoten, der den Attributteilraum besitzt, in den die Anzeige fällt. Bei dem in 3 gezeigten Beispiel routeten die Informationsdienstknoten 130 eine Anzeige 310 für den Gitterrechendienst 1 zu dem Informationsdienstknoten 130a, weil der Informationsdienstknoten 130a alle Informationen über Dienste speichert, die zu dem Überlagerungsnetzwerk 210 übertragen wurden und einen Attributwert innerhalb Speicher <= 1 GB aufweisen. Das heißt, der Gitterrechendienst 1 ist unter Verwendung eines Attributwerts von 1 GB für das Speicherattribut definiert und der Attributwert 1 GB schneidet den Attributbereich von Speicher <= 1 GB für den Attributteilraum des Informationsdienstknotens 130a, d. h. ist in demselben enthalten. Somit fällt der Gitterrechendienst 1 in den Attributteilraum des Informationsdienstknotens 130a.

Die Attribute, die oben für den Gitterrechendienst 1 gezeigt sind, sind Beispiele des vorbestimmten Satzes von Attributen, der verwendet wird, um Dienste in dem Netzwerk 100 zu definieren. Einem Durchschnittfachmann auf dem Gebiet ist ersichtlich, dass andere Attribute verwendet werden können, um die verfügbaren Dienste zu definieren. Ferner kann ein vorbestimmter Satz von Attributen verwendet werden, um die Dienste zu definieren. Es kann jedoch jeder Dienst unterschiedliche Attributwerte aufweisen, die regelmäßig gemessen und in dem Informationsdienstknoten gespeichert werden, der den entsprechenden Attributteilraum aufweist.

Abfragen werden auf ähnliche Weise in dem Partner-zu-Partner-Netzwerk 200 gespeichert. Beispielsweise kann das Überlagerungsnetzwerk 210, das in 2 gezeigt ist, eine Abfrage 320 empfangen, die in 3 gezeigt ist, und eine Anforderung nach einem Dienst mit einem Attribut von Speicher > 1 GB und Plattenraum = 2 GB umfassen. Die Abfrage 320 fällt in den Attributteilraum, den der Informationsdienstknoten 130b besitzt. Somit wird die Abfrage 320 durch das Überlagerungsnetzwerk 210 hindurch zu dem Informationsdienstknoten 130b geroutet. Die Abrage 320 wird automatisch zu dem Informationsdienstknoten 130b geroutet und in demselben gespeichert und der Informationsdienstknoten 130b spricht auf die Abfrage durch ein Durchsuchen der Anzeigen, die in dem Informationsdienstknoten 130b gespeichert sind, und ein Senden jeglicher Übereinstimmungen zu dem Knoten an, der den Dienst anfordert.

Das Überlagerungsnetzwerk 210, das den Attributraum 300 umfasst, unterstützt Bereichsabfragen. Bereichsabfragen umfassen einen oder mehrere Attributbereiche, die einen erwünschten Dienst identifizieren. Die Informationsdienstknoten 130 sind unter Verwendung des Überlagerungsnetzwerks 210 wirksam, um Bereichsabfragen zu einem Attributteilraum zu routen, der den Bereich von Attributwerten oder einen Attributteilraum umfasst, der den Bereich von Attributwerten in der Abfrage schneidet. Zusätzlich kann die Abfrage mehrere Attributbereiche umfassen und kann die Abfrage zu mehr als einem Informationsdienstknoten geroutet werden, der einen Attributteilraum aufweist, der einen Attributbereich umfasst oder schneidet.

3. Informationsdienstknoten

4 stellt ein Beispiel von einigen der Informationen dar, die in einem Informationsdienstknoten, wie beispielsweise dem Informationsdienstknoten 130b, gespeichert sind. Der Informationsdienstknoten 130b umfasst einen Speichercache 410, eine Überlagerungsroutingtabelle 420 und einen Nachbildungspositionscache 440. Der Speichercache 410 speichert lokale Abfragen 401 und globale Abfragen 402. Der Speichercache 410 speichert ferner lokale Anzeigen 405 und globale Anzeigen 406. Die globalen Abfragen 402 umfassen Abfragen, die durch das Überlagerungsnetzwerk 210 hindurch zu dem Informationsdienstknoten 130b geroutet werden, weil die Abfragen in den Attributteilraum fallen, den der Informationsspeicherknoten 130b besitzt. Die Abfrage 320, die in 3 gezeigt ist, ist ein Beispiel einer globalen Abfrage.

Die lokalen Abfragen 401 umfassen irgendeine Abfrage, die durch den Informationsdienstknoten 130b empfangen wird. Zum Beispiel kann der Informationsdienstknoten 130a eine Abfrage empfangen und die Abfrage zu dem Bestimmungsort derselben in dem Überlagerungsnetzwerk 210 weiterleiten, der den Informationsdienstknoten umfassen kann, der den Attributteilraum besitzt, in den die Abfrage fällt. Vor einem Weiterleiten der Abfrage zu dem Bestimmungsort derselben hin wird die Abfrage in dem Speichercache 410 lokal Cache-gespeichert. Ferner durchsucht der Informationsdienstknoten 130b vor einem Weiterleiten der Abfrage zu dem Bestimmungsort derselben hin die lokalen Anzeigen 405, die in dem Speichercache 410 gespeichert sind, um zu bestimmen, ob irgendwelche Übereinstimmungen mit der Abfrage gefunden werden. Falls eine Übereinstimmung gefunden wird, spricht der Informationsdienstknoten 130b auf die Abfrage beispielsweise durch ein Senden der übereinstimmenden Anzeige zu dem Knoten an, der den Dienst und den zugeordneten Dienstknoten anfordert. Der Informationsdienstknoten 130b kann fortfahren, die Abfrage zu dem Bestimmungsort derselben zu routen, weil der Bestimmungsort Anzeigen für Dienste umfassen kann, die mit der Abfrage übereinstimmen und die durch Dienstknoten näher an dem Knoten geliefert werden, der den Dienst anfordert. Alternativ leitet der Informationsdienstknoten 130b die Abfrage eventuell nicht weiter, falls eine Übereinstimmung lokal Cache-gespeichert ist.

Die globalen Anzeigen 406 umfassen Anzeigen, die durch das Überlagerungsnetzwerk 210 hindurch zu dem Informationsdienstknoten 130b geroutet werden, weil die Anzeigen in den Attributteilraum fallen, den der Informationsspeicherknoten 130b besitzt. Die Anzeige 310, die in 3 gezeigt ist, ist ein Beispiel einer globalen Anzeige für den Informationsdienstknoten 130a.

Die lokalen Anzeigen 405 umfassen irgendeine Anzeige, die durch den Informationsdienstknoten 130a empfangen wird. Beispielsweise kann der Informationsdienstknoten 130a eine Anzeige empfangen und die Anzeige zu dem Bestimmungsort derselben hin weiterleiten. Diese Anzeigen sind lokal in dem Speichercache 410 Cache-gespeichert und können durchsucht werden, um schnellere Ansprechzeiten für Abfragen zu liefern, falls in dem lokalen Cache Übereinstimmungen gefunden werden.

Der Informationsdienstknoten 130b umfasst ferner die Überlagerungsroutingtabelle 420. Die Überlagerungsroutingtabelle 420 umfasst die folgenden Felder: Ebene 421, IP-Adresse 422, Wahrscheinlichkeit 423 und Attributbereich 424. Die Ebene 421 ist im Allgemeinen der Anzahl von Malen zugeordnet, die der Informationsdienstknoten 130b die Arbeitslast desselben mit einem anderen Informationsdienstknoten geteilt hat. Wenn der Informationsdienstknoten 130b die Arbeitslast desselben mit einem anderen Informationsdienstknoten teilt, wird ein neuer Eintrag in der Routingtabelle in dem Informationsdienstknoten 130b auf einer größeren Ebene erzeugt als der bestehenden höchsten Ebene in der Routingtabelle. Beispielsweise wurden die Einträge 431 und 432 auf einer Ebene 1 erzeugt, als der Informationsdienstknoten 130b die Arbeitslast desselben mit den Informationsdienstknoten 130c teilte. Der Eintrag 433 wurde auf einer Ebene 2 erzeugt, als der Informationsdienstknoten 130b nachfolgend die Arbeitslast desselben mit dem Informationsdienstknoten 130d teilte. Eine Arbeitslastteilung kann durchgeführt werden, wenn eine Bestimmung vorgenommen wird, dass ein Informationsdienstknoten im Vergleich zu anderen Informationsdienstknoten in dem Überlagerungsnetzwerk 210 eine hohe Arbeitslast aufweist. Die Wahrscheinlichkeiten 423 geben die Wahrscheinlichkeit an, dass ein Informationsdienstknoten die erwünschten Daten aufweisen wird. Zum Beispiel gibt der Eintrag 430 an, dass der Informationsdienstknoten 130a immer anzeigen mit Speicher <= 1 GB speichert, und gibt der Eintrag 431 an, dass der Informationsdienstknoten 130c immer Anzeigen mit Plattenraum <= 2 GB speichert. Der Informationsdienstknoten 130c weist jedoch eine Wahrscheinlichkeit von 50 % eines Speicherns von Anzeigen mit Plattenraum <= 5 GB auf. Ein Erzeugen der Einträge in den Routingtabellen und die Wahrscheinlichkeiten sind detaillierter in den US-Patentanmeldungen beschrieben, die oben durch Bezugnahme aufgenommen wurden.

Das IP-Adressfeld 422 in der Routingtabelle 420 ist zu einem Identifizieren des Bestimmungsorts eines Informationsdienstknotens in einem speziellen Eintrag vorgesehen. Falls beispielsweise der Informationsdienstknoten 130b eine Anzeige empfängt und bestimmt, dass die Anzeige ein Speicherattribut < 1 GB aufweist, verwendet der Informationsdienstknoten 130b den Eintrag 430, um die Anzeige zu dem nächsten Bestimmungsort derselben zu routen, z. B. dem Informationsdienstknoten 130a. Die IP-Adresse des Informationsdienstknotens 130a kann in dem IP-Adressfeld des Eintrags 430 vorgesehen sein und der Informationsdienstknoten 130b verwendet ein IP-Routing, um die Nachricht zu dem Informationsdienstknoten 130a in dem Netzwerk 200 zu übertragen.

Der Nachbildungspositionscache 440 speichert Informationen, die der Anzahl von Malen zugeordnet sind, die jeder Dienstknoten kontaktiert wird, und Latenzen für die Dienstknoten, die kontaktiert wurden. Eine Nachbildung ist eine Kopie eines Informationsdienstknotens. Zum Beispiel kann ein Informationsdienstknoten bei einer neuen Position in dem Netzwerk 100 dupliziert sein, falls bestimmt wird, dass der ursprüngliche Informationsdienstknoten häufig durch Benutzerknoten in einem Bereich des Netzwerks 100 kontaktiert wurde und/oder Benutzerknoten, die Nachrichten, wie beispielsweise Antworten auf Abfragen, von dem ursprünglichen Informationsdienstknoten empfangen, hohe Latenzen zu dem Informationsdienstknoten erfahren haben. Der Informationsdienstknoten 130b kann die Informationen in dem Nachbildungspositionscache 440 verwenden, um zu bestimmen, ob eine Nachbildung in einem anderen Bereich des Netzwerks 100 hinzuzufügen ist, um eine Latenz zu reduzieren.

4. Routing

5 stellt ein Beispiel eines Routens einer Abfrage 501 in dem Überlagerungsnetzwerk 210 dar. Ein Benutzerknoten 110a überträgt die Abfrage 501 zu einem Informationsdienstknoten, z. B. dem Informationsdienstknoten 130a, in dem Überlagerungsnetzwerk 210. Bei einem Beispiel kann der Informationsdienstknoten, mit dem der Benutzerknoten 110aeinen anfänglichen Kontakt in dem Überlagerungsnetzwerk 210 herstellt, basierend auf einer Netzwerknähe ausgewählt sein. Während eines Initialisierungsschritts, wenn der Benutzerknoten 110a dem Partner-zu-Partner-Netzwerk 100 beitritt, empfängt beispielsweise der Benutzerknoten 110a eine Nachricht von einem Informationsdienstknoten, die die IP-Adresse des Informationsdienstknotens in enger Netzwerknähe zu dem Benutzerknoten 110a angibt. Ein Beispiel eines Bestimmens von Positionsinformationen für Knoten unter Verwendung von Abständen, die basierend auf einer Netzwerkmetrik gemessen sind, wie beispielsweise einer Latenz, einer Anzahl von Sprüngen, etc., ist in der US-Patentanmeldung Seriennummer 10/767,285, eingereicht am 30. Januar 2004 und mit dem Titel „Selecting Nodes Close To Another Node In A Network Using Location Information For The Nodes" von Zhichen Xu et al. beschrieben, die an die Anmelderin der vorliegenden Erfindung übertragen ist. Die Positionsinformationen werden verwendet, um eine Netzwerknähe zu anderen Knoten in dem Netzwerk zu bestimmen, und können verwendet werden, um einen nächstgelegenen Informationsdienstknoten auszuwählen. Andere Techniken zum Bestimmen von Abständen und Positionsinformationen in einem Netzwerk können ebenfalls verwendet werden.

Nachdem der Benutzerknoten 110a einen Informationsdienstknoten in enger Nähe identifiziert, z. B. den Informationsdienstknoten 130a, überträgt der Benutzerknoten 110b die Abfrage 501 zu dem Informationsdienstknoten 130a. Die Abfrage 501 umfasst Attributwerte, die einen Dienst definieren, der durch den Benutzerknoten 110a gewünscht wird. Die Attributwerte können ein Bereich oder ein einziger Wert sein. Bei diesem Beispiel umfasst die Abfrage 501 die folgenden Attributwerte:

Tabelle 2 der Attribute und Attributwerte für die Abfrage 501

  • Speicher: 2 GB
  • Plattenraum: 10 GB
  • Betriebssystem: Linux 2.4
  • Ansprechzeit: 50-100 ms

Der Informationsdienstknoten 130a empfängt die Abfrage 501. Der Attributteilraum für den Informationsdienstknoten 130a umfasst Speicher <= 1 GB. Die Abfrage 501 umfasst einen Attributwert von 2 GB für einen Speicher. Der Attributwert von 2 GB ist nicht in dem Attributbereich von Speicher <= 1 GB für den Attributteilraum des Informationsdienstknotens 130a enthalten und somit fällt die Abfrage 501 nicht in den Attributteilraum des Informationsdienstknotens 130a.

Der Informationsdienstknoten 130a identifiziert einen Informationsdienstknoten aus der Routingtabelle desselben, der die Attributwerte der Abfrage 501 umfasst. Zum Beispiel beginnt der Informationsdienstknoten 130a mit dem Eintrag auf niedrigster Ebene, z. B. Ebene 0, und durchsucht die Routingtabelle desselben nach einem Eintrag, der Attributwerte umfasst, die die Attributwerte in der Abfrage 501 schneiden. Ein Eintrag 510 ist gezeigt, der Folgendes umfasst: Ebene 0, IP-Adresse für den Informationsdienstknoten 130b, Wahrscheinlichkeit von 1 und Speicher > 1 GB. Basierend auf dem Eintrag 510 überträgt der Informationsdienstknoten 130a die Abfrage 501 zu dem Informationsdienstknoten 130b. Der Attributteilraum für den Informationsdienstknoten 130b umfasst Ansprechzeit < 20 ms, was in dem Ansprechzeitbereich von 50-100 ms nicht enthalten ist, der in der Abfrage 501 spezifiziert ist. Somit durchsucht der Informationsdienstknoten 130d die Routingtabelle desselben und findet beispielsweise den Eintrag 511. Der Eintrag 511 identifiziert den Informationsdienstknoten 130d und die Abfrage 501 wird an den Informationsdienstknoten 130d übertragen. Der Informationsdienstknoten 130d weist einen Attributteilraum auf, der die Attributwerte der Abfrage 501 umfasst, und somit fällt die Abfrage 501 in diesen Attributteilraum. Der Informationsdienstknoten 130a bestimmt, ob irgendwelche Anzeigen, die in dem globalen Cache desselben gespeichert sind, die Abfrage erfüllen. Ein Dienst muss eventuell beispielsweise alle Attributwerte aufweisen, die in der Abfrage 501 spezifiziert sind, damit derselbe als eine Übereinstimmung betrachtet wird. Falls eine Übereinstimmung gefunden wird, spricht der Informationsdienstknoten 130a auf die Abfrage 501 durch ein Senden der Anzeigen, einschließlich beispielsweise der IP-Adresse des Dienstknotens, der den Dienst liefert, an den Benutzerknoten 110a an. Der Informationsdienstknoten 130a kann ferner eine Nachricht an den Dienstknoten für die Anzeige, zusammen mit der IP-Adresse des Benutzerknotens 110, senden, die angibt, dass der Benutzerknoten 110a den Dienst anfordert, der in der Anzeige beschrieben ist. Die Abfrage 501 ist ferner in dem globalen Cache des Informationsdienstknotens 130c gespeichert.

Die Informationsdienstknoten 130a und 130b können eine Kopie der Abfrage 501 in dem lokalen Cache derselben vor einem Weiterleiten der Abfrage 501 speichern. Ferner können die Informationsdienstknoten 130a und 130b bestimmen, ob irgendwelche Anzeigen, die in dem lokalen Cache derselben gespeichert sind, die Abfrage 501 erfüllen, bevor die Abfrage weitergeleitet wird. Falls eine Übereinstimmung gefunden wird, kann der Informationsdienstknoten 130a durch ein Senden der Anzeige, einschließlich beispielsweise der IP-Adresse des Dienstknotens, der den Dienst liefert, an den Benutzerknoten 110a auf die Abfrage 501 ansprechen. Der Informationsdienst 130a kann ferner eine Nachricht zusammen mit der IP-Adresse des Benutzerknotens 110a, die angibt, dass der Benutzerknoten 110a den Dienst in der Anzeige anfordert, an den Dienstknoten senden, der den Dienst liefert, der in der Anzeige beschrieben ist.

Bei dem oben mit Bezug auf 5 beschriebenen Beispiel wird die Abfrage 501 zu dem Informationsdienstknoten 130d geroutet, weil die Abfrage 501 in den Attributteilraum des Informationsdienstknotens 130d fällt. Die Abfrage 501 kann weiterhin zu anderen Informationsdienstknoten geroutet werden, die eventuell Anzeigen umfassen, die mit der Abfrage 501 übereinstimmen. Zum Beispiel kann ein weiterer Informationsdienstknoten den folgenden Attributteilraum umfassen: Speicher > 1 GB, Plattenraum > 5 GB, Ansprechzeit >= 20 ms und Betriebssystem einschließlich Linux 1.0-2.5. Der Informationsdienstknoten 130d kann die Abfrage 501 zu dem Informationsdienstknoten routen, der den oben beschriebenen Attributteilraum umfasst, weil die Abfrage 501 auch in diesen Attributteilraum fällt. Somit kann der Benutzerknoten 110a Suchergebnisse von mehreren Informationsdienstknoten empfangen, einschließlich Informationsdienstknoten, die Übereinstimmungen in den lokalen Caches derselben finden, und der Benutzerknoten 110a kann einen Dienstknoten zum Empfangen des erwünschten Dienstes auswählen.

Zusätzlich ist zu beachten, dass das Überlagerungsnetzwerk 210 Bereichsabfragen unterstützt. Die Abfrage 501 umfasst einen Bereich von Attributwerten, 50-100 ms, für das Attribut Ansprechzeit. Die Abfrage 501 kann einen oder mehrere Bereiche umfassen und wird zu Informationsdienstknoten geroutet, die den Bereich schneiden. Zum Beispiel kann die Abfrage 501 zu einem Attributteilraum geroutet werden, der irgendeinen der Attributwerte 50-100 ms umfasst.

6 stellt ein Routing einer Anzeige 601 in dem Überlagerungsnetzwerk 210 dar. Anzeigen werden auf ähnliche Weise zu Abfragen in dem Überlagerungsnetzwerk 210 geroutet. Die Dienstknoten 120 messen die Attribute derselben regelmäßig und übertragen die Anzeigen derselben einschließlich der gemessenen Attribute an das Überlagerungsnetzwerk 210. Jede Anzeige kann einen Attributwert und einen Bereich von Attributwerten für jedes Attribut in einem vorbestimmten Satz von Attributen umfassen. Ein Beispiel eines vorbestimmten Satzes von Attributen umfasst Speicher, Plattenraum, Betriebssystem, Durchschnittslast eines Dienstknotens, der einen Dienst liefert, Anwendungen, Dienstbetriebszeit und Ansprechzeit eines Informationsdienstknotens, der einen Dienst liefert.

6 stellt eine Anzeige 601 dar, die durch den Dienstknoten 120b erzeugt wird. Die Anzeige 601 umfasst das Folgende:

Tabelle 3 von Attributwerten für die Anzeige 601

  • Speicher: 1 GB
  • Plattenraum: 2.5-5 GB
  • Betriebssystem: Linux 2.4
  • Durchschnittslast: 0
  • Anwendungen: Maya, Renderman
  • Dienstbetriebszeit: 99,5 %
  • Ansprechzeit: <= 20 ms

Der Dienstknoten 120b kann die Anzeige 601 an den Informationsdienstknoten 130a übertragen, weil beispielsweise der Informationsdienstknoten 130a sich in enger Nähe zu dem Dienstknoten 120b befindet. Die Anzeige 601 fällt nicht in den Attributteilraum, den der Informationsdienstknoten 130a besitzt, weil die Anzeige 601 einen Speicher > 1 GB aufweist und der Attributteilraum für den Informationsdienstknoten 130a einen Speicher <= 1 GB umfasst. Somit identifiziert der Informationsdienstknoten 130a den Informationsdienstknoten 130b aus einem Eintrag 610 in der Routingtabelle desselben. Der Informationsdienstknoten 130b beginnt beispielsweise mit dem Eintrag auf niedrigster Ebene und durchsucht die Routingtabelle desselben nach einem Eintrag, der Attributwerte umfasst, die Attributwerte in der Anzeige 601 schneiden. Der Eintrag 610 identifiziert den Informationsdienstknoten 130b und die Anzeige 601 wird an den Informationsdienstknoten 130b übertragen. Die Anzeige 601 fällt nicht in den Attributteilraum, den der Informationsdienstknoten 130b besitzt, weil der Plattenraum in der Anzeige 601 kleiner oder gleich 5 GB ist. Der Informationsdienstknoten 130b identifiziert den Informationsdienstknoten 130c aus einem Eintrag 611 in der Routingtabelle desselben, der den Attributwert Plattenraum <= 5 GB umfasst. Die Anzeige 601 fällt in den Attributteilraum des Informationsdienstknotens 130c und ist bei dem Informationsdienstknoten 130c gespeichert. Vor einem Weiterleiten der Anzeige 601 speichern die Informationsdienstknoten 130a und 130b die Anzeige 601 in dem lokalen Cache derselben. Zusätzlich kann der Informationsdienstknoten 130c die Anzeige 601 für eine Speicherung in dem globalen Cache desselben kopieren und die Anzeige 601 zu anderen Informationsdienstknoten weiterleiten, die Attributteilräume umfassen, in die die Anzeige 601 fällt.

4. Verteilter Algorithmus zum Identifizieren von Obere-K-Knoten

Eine Arbeitslast wird regelmäßig durch jeden der Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 gemessen, das in 2 gezeigt ist. Eine Arbeitslast kann aus einer oder mehreren Metriken berechnet werden, einschließlich der Anzahl von gespeicherten Anzeigen, der Anzahl von verarbeiteten Abfragen, der durchschnittlichen Latenz eines Verarbeitens einer Abfrage, eines Durchsatzes, z. B. pro Sekunde verarbeitete Abfragen, etc., aber nicht darauf begrenzt.

Am Anfang jeder Epoche nehmen die Informationsdienstknoten 130 an einer Austauschphase teil. Jede Epoche kann eine Zeitperiode umfassen, zu der eine Austauschphase und/oder eine Verbreitungsphase durchgeführt werden. Ein Epochenzähler oder die Zeit des Anfangs der nächsten Epoche kann in der Obere-K-Liste enthalten sein. Der Epochenzähler oder die Anfangszeit der nächsten Epoche können durch einen Informationsdienstknoten verwendet werden, um zu bestimmen, ob eine Liste, die durch den Informationsdienstknoten empfangen wird, für die aktuelle Epoche vorgesehen ist. Während der Austauschphase wird eine Liste von oberen K Knoten einen Dienstbaum hinaufgeroutet, der aus den Informationsdienstknoten 130 gebildet ist. An dem oberen Ende des Dienstbaums befindet sich ein Führungsknoten, der ein vorausgewählter Informationsdienstknoten sein kann.

Eine Obere-K-Liste, die die höchsten Arbeitslasten umfasst, die durch die Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 gemessen werden, wird durch jeden der Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 hindurch zu einem Führungsknoten 701 geroutet, der in 7 gezeigt ist. Wenn die Obere-K-Liste durch jeden der Informationsdienstknoten 130 geroutet wird, vergleicht jeder Informationsdienstknoten die gemessene Arbeitslast desselben mit anderen Arbeitslasten in der Obere-K-Liste. Falls eine Arbeitslast eines Informationsdienstknotens, der die Obere-K-Liste empfängt, größer als eine andere Arbeitslast in der Obere-K-Liste ist, schließt der Informationsdienstknoten die Arbeitslast desselben in die Obere-K-Liste ein, wobei möglicherweise die kleinere Arbeitslast ersetzt wird. Die Obere-K-Liste kann eine vorbestimmte Anzahl von Arbeitslasten, K, umfassen. Falls somit die Obere-K-Liste weniger als K Arbeitslasten umfasst, schließt der Informationsdienstknoten die Arbeitslast desselben in die Obere-K-Liste ein. Ferner kann die Obere-K-Liste anfänglich aus mehreren Obere-K-Listen gebildet sein. Beispielsweise kann jedes Blatt eines Dienstbaums, der die Informationsdienstknoten 130 umfasst, eine Obere-K-Liste hervorbringen. Die Obere-K-Listen können an Informationsdienstknoten kombiniert werden, die mehrere Obere-K-Listen empfangen. Schließlich kompiliert der Führungsknoten 701 eine einzige Obere-K-Liste.

Zusätzlich zu der Obere-K-Liste werden ein L-min-Ebene-Vektor und ein höchster Routingtabellenwert in dem Überlagerungsnetzwerk durch das Überlagerungsnetzwerk 210 hindurch ausgebreitet. Der min-Ebene-Vektor umfasst eine Anzahl L von minimalen Routingtabellenebenen in dem Überlagerungsnetzwerk 210. Wenn der min-Ebene-Vektor durch jeden der Informationsdienstknoten 130 hindurch geroutet wird, vergleicht jeder Informationsdienstknoten die höchste Ebene der Routingtabelle desselben mit anderen Werten in dem min-Ebene-Vektor. Falls die höchste Ebene in der Routingtabelle eines Informationsdienstknotens, der den min-Ebene-Vektor empfängt, kleiner als ein anderer Wert in dem min-Ebene-Vektor ist, schließt der Informationsdienstknoten die höchste Ebene desselben in den min-Ebene-Vektor ein, wobei möglicherweise der größere Wert ersetzt wird. Der min-Ebene-Vektor kann eine vorbestimmte Anzahl von Werten, L, umfassen. Falls somit der min-Ebene-Vektor weniger als L Werte umfasst, schließt der Informationsdienstknoten die höchste Ebenen desselben in den min-Ebene-Vektor ein. Ferner kann der min-Ebene-Vektor anfänglich aus mehreren min-Ebene-Vektoren gebildet sein. Beispielsweise kann jedes Blatt eines Dienstbaums, der die Informationsdienstknoten 130 umfasst, einen min-Ebene-Vektor hervorbringen. Die min-Ebene-Vektoren können bei Informationsdienstknoten, die mehrere min-Ebene-Vektoren empfangen, kombiniert werden. Schließlich kompiliert der Führungsknoten 701 einen einzigen min-Ebene-Vektor, der eine Anzahl L von Werten umfasst.

Die höchste Ebene der Routingtabelle in den Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 wird ebenfalls durch jeden der Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 hindurch zu dem gleichen Führungsknoten 701 geroutet, der in 7 gezeigt ist. Wenn die höchste Ebene durch jeden der Informationsdienstknoten 130 geroutet wird, vergleicht jeder Informationsdienstknoten die höchste Ebene der Routingtabelle desselben mit dem empfangenen Wert. Falls die höchste Ebene in der Routingtabelle des Informationsdienstknotens größer als der empfangene Wert ist, ersetzt der Informationsdienstknoten den empfangenden Wert mit seinem eigenen. Jedes Blatt eines Dienstbaums, der die Informationsdienstknoten 130 umfasst, bringt eine eigene höchste Ebene desselben hervor. Diese Werte können an Informationsdienstknoten, die mehrere höchste Ebenenwerte empfangen, kombiniert werden. Schließlich kompiliert der Führungsknoten 701 eine einzige höchste Ebene. Die höchste Routingtabellenebene kann zu einer Zweckmäßigkeit in dem L-min-Ebene-Vektor enthalten sein und durch das Überlagerungsnetzwerk hindurch mit dem L-min-Ebene-Vektor übertragen werden.

Während der Austauschphase umfasst jeder der Informationsdienstknoten 130 einen Identifizierer in der Obere-K-Liste, wie beispielsweise eine IP-Adresse, wenn die Obere-K-Liste zu dem Führungsknoten 701 geroutet wird. Der Identifizierer ist enthalten, selbst falls der Informationsdienstknoten, der die Obere-K-Liste empfängt, die Arbeitslast desselben nicht in die Obere-K-Liste einschließt. In einer Verbreitungsphase wird die Obere-K-Liste unter Verwendung der Identifizierer den Dienstbaum herunter durch jeden der Informationsdienstknoten 130 hindurch übertragen. Zum Beispiel wird die Obere-K-Liste an jeden der Informationsdienstknoten 130 in der umgekehrten Reihenfolge dazu übertragen, wie jeder Informationsdienstknoten die Obere-K-Liste empfangen hat. Wenn ferner ein neuer Informationsdienstknoten dem Informationsdienst beitritt, empfängt der neue Informationsdienstknoten die Obere-K-Liste einschließlich Arbeitslasten, die in der letzten Epoche gemessen wurden, zusätzlich zu einem Erzeugen einer neuen Routingtabelle und einem Speichern von Anzeigen und Abfragen in den globalen Caches für den neuen Informationsdienstknoten.

Die Austausch- und die Verbreitungsphase sind ferner mit Bezug auf 7 dargestellt. 7 stellt einen Abschnitt eines Dienstbaums dar, der die Informationsdienstknoten 130a-d in dem Überlagerungsnetzwerk 210 umfasst. Der Führungsknoten 701 ist der Informationsdienstknoten 130a.

Während der Austauschphase messen die Informationsdienstknoten 130a-d die Arbeitslasten derselben. Die Obere-K-Liste von Arbeitslasten wird den Dienstbaum hinauf von den Blättern aus, z. B. den Informationsdienstknoten 130d und 130e, zu dem Führungsknoten 701 übertragen.

Die Informationsdienstknoten 130 erzeugen Arbeitslastvektoren für die Obere-K-Liste und min-Ebene-Vektoren zum Schätzen, wie versetzt der Dienstbaum ist oder wie ausgeglichen der Dienstbaum ist. Die min-Ebene-Vektoren können verwendet werden, um einen Informationsdienstknoten für eine Arbeitslastteilung auszuwählen, während versucht wird, einen ausgeglichenen Dienstbaum beizubehalten. Zum Beispiel wird die Differenz zwischen der höchsten (maximalen) Routingtabellenebene in dem Überlagerungsnetzwerk 210 und einem minimalen Wert in dem min-Ebene-Vektor mit einer Schwelle verglichen. Falls die Differenz größer als eine Schwelle ist, dann kann ein Informationsdienstknoten, der den minimalen Wert aufweist, für eine Arbeitslastteilung bei einem Versuch ausgewählt werden, einen ausgeglichenen Dienstbaum beizubehalten. Somit ist der Vergleich der Differenz zwischen der höchsten (maximalen) Routingtabellenebene in dem Überlagerungsnetzwerk 210 und dem minimalen Wert in dem min-Ebene-Vektor mit einer Schwelle ein Beispiel eines Schätzens, wie versetzt der Dienstbaum ist oder wie ausgeglichen der Dienstbaum ist. Basierend auf dieser Schätzung kann ein Informationsdienstknoten für eine Arbeitslastteilung ausgewählt werden, um den Dienstbaum auszugleichen.

Wie es in 7 gezeigt ist, messen die Informationsdienstknoten 130d und 130e die Arbeitslasten derselben und erzeugen die Arbeitslastvektoren 710 bzw. 711. Die Arbeitslastvektoren in dem Überlagerungsnetzwerk 210, die die K höchsten Arbeitslasten umfassen, werden kombiniert, um die Obere-K-Liste zu bilden. Jeder Arbeitslastvektor umfasst zumindest die Identifikation des Informationsdienstknotens und die gemessene Arbeitslast.

Die Informationsdienstknoten 130d und 130e erzeugen ferner min-Ebene-Vektoren 720 bzw. 721. Die min-Ebene-Vektoren umfassen die höchste Ebene in der Routingtabelle für den Informationsdienstknoten. Beispiele von höchsten Ebenen für die Informationsdienstknoten 130a-d sind in 8A-D gezeigt und umfassen 0, 2, 1 bzw. 2. Die min-Ebene-Vektoren werden verwendet, um eine L-min-Ebene-Liste zu bilden, die die L niedrigsten Ebenen in dem Überlagerungsnetzwerk 210 umfasst. Die L-min-Ebene-Liste umfasst ferner eine Informationsdienstknoten-ID und eine Routingtabellenebene für den Informationsdienstknoten, der die höchste Ebene in dem Überlagerungsnetzwerk 210 aufweist.

Es können mehrere Obere-K-Listen während der Austauschphase ausgetauscht und bei Zwischenknoten, wie beispielsweise dem Informationsdienstknoten 130b, kombiniert werden. Beispielsweise sind die Arbeitslastvektoren 710 und 711 Obere-K-Listen, die zu dem Informationsdienstknoten 130b übertragen werden. Unter der Annahme, dass K Drei beträgt, kombiniert der Informationsdienstknoten 130b die Arbeitslastvektoren 710 und 711 und den eigenen Arbeitslastvektor desselben zu der Obere-K-Liste 712. Die Obere-K-Liste 712 wird zu dem Führungsknoten 701 hin übertragen und kann die Arbeitslasten der Informationsdienstknoten 130c und/oder 130a umfassen, falls die Arbeitslasten derselben höher als die Arbeitslasten in der Obere-K-Liste 712 sind, die durch jeden Informationsdienstknoten empfangen wird.

Während der Austauschphase werden ferner die min-Ebene-Vektoren 720 und 721 zu dem Informationsdienstknoten 130b übertragen. Der Informationsdienstknoten 130b kombiniert die min-Ebene-Vektoren 720 und 721 und den eigenen min-Ebene-Vektor desselben zu der L-min-Ebene-Liste 722 (auch als der L-min-Ebene-Vektor bezeichnet). Die L-min-Ebene-Liste wird zu dem Führungsknoten 701 hin übertragen und kann die höchsten Routingtabellenebenen für die Informationsdienstknoten 130c und/oder 130a umfassen, falls die Ebenen derselben niedriger als die Ebenen in der L-min-Ebene-Liste sind. Zusätzlich umfasst die L-min-Ebene-Liste den Dienstknoten, der die höchste Ebene in dem Überlagerungsnetzwerk 210 aufweist. Der Unterschied zwischen der höchsten Routingtabellenebene und der minimalen Ebene eines Informationsdienstknotens, der anfänglich für eine Arbeitslastteilung ausgewählt wird, kann mit einer Schwelle vergleichen werden, um zu bestimmen, ob der anfänglich ausgewählte Informationsdienstknoten die Auswahl für eine Arbeitslastteilung bleibt. Dieser Vergleich ist eine Technik zum Beibehalten eines ausgeglichenen Dienstbaums.

Während der Austauschphase wird ferner die Reihenfolge der Informationsdienstknoten, die die Obere-K-Liste empfangen, an dem Informationsdienstknoten 130 gespeichert, derart, dass die Obere-K-Liste zu allen Informationsdienstknoten während der Ausbreitungsphase ausgebreitet werden kann. Reihenfolgeinformationen 730 umfassen beispielsweise Identifikationen, wie beispielsweise IP-Adressen, die Informationsdienstknoten 130e und 130d, derart, dass der Informationsdienstknoten 130b die Obere-K-Liste 712 während der Ausbreitungsphase zu den Informationsdienstknoten 130e und 130d überträgt. Andere Beispiele von Reihenfolgeinformationen umfassen Reihenfolgeinformationen 731 an dem Informationsdienstknoten 130c, wie beispielsweise die IP-Adresse des Informationsdienstknotens 130b, und Reihenfolgeinformationen 732 an dem Informationsdienstknoten 130a, wie beispielsweise die IP-Adresse des Informationsdienstknotens 130c. Während der Ausbreitungsphase wird somit die Obere-K-Liste 712 den Dienstbaum herunter zu allen Informationsdienstknoten 130 übertragen. Die K-min-Ebene-Liste wird ebenfalls während der Ausbreitungsphase den Dienstbaum herunter übertragen.

Ein Obere-K-Routing-Algorithmus wird zum Bestimmen verwendet, zu welchem Informationsdienstknoten die Obere-K-Liste übertragen werden soll, basierend auf der Routingtabelle in dem Informationsdienstknoten, der die Obere-K-Liste überträgt. 8A-D stellen beispielsweise die Routingtabellen für die Informationsdienstknoten 130a-d dar. Um die Obere-K-Liste zu dem Führungsknoten zu routen, überträgt der Informationsdienstknoten, der die Obere-K-Liste empfängt, die Obere-K-Liste zu der maximalen Ebene in der Routingtabelle desselben, die für den Bereich unterhalb eines entsprechenden Teilungswerts verantwortlich ist. Die Informationen in der Obere-K-Liste identifizieren die oberen K Knoten und die Arbeitslasten derselben, die bis dahin bekannt sind, wenn die Obere-K-Liste zu dem Führungsknoten geroutet wird. Unter Bezugnahme auf die Routingtabelle für den Informationsdienstknoten 130d in der 8D beispielsweise ist die höchste oder maximale Ebene in dem Eintrag 840 mit einer Ebene von 2. Der Eintrag 840 umfasst einen Attributteilungswert von 20 ms für das Ansprechzeitattribut. Der Bereich für eine Ansprechzeit umfasst: Ansprechzeit <= 20 ms. Weil der Bereich unter dem entsprechenden Teilungswert liegt, d. h. geringer als der Teilungswert von 20 ms, wird der Knoten 130b als der nächste Knoten zum Empfangen der Obere-K-Liste identifiziert. Der Knoten 130d überträgt die Obere-K-Liste an den Knoten 130b.

Der Informationsdienstknoten 130b empfängt die Obere-K-Liste und verwendet basierend auf dem Obere-K-Routing-Algorithmus den Eintrag 820 der Routingtabelle für den Informationsdienstknoten 130b, der in 8b gezeigt ist, um den Informationsdienstknoten 130c als den nächsten Informationsdienstknoten zu identifizieren, der die Obere-K-Liste empfangen soll. Der Informationsdienstknoten 130b schließt die Arbeitslast desselben in die Obere-K-Liste ein und überträgt die Obere-K-Liste an den Informationsdienstknoten 130c.

Bei diesem Beispiel ist der Wert von K = 3. Der Informationsdienstknoten 130c empfängt ferner die Arbeitslasten der Informationsdienstknoten 130b, 130d und 130e, wie es in 7 gezeigt ist. Falls die Arbeitslast des Informationsdienstknotens 130c geringer als die Arbeitslasten der Informationsdienstknoten 130b, 130d und 130e ist, dann schließt der Informationsdienstknoten 130c die Arbeitslast desselben nicht in die Obere-K-Liste ein. Der Eintrag 830 der Routingtabelle für den Informationsdienstknoten 130c identifiziert den Informationsdienstknoten 130a als den nächsten Knoten zum Empfangen der Obere-K-Liste basierend auf dem Obere-K-Routing-Algorithmus. Der Informationsdienstknoten 130a bestimmt, ob die Arbeitslast desselben größer als die drei Arbeitslasten in der Obere-K-Liste ist. Falls dem so ist, schließt der Informationsdienstknoten 103a die Arbeitslast desselben in die Obere-K-Liste ein. Ferner ist der Informationsdienstknoten 130a der Führungsknoten. Der Führungsknoten ist der Informationsdienstknoten mit lediglich Attributbereichen, die größer als ein entsprechender Teilungswert in der Routingtabelle desselben sind. Die Routingtabelle für den Informationsdienstknoten 130a, die in 8A gezeigt ist, umfasst einen Eintrag 810. Der Eintrag 810 umfasst einen Attributbereich, der größer als der entsprechende Teilungswert von 1 GB ist. Somit umfasst die Routingtabelle des Informationsdienstknotens 130a lediglich Attributbereiche, die größer als ein entsprechender Teilungswert sind, und der Informationsdienstknoten 130a ist der Führungsknoten. Im Gegensatz dazu umfassen die Routingtabellen der Informationsdienstknoten 130b-d zumindest einen Attributbereich, der geringer als entsprechender Teilungswert ist, wie beispielsweise die Einträge 820, 830 und 840.

Nachdem der Führungsknoten die Obere-K-Liste empfängt, beginnt die Ausbreitungsphase. Wie es in 7 gezeigt ist, überträgt der Führungsknoten, z. B. der Informationsdienstknoten 130a, die Obere-K-Liste an den Informationsdienstknoten 130c. Die Obere-K-Liste wird schließlich zu allen Informationsdienstknoten ausgebreitet, beispielsweise in der umgekehrten Reihenfolge dazu, wie die Informationsdienstknoten die Obere-K-Liste vorhergehend empfingen, als dieselbe den Dienstbaum hinauf zu dem Führungsknoten hin geroutet wurde.

Die Obere-K-Liste umfasst eine Liste von K höchsten Arbeitslasten in dem Überlagerungsnetzwerk 210. Eine wie hierin verwendete Liste umfasst eine Datendarstellung von einem oder mehreren Werten, die zwischen Knoten übertragen werden können. Beispielsweise umfasst die Obere-K-Liste Werte für die größten Arbeitslasten in dem Überlagerungsnetzwerk 210. Diese Werte werden zwischen den Informationsdienstknoten 130 übertragen. Zusätzlich zu einem Umfassen von Arbeitslasten umfasst die Obere-K-Liste einen Identifizierer des Informationsdienstknotens, der die Arbeitslast in der Obere-K-Liste aufweist. Ein Beispiel eines Identifizierers ist eine IP-Adresse, aber es können andere Identifizierer verwendet werden.

5. Teilungsalgorithmen

Die in 8B-D gezeigten Routingtabellen können basierend auf Teilungsalgorithmen erzeugt werden, die verwendet werden, um Arbeitslasten für die Informationsdienstknoten auszugleichen. Ein Typ eines Teilungsalgorithmus ist ein lokaler Teilungsalgorithmus, der verwendet wird, um die Arbeitslast eines Informationsdienstknotens zu teilen, wie beispielsweise eines Informationsdienstknotens in der Obere-K-Liste, der eine hohe Arbeitslast aufweist. Die Arbeitslast des Informationsdienstknotens kann mit einem anderen Informationsdienstknoten geteilt werden, wie beispielsweise einem neuen Informationsdienstknoten, der dem Überlagerungsnetzwerk 210 beitritt, oder einem existierenden Informationsdienstknoten.

Der lokale Teilungsalgorithmus wird verwendet, um ein Attribut und zumindest einen Attributteilwert zum Teilen der Arbeitslast eines Informationsdienstknotens zu identifizieren. Jede Anzeige kann einen vorbestimmten Satz von Attributen und möglicherweise Attributwerte für jedes Attribut in dem Satz von Attributen umfassen. Ein Beispiel einer Anzeige, die den Satz von Attributen und entsprechende Attributwerte umfasst, ist oben in Tabelle 3 gezeigt. Der lokale Teilungsalgorithmus wird verwendet, um ein Attribut aus dem Satz von Attributen und zumindest einen Attributteilwert für das ausgewählte Attribut auszuwählen, um die Arbeitslast eines Informationsdienstknotens aufzuteilen.

9A-C helfen den Prozess zu zeigen, durch den Informationsdienstknoten die Arbeitslast unter denselben verteilen, wenn neue Knoten dem Überlagerungsnetzwerk 210 beitreten. Es kann. eine Zutrittsstrategie verwendet werden, um einen Zutritt zu dem Überlagerungsnetzwerk 210 zu steuern. Beispielsweise kann einem Knoten gestattet werden, dem Überlagerungsnetzwerk 210 beizutreten, falls der Knoten eine Betriebszeit aufweist, die größer als eine Schwelle ist, falls der Knoten nicht vorübergehend ist und falls der Knoten vorbestimmte Hardwareattribute umfasst, wie beispielsweise eine Verarbeitungsgeschwindigkeit, einen Plattenraum und einen Speicher größer vorbestimmten Schwellen.

Bei diesem Beispiel war anfänglich der Informationsdienstknoten 130a der einzige Knoten, der den Informationsdienst liefert, wie beispielsweise der einzige Knoten, der Anzeigen speichert und auf Abfragen anspricht. Dann tritt der Informationsdienstknoten 130b dem Informationsdienst bei. Durch ein Anwenden eines lokalen Teilungsalgorithmus bestimmt der Informationsdienstknoten 130a, dass eine gleichmäßige Verteilung der Arbeitslast desselben erreicht werden kann, falls der Informationsdienstknoten 130a Anzeigen speichert und auf Abfragen mit Speicher <= 1 GB anspricht, d. h. einen Attributteilraum von Speicher <= 1 GB aufweist, und der Informationsdienstknoten 130b Anzeigen speichert und auf Abfragen mit Speicher > 1 GB anspricht, d. h. einen Attributteilraum von Speicher > 1 GB aufweist. Diese Arbeitslastteilung ist in 9A dargestellt, die die Attributteilräume und die Routingtabellen der Informationsdienstknoten 130a und 130b nach der Teilung zeigt.

Der Informationsdienstknoten 130c ist der nächste Knoten, der dem Informationsdienst und dem Überlagerungsnetzwerk 210 beitritt, das den Informationsdienst liefert, und die Arbeitslasten von einem oder mehreren der Informationsdienstknoten 130a und 130b sollten umverteilt werden. Eine Option besteht darin, die Arbeitslasten aller Informationsdienstknoten, die aktuell den Informationsdienst liefern, z. B. die Informationsdienstknoten 130a und 130b, global auszuwerten. Dies wird durch Anwenden eines globalen Teilungsalgorithmus erreicht, der alle Informationsdienstknoten beeinflusst und möglicherweise die Arbeitslast aller Informationsdienstknoten umverteilt. Eine andere Option besteht darin, einen lokalen Teilungsalgorithmus anzuwenden, der die Arbeitslast eines einzigen Informationsdienstknotens jedes Mal dann teilt, wenn ein neuer Knoten dem Informationsdienst beitritt, und dann regelmäßig eine globale Umverteilung durchführt.

9B stellt eine lokale Umverteilung der Arbeitslast des Informationsdienstknotens 130b dar. Unterschiedliche Typen von lokalen Teilungsalgorithmen können verwendet werden, um zu bestimmen, wie der Attributteilraum des Informationsdienstknotens 130b mit dem Informationsdienstknoten 130c zu teilen ist. Bei einem Beispiel wird ein iterativer Cluster-Algorithmus, wie beispielsweise ein k-Mittel-Clustern, verwendet, um ein Attribut und einen Attributteilwert basierend auf zwei Clustern auszuwählen, die durch den Cluster-Algorithmus gefunden werden. Bei einem anderen Beispiel wird ein Cluster-Algorithmus, wie beispielsweise der gleiche k-Mittel-Cluster-Algorithmus, verwendet, um drei Cluster zu bestimmen, und die drei Cluster werden verwendet, um ein Attribut und Attributteilwerte zum Teilen der Arbeitslast des Informationsdienstknotens 130b auszuwählen.

9B stellt die Attributteilräume und die Routingtabellen für die Informationsdienstknoten 130b und 130c dar, nachdem ein Cluster-Algorithmus verwendet wird, um drei Cluster zum Teilen der Arbeitslast des Informationsdienstknotens 130b mit dem Informationsdienstknoten 130c zu bestimmen.

Man nehme an, dass ein Plattenraum das Attribut ist, das zum Teilen ausgewählt ist. Tabelle 4 unten stellt die Verteilung von Anzeigen und Abfragen dar, die in den Attributteilraum des Informationsdienstknotens 130b fallen, vor der Teilung mit dem Informationsdienstknoten 130c dar. Diese Verteilung kann unter Verwendung des Cluster-Algorithmus bestimmt werden. Tabelle 4 einer Arbeitslastverteilung für den Informationsdienstknoten 130b Plattenraum <= 2 GB 40 % 2 < Plattenraum <= 5 GB 20 % Plattenraum > 5 GB 40 %

Wie es in Tabelle 4 gezeigt ist, bestimmt der Cluster-Algorithmus, dass einem Cluster von Attributwerten für Plattenraum <= 2 GB, z. B. 40 %, und einen anderen Cluster von Attributwerten für Plattenraum > 5 GB, z. B. 40 %, 80 % der Arbeitslast für den Informationsdienstknoten 130b zugeordnet sind. Zusammen decken diese zwei Cluster 80 % der Anzeigen und Abfragen ab, die in den Informationsdienstknoten 130b vor der Teilung gespeichert sind. Zwei Attributteilwerte werden basierend auf diesen Clustern ausgewählt. Ein Teilungswert ist 2 GB.

Es besteht eine 100%-ige Wahrscheinlichkeit, dass der Informationsdienstknoten 130c nach der Teilung Anzeigen speichert, die einen Plattenraum-Attributwert <= 2 GB aufweisen. Dies spiegelt sich in dem Eintrag 910 für die Routingtabelle für den Informationsdienstknoten 130b und dem Attributteilraum für den Informationsdienstknoten 130cwieder. Ein anderer Teilungswert ist 5 GB. Es gibt eine 100%-ige Wahrscheinlichkeit, dass der Informationsdienstknoten 130b nach der Teilung Anzeigen speichert, die einen Plattenraum-Attributwert > 5 GB aufweisen. Dies ist in dem Eintrag 920 des Informationsdienstknotens 130c und dem Attributteilraum für den Informationsdienstknoten 130b wiedergespiegelt.

Ein dritter Cluster, der durch den Cluster-Algorithmus identifiziert ist, umfasst den folgenden Bereich: 2GB > Plattenraum <= 5 GB. Der Cluster-Algorithmus bestimmt, dass 20 % der Arbeitslast für den Informationsdienstknoten 130b dem dritten Cluster zugeordnet sind. Einem der Informationsdienstknoten 130b oder 130c kann eine gewisse Wahrscheinlichkeit zugewiesen sein, um Anzeigen und Abfragen zu speichern, die in den dritten Cluster fallen. Wahrscheinlichkeiten können zugewiesen sein, um die Rate, mit der Anzeigen empfangen und in den Informationsdienstknoten 130b und 130c gespeichert werden, wesentlich abzugleichen. Die Einträge 912 und 922 für die Routingtabellen für die Informationsdienstknoten 130b bzw. 130c stellen die Wahrscheinlichkeiten dar, dass eine Anzeige bei dem Informationsdienstknoten gefunden wird, der in dem Eintrag aufgelistet ist. Zum Beispiel kann eine Abfrage mit einem Plattenraum-Attributwert größer 2 GB basierend auf dem Attributteilraum desselben zu dem Informationsdienstknoten 130c geleitet werden. Falls keine Übereinstimmungen gefunden werden, wird die Abfrage basierend auf dem Eintrag 922 zu dem Informationsdienstknoten 130b geleitet, weil es eine 50%-ige Wahrscheinlichkeit gibt, dass Anzeigen mit einem Plattenraum-Attributwert größer 2 GB in dem Informationsdienstknoten 130b gespeichert werden.

Nachdem der Attributteilraum des Informationsdienstknotens 130b mit dem Attributteilraum des Informationsdienstknotens 130c geteilt ist, sendet der Informationsdienstknoten 130b alle gespeicherten Anzeigen und Abfragen, die in den Attributteilraum des Informationsdienstknotens 130c fallen, an den Informationsdienstknoten 130c. Somit ist der Informationsdienstknoten 130c bereit, um auf Abfragen anzusprechen, die in den Attributteilraum desselben fallen.

9C stellt Beispiele von Routingtabellen und Attributteilräumen für die Informationsdienstknoten 130b und 130d dar, nachdem ein Teilungsalgorithmus auf den Informationsdienstknoten 130b zum Teilen der Arbeitslast des Informationsdienstknotens 130b mit dem Informationsdienstknoten 130d angewandt wird. Bei diesem Beispiel wird ein iterativer Cluster-Algorithmus, wie beispielsweise ein k-Mittel-Clustern, verwendet, um ein Attribut und einen Attributteilungswert basierend auf zwei Clustern auszuwählen, die durch den Cluster-Algorithmus gefunden werden. Das ausgewählte Attribut ist eine Ansprechzeit und der Teilungswert, der aus den zwei Clustern bestimmt ist, beträgt 20 ms. Der Cluster-Algorithmus bestimmt beispielsweise, dass für das Ansprechzeitattribut die Anzeigen und Abfragen, die durch den Informationsdienstknoten 130b gespeichert sind, in zwei Cluster eingeteilt werden können. Ein Cluster umfasst Attributwerte < 20 ms und der andere Cluster umfasst Attributwerte >= 20ms. Somit wird der Attributteilungswert von 20 ms ausgewählt und wird die Arbeitslast des Informationsdienstknotens 130b mit dem Informationsdienstknoten 130d basierend auf dem Teilungswert von 20 ms geteilt.

Wie es oben beschrieben ist, kann ein Teilungsalgorithmus verwendet werden, um ein Attribut und einen Teilungswert zum Teilen der Arbeitslast eines Informationsdienstknotens auszuwählen. Ein Beispiel eines Teilungsalgorithmus ist der k-Mittel-Cluster-Algorithmus, der zwei Cluster zum Bestimmen des Attributs und des Teilungswerts identifiziert. Der k-Mittel-Cluster-Algorithmus ist ein bekannter Algorithmus, der verwendet wird, um eine Population von Daten zu einer vorbestimmten Anzahl von Clustern zu gruppieren. Falls beispielsweise zwei Cluster ausgewählt sind, dann wird jeder Datenpunkt in der Population zufällig einem der zwei Cluster zugewiesen, derart, dass näherungsweise die gleiche Anzahl von Datenpunkten sich in jedem Cluster befindet. Dann wird jeder Datenpunkt in jedem Cluster ausgewertet, um basierend auf einem minimalen Abstand zu einem Cluster zu bestimmen, zu welchem Cluster derselbe gehört. Ein Clustern wird beispielsweise für das Speicherattribut bei dem Informationsdienstknoten 130b durchgeführt. Der Informationsdienstknoten 130b bestimmt die Speicherattributwerte für alle Anzeigen, die in demselben gespeichert sind. Es werden zwei Cluster ausgewählt mit Mitten bei 1 GB bzw. 5 GB.

Jeder Attributwert wird ausgewertet, um basierend auf einem minimalen Abstand zu einem Cluster zu bestimmen, zu welchem Cluster derselbe gehört. Beispielsweise liegt ein Attributwert von 0,25 GB näher an 1 GB als an 5 GB und somit wird der Attributwert von 0,25 GB dem Cluster von 1 GB zugewiesen. Ein Attributwert von 4 GB liegt näher an 5 GB und wird dem Cluster von 5 GB zugewiesen. Diese Auswertung wird durchgeführt, bis eine Bestimmung vorgenommen ist, dass keiner der Datenpunkte einem unterschiedlichen Cluster neu zugewiesen werden muss.

Ein Bestimmen von zwei Clustern wird für jedes Attribut in dem vorbestimmten Satz von Attributen mit einem numerischen Wert durchgeführt. Zum Beispiel zeigt Tabelle 3 ein Beispiel einer Anzeige, die Attributwerte für jedes der Attribute in dem Satz umfasst. Ein Clustern wird für jedes der Attribute außer für das Anwendungsattribut durchgeführt, weil die Anwendungsattributwerte nicht numerisch sind.

Nach einem Anwenden des k-Mittel-Cluster-Algorithmus, um zwei Cluster für jedes Attribut zu bestimmen, wird zumindest ein Optimierungskriterium verwendet, um eines der Attribute für eine Teilung auszuwählen. Dann wird ein Teilungswert für das ausgewählte Attribut basierend auf den Clustern bestimmt. Ein Bespiel des Optimierungskriteriums kann das Attribut umfassen, für das ein Clustern zu einer minimalen Differenz einer Größe zwischen den zwei Clustern führt. Ein anderes Beispiel kann ein Normieren jedes Satzes von Attributwerten in dem Cluster auf einen Wert in dem Bereich von 0 bis 1 und ein anschließendes Auswählen eines Attributs mit dem minimalen quadrierten Fehler umfassen, wo ein k-Mittel-Clustern konvergiert. Es können andere Optimierungsmetriken verwendet werden, um die Cluster für jedes Attribut auszuwerten, derart, dass ein Attribut ausgewählt wird, das Cluster aufweist, die ein optimales Teilen einer Arbeitslast eines Informationsdienstknotens ermöglichen.

Nachdem das Attribut ausgewählt ist, wird der Teilungswert basierend auf den Clustern für das ausgewählte Attribut bestimmt. Zum Beispiel sind M1 und M2 die Mittel der Attributwerte in jedem der Cluster C1 bzw. C2, derart, dass M1 < M2. Es sei angenommen, dass Max(C1) der maximale Attributwert für C1 ist, während Min(C2) der minimale Attributwert für C2 ist. Der Teilungswert ist gleich (Max(C1) + Min(C2))/2.

Der k-Mittel-Cluster-Algorithmus kann ferner verwendet werden, um drei Cluster zum Identifizieren eines Attributs und von Teilungswerten zum Teilen der Arbeitslast eines Informationsdienstknotens zu bestimmen. Der k-Mittel-Cluster-Algorithmus wird verwendet, um drei Cluster für jedes Attribut in dem vorbestimmten Satz von Attributen mit einem numerischen Wert zu bestimmen. Nach einem Anwenden des k-Mittel-Cluster-Algorithmus, um drei Cluster für jedes Attribut zu bestimmen, wird zumindest ein Optimierungskriterium verwendet, um eines der Attribute für ein Teilen auszuwählen. Dann wird für das ausgewählte Attribut basierend auf den Clustern ein Teilungswert bestimmt. Es kann das oben beschriebene Optimierungskriterium verwendet werden.

Nachdem das Attribut ausgewählt ist, werden Teilungswerte basierend auf den Clustern für das ausgewählte Attribut bestimmt. Beispielsweise sind M1, M2 und M3 die Mittel der Attributwerte in jedem der Cluster C1, C2 bzw. C3, derart, dass M1 < M2 < M3. Die Anzeigen für den Cluster C1 werden einem der Informationsdienstknoten zugewiesen, wie beispielsweise dem Informationsdienstknoten 130c, und die Anzeigen für den Cluster C3 werden dem anderen Informationsdienstknoten zugewiesen, wie beispielsweise dem Informationsdienstknoten 130b. Die Anzeigen für den dritten Cluster C2 werden einem der Informationsdienstknoten 130c oder 130b basierend auf einer Wahrscheinlichkeit zugewiesen. Um eine einheitliche Verteilung einer Arbeitslast zwischen den zwei Informationsdienstknoten sicherzustellen, werden die Wahrscheinlichkeiten P und (1 – P) bestimmt, welche Anzeige von dem Cluster C2 einem der Informationsdienstknoten 130b oder 130c zugewiesen wird. Der Wert von P ist gegeben durch: Size(C1) + P* Size(C2) = (1 – P)* Size(C2) + Size(C3). Die zwei Teilungswerte, wie beispielsweise 2 GB und 5 GB, die in 9B gezeigt sind, sind Max(C1) und Min(C3).

Der k-Mittel-Cluster-Algorithmus ist ein Typ eines Cluster-Algorithmus, der verwendet wird, um ein Attribut auszuwählen und einen oder mehrere Attributteilungswerte zu bestimmen. Andere Typen von Cluster-Algorithmen, wie beispielsweise ein Entität-Mittel-Clustern, oder andere Typen einer statistischen Analyse können verwendet werden, um die Ähnlichkeit zwischen Daten zu bestimmen, wie beispielsweise Attributwerte für ein Attribut für jede Anzeige, und ähnliche Daten zu gruppieren, um eine Arbeitslast zu teilen.

Die oben beschriebenen lokalen Teilungsalgorithmen werden verwendet, um die Arbeitslast eines Informationsdienstknotens, der einer der Informationsdienstknoten sein kann, die die höchste oder eine der höchsten Arbeitslasten in der Obere-K-Liste aufweisen, mit einem anderen Informationsdienstknoten zu teilen, wie beispielsweise einem neuen Informationsdienstknoten, der dem Überlagerungsnetzwerk 210 beitritt. Eine andere Option besteht darin, die Arbeitslasten aller Informationsdienstknoten in dem Überlagerungsnetzwerk global auszuwerten und zum Ausgleichen der Arbeitslasten der Informationsdienstknoten 130 die Arbeitslasten für alle der Informationsdienstknoten möglicherweise neu zuzuweisen. Dies wird durch ein Anwenden eines globalen Teilungsalgorithmus erreicht, der alle Informationsdienstknoten beeinflusst und möglicherweise die Arbeitslast aller Informationsdienstknoten umverteilt.

Es kann ein globaler Teilungsalgorithmus verwendet werden, um Arbeitslasten einer großen Anzahl von Informationsdienstknoten oder aller Informationsdienstknoten anstelle eines einzelnen Informationsdienstknotens auszugleichen und ferner eine Latenz in dem Überlagerungsnetzwerk 210 zu verbessern. Falls beispielsweise ein lokaler Teilungsalgorithmus auf viele Informationsdienstknoten in einem Bereich des Überlagerungsnetzwerks 210 angewandt wird, können die Arbeitslasten der Informationsdienstknoten in diesem Bereich besser ausgeglichen werden. Die Latenz in dem Überlagerungsnetzwerk 210 kann jedoch erhöht sein, weil mehr Sprünge benötigt werden können, um einen endgültigen Bestimmungsort in dem Überlagerungsnetzwerk 210 zu erreichen, wie beispielsweise einen Informationsdienstknoten, dem der Attributteilraum gehört, in den eine Anzeige fällt. Der globale Teilungsalgorithmus kann verwendet werden, um die Arbeitslasten aller Informationsdienstknoten 130 in dem Überlagerungsnetzwerk 210 auszugleichen und eine Latenz zu minimieren. Der globale Teilungsalgorithmus kann regelmäßig angewandt werden und kann zu Zeiten angewandt werden, wenn eine Verarbeitung bei dem Informationsdienst historisch niedrig ist, um eine Unterbrechung des Informationsdienstes zu minimieren.

Die globale Auswertung aller Informationsdienstknoten beginnt damit, dass jede Informationsdienstknoten alle Anzeigen zusammenfasst, die durch einen jeweiligen Informationsdienstknoten während einer Zeitperiode empfangen werden. Ein Beispiel einer Zusammenfassung kann ein Histogramm umfassen, wie beispielsweise 20 % der Anzeigen, die während der letzten 24 Sunden empfangen wurden, weisen einen Speicher zwischen 4 und 5 GB, 20 % weisen einen Speicher zwischen 0,5 und 1 GB auf, etc. Es kann ein Histogramm für jedes Attribut vorgesehen sein. Zusammenfassungen können in anderen Formen als einem Histogramm geliefert werden.

10 stellt die Informationsdienstknoten 130 in der Anfangsphase des globalen Teilungsalgorithmus dar. 10 stellt die Informationsdienstknoten 130 dar, die Zusammenfassungen 1020 an einen zentralen Knoten 1010 übertragen. Der zentrale Knoten 1010 kann einer der Informationsdienstknoten 130 sein. Bei einem anderen Beispiel kann der zentrale Knoten 1010 eine Mehrzahl von Informationsdienstknoten umfassen, die jeweils zugewiesen sind, um Zusammenfassungen von Informationsdienstknoten beispielsweise in enger Nähe zu empfangen. Bei diesem Beispiel kommuniziert die Mehrzahl von zentralen Knoten miteinander, um den globalen Teilungsalgorithmus anzuwenden.

Der zentrale Knoten 1010 wendet einen Teilungsalgorithmus an der gesamten Eingabe von Zusammenfassungen von jedem Informationsdienstknoten an. Der Teilungsalgorithmus kann einen der oben beschriebenen lokalen Teilungsalgorithmen umfassen. Es kann beispielsweise ein Cluster-Algorithmus, wie beispielsweise der k-Mittel-Cluster-Algorithmus, verwendet werden, um zwei Cluster für jedes Attribut aus den Zusammenfassungen von den Informationsdienstknoten zu identifizieren. Es werden ein Attribut und ein Teilungswert basierend auf den berechneten Clustern ausgewählt. Wie es in 11A gezeigt ist, kann beispielsweise das Speicherattribut ausgewählt sein und kann der Teilungswert 2 GB betragen. Dann werden zwei Informationsdienstknoten 130d und 130a aus dem Satz von Informationsdienstknoten 1100 ausgewählt, die Zusammenfassungen liefern. Den Informationsdienstknoten 130d und 130a wird basierend auf dem Teilungswert ein Attributteilraum zugewiesen. Beispielsweise wird dem Informationsdienstknoten 130d ein Attributteilraum von Speicher <= 2 GB zugewiesen und wird dem Informationsdienstknoten 130a ein Attributteilraum von Speicher > 2 GB zugewiesen und werden Routingtabellen für jeden der zwei Informationsdienstknoten erzeugt. Dann wird der Informationsdienstknoten mit dem größten Cluster geteilt. Falls beispielsweise mehr Anzeigen einen Speicher > 2 GB als einen Speicher <= 2 GB aufweisen, wie es aus den Zusammenfassungen 1020 bestimmt wird, die in 10 gezeigt sind, dann wird der Cluster von Anzeigen, die einen Speicher > 2 GB aufweisen, für den Informationsdienstknoten 130a mit einem anderen Informationsdienstknoten geteilt. 11B zeigt den Informationsdienstknoten 130f, der ausgewählt ist, um die Arbeitslast des Informationsdienstknotens 130a zu teilen. Dieser Prozess wird wiederholt, bis allen Informationsdienstknoten ein Attributteilraum in dem Überlagerungsnetzwerk 210 zugewiesen ist. Bei einem Beispiel können die Informationsdienstknoten jedes Mal beliebig aus dem Satz 1100 ausgewählt werden, wenn ein Cluster geteilt wird.

Nachdem allen Knoten in dem Satz 100 ein neuer Attributteilraum zugewiesen wurde und eine neue Routingtabelle erzeugt wurde, werden die Anzeigen an den Informationsdienstknoten übertragen, der den Attributteilraum aufweist, in den jede Anzeige fällt. Beispielsweise überträgt jeder Informationsdienstknoten die Anzeigen, die in dem globalen Cache desselben gespeichert sind, an den Informationsdienstknoten, dem der entsprechende Attributteilraum neu zugewiesen wurde. Alternativ können alle Informationsdienstknoten 130 die globalen Caches derselben leeren und auf das nächste Berichten von Anzeigen von dem Dienstknoten 120 an das Überlagerungsnetzwerk 210 warten. Zum Beispiel können die Dienstknoten 120, die in 1 und 2 gezeigt sind, regelmäßig Anzeigen an das Überlagerungsnetzwerk 210 übertragen und somit können die Informationsdienstknoten 130 auf das nächste Berichten warten, um Anzeigen zu speichern, die jeweiligen Attributteilräumen zugeordnet sind.

Anstelle eines Verwendens des oben beschriebenen lokalen Teilungsalgorithmus mit zwei Clustern kann der globale Teilungsalgorithmus den lokalen Teilungsalgorithmus mit drei Clustern anwenden, bei dem eine Wahrscheinlichkeit für den dritten Cluster bestimmt wird. Der lokale Teilungsalgorithmus mit drei Clustern wird angewandt, bis der Satz von Informationsdienstknoten, die Zusammenfassungen liefern, erschöpft ist. Dann werden die globalen Caches basierend auf den neu zugewiesenen Attributteilräumen wieder bestückt.

12 stellt ein Flussdiagramm eines Verfahrens 1200 zum Anwenden eines lokalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel dar. Bei einem Schritt 1201 empfängt ein Informationsdienstknoten in dem Überlagerungsnetzwerk 210, wie beispielsweise der Informationsdienstknoten 130b, eine Anforderung. Die Anforderung kann eine Teilnahmeanforderung oder irgendeine Nachricht sein, die das Teilen der Arbeitslast des Informationsdienstknotens 130b aufruft. Zum Beispiel kann der Informationsdienstknoten 130b der Informationsdienstknoten sein, der die höchste Arbeitslast in der Obere-K-Liste oder eine der höchsten Arbeitslasten in der Obere-K-Liste aufweist. Die maximale Routingtabellenebene in dem Überlagerungsnetzwerk 210, die in der oben mit Bezug auf 7 beschriebenen K-min-Ebene-Liste vorgesehen sein kann, und die höchste Routingtabellenebene eines ausgewählten Informationsdienstknotens, die ebenfalls in der K-min-Ebene-Liste vorgesehen sein kann, können ebenfalls bei einem Auswählen eines Informationsdienstknotens für ein Teilen betrachtet werden. Zum Beispiel überträgt der Informationsdienstknoten 130c eine Beitrittsanforderung an das Überlagerungsnetzwerk 210. Die Beitrittsanforderung kann an einen Informationsdienstknoten übertragen werden, wie beispielsweise den Informationsdienstknoten 130e, der sich, wie es bestimmt wurde, in enger Netzwerknähe zu dem Informationsdienstknoten 130c befindet. Der Informationsdienstknoten 130e wählt den Informationsdienstknoten 130b in der Obere-K-Liste aus, der die höchste Arbeitslast aufweist. Der Informationsdienstknoten 130e vergleicht ferner die höchste Routingtabellenebene des Informationsdienstknotens 130b mit der maximalen Routingtabellenebene des Überlagerungsnetzwerks 210. Falls die Differenz der Routingtabellenebenen größer als eine Schwelle ist, dann kann ein anderer Informationsdienstknoten für ein Teilen ausgewählt werden. Der andere Informationsdienstknoten kann ein anderer Informationsdienstknoten aus der Obere-K-Liste sein. Durch ein Nutzen dieses Routingtabellenebenenvergleichs wird ein unausgeglichener Dienstbaum minimiert, der durch ein übermäßiges Teilen in einem Bereich des Dienstbaums bewirkt wird.

Bei 1202 wendet der Informationsdienstknoten 130b einen lokalen Teilungsalgorithmus an, um die Arbeitslast des Informationsdienstknotens 130b zu teilen, falls der Informationsdienstknoten 130b bei dem Schritt 1201 ausgewählt wird. Zum Beispiel wendet der Informationsdienstknoten 130b einen der lokalen Teilungsalgorithmen, die oben beschrieben sind, an, um ein Attribut und zumindest einen Attributteilungswert zum Teilen der Arbeitslast des Informationsdienstknotens 130b mit dem Informationsdienstknoten 130c auszuwählen.

13 stellt ein Flussdiagramm eines Verfahrens 1300 zum Anwenden eines globalen Teilungsalgorithmus gemäß einem Ausführungsbeispiel dar. Das Verfahren 1300 ist mit Bezug auf die 10 und 11A-B durch ein Beispiel und ohne Einschränkung beschrieben. Bei einem Schritt 1301 empfängt der zentrale Knoten 1010 die Zusammenfassungen 1030 von den Informationsdienstknoten 130.

Bei einem Schritt 1302 wählt der zentrale Knoten 1010 ein Attribut und zumindest einen Attributteilungswert basierend auf einer statistischen Analyse der Zusammenfassungen aus. Die statistische Analyse kann die Anwendung von einem der lokalen Teilungsalgorithmen, die oben beschrieben sind, auf die Zusammenfassungen 1030 umfassen.

Bei einem Schritt 1303 weist der zentrale Knoten 1010 Arbeitslasten zwei Knoten, z. B. den Informationsdienstknoten 130d und 130a, aus dem Satz von Informationsdienstknoten 1100 zu, der in 11 gezeigt ist, als ob die zwei Knoten die einzigen Informationsdienstknoten in dem Überlagerungsnetzwerk 210 sind. Die zugewiesenen Arbeitslasten basieren auf dem zumindest einen Teilungswert.

Bei einem Schritt 1304 bestimmt der zentrale Knoten 1010, ob allen Informationsdienstknoten in dem Satz 1100 Arbeitslasten zugewiesen wurden. Falls nicht, werden die Schritte 1302 und 1303 wiederholt.

6. Nachbildungszuweisung

Gemäß einem Ausführungsbeispiel wird, wenn ein neuer Knoten verfügbar ist, um dem Überlagerungsnetzwerk 210 beizutreten, eine Beitrittsanforderung an den Informationsdienstknoten in der Obere-K-Liste weitergeleitet, der die höchste Arbeitslast aufweist. Dann teilt dieser Informationsdienstknoten die Arbeitslast desselben mit dem neuen Knoten basierend auf der Anwendung eines lokalen Teilungsalgorithmus. In bestimmten Situationen kann es, anstatt die Arbeitslast eines Informationsdienstknotens zu teilen, günstiger sein, einen existierende Informationsdienstknoten in einem anderen Bereich des Netzwerks 100, das in 1 und 2 gezeigt ist, zu reproduzieren, um eine Latenz zwischen den Benutzerknoten, die Informationen für bestimmte Dienste anfordern, und den Informationsdienstknoten zu reduzieren, die die Anzeigen speichern, die für die Anforderungen relevant sind. Beispielsweise kann ein Informationsdienstknoten bei einer neuen Position in dem Netzwerk 100 dupliziert werden, falls bestimmt wird, dass Benutzerknoten hohe Latenzen von dem Informationsdienstknoten erfahren, der Abfragen verarbeitet und Ergebnisse zu den Benutzerknoten sendet.

Bei einem Beispiel kann ein Informationsdienstknoten reproduziert werden, anstatt die Arbeitslast eines Informationsdienstknotens zu teilen, falls die Arbeitslasten in der Obere-K-Liste unterhalb einer Schwelle liegen. Dann kann angenommen werden, dass es günstiger ist, einen Informationsdienstknoten zu reproduzieren, um eine Latenz zu reduzieren, anstatt die Arbeitslast eines Informationsdienstknotens zu reduzieren.

Ein spezieller Informationsdienstknoten kann reproduziert werden, falls eine Latenz zwischen dem Informationsdienst und einem Benutzerknoten größer als eine Schwelle ist. Latenzen können in einem Nachbildungsinformationscache für jeden Informationsdienstknoten gespeichert sein. Der Nachbildungspositionscache 440, der in 4 gezeigt ist, für den Informationsdienstknoten 130b speichert Informationen, die den Latenzen bestimmter Informationsdienstknoten zugeordnet sind. Der Informationsdienstknoten 130b kann die Informationen in dem Nachbildungspositionscache 440 verwenden, um zu bestimmen, ob eine Nachbildung in einem anderen Bereich des Netzwerks 100 hinzuzufügen ist, um eine Latenz zu reduzieren. 14 stellt beispielsweise den Informationsdienstknoten 130b dar, der Latenzberichte 1410a-c von Benutzerknoten 110a-c in enger Nähe zu dem Informationsdienstknoten 130b empfängt. Der Informationsdienst 130b kann der Informationsdienstknoten sein, den die Benutzerknoten 110a-c anfänglich kontaktieren, wenn dieselben Abfragen an das Überlagerungsnetzwerk 210 senden. Die Berichte 1410a-c umfassen Latenzen von Informationsdienstknoten, die Abfragen verarbeiten und Abfrageergebnisse an die Benutzerknoten 110a-c senden. Die Berichte 1410a-c umfassen ferner die Identifikation eines entsprechenden Informationsdienstknotens mit jeder Latenz. Latenzen und Informationsdienstknotenidentifikationen sind in dem Nachbildungspositionscache 440 gespeichert. Der Informationsdienstknoten 130b empfängt eine Beitrittsanforderung von dem Knoten 1420. Der Informationsdienstknoten 130b bestimmt, ob die Arbeitslasten in der Obere-K-Liste unter einer Schwelle liegen. Falls die Arbeitslasten unter einer Schwelle liegen, dann wählt der Informationsdienstknoten 130b einen Informationsdienstknoten aus dem Nachbildungspositionscache aus, der eine hohe Latenz aufweist. Bei einem Beispiel wird ein Informationsdienstknoten, der aus dem Nachbildungspositionscache 440 identifiziert wird und eine Latenz größer einer Schwelle aufweist, für eine Reproduzierung ausgewählt, wie beispielsweise der Informationsdienstknoten 130f. Der Informationsdienstknoten 130f wird reproduziert, was ein Kopieren von globalen Caches und ein Speichern der Anzeigen in dem neuen Informationsdienstknoten 1420 umfassen kann, der eine Nachbildung ist. Netzwerknäheinformationen, wie beispielsweise Abstände zwischen Knoten, können auf einer Netzwerkmetrik basieren, wie beispielsweise einer Umlaufzeit, einer Anzahl von Sprüngen, etc.

15 stellt ein Flussdiagramm eines Verfahrens 1400 zum Reproduzieren eines Informationsdienstknotens gemäß einem Ausführungsbeispiel dar. Das Verfahren 1400 wird mit Bezug auf das in 14 gezeigte Beispiel durch ein Beispiel und ohne Einschränkung beschrieben. Bei einem Schritt 1501 empfängt der Informationsdienstknoten 130b eine Anforderung, wie beispielsweise eine Beitrittsanforderung, von dem Knoten 1420, was eine Arbeitslastteilung oder eine Reproduzierung veranlasst.

Bei einem Schritt 1502 bestimmt der Informationsdienstknoten 130b, ob ein Informationsdienstknoten zu reproduzieren oder die Arbeitslast eines Informationsdienstknotens zu teilen ist. Bei einem Beispiel kann ein Informationsdienstknoten anstelle eines Teilens der Arbeitslast eines Informationsdienstknotens reproduziert werden, falls die Arbeitslasten in der Obere-K-Liste unterhalb einer Schwelle liegen.

Bei einem Schritt 1503 wählt, falls der Informationsdienstknoten 130b bestimmt, einen Informationsdienstknoten zu reproduzieren, der Informationsdienstknoten 130b einen Informationsdienstknoten aus, der reproduziert werden soll.

Faktoren, die bei einem Auswählen eines Informationsdienstknotens für eine Reproduzierung betrachtet werden, umfassen eine Latenz eines Informationsdienstknotens und einen Abstand zwischen dem Knoten 1420 und dem Benutzerknoten. Hinsichtlich eines Abstands beispielsweise wird ein neuer Knoten ausgewählt, um eine Nachbildung zu sein, der sich in der gleichen Netzwerknähe zu dem Benutzerknoten, der die hohe Latenz aufweist, und dem Informationsdienstknoten 130b befindet, falls der Informationsdienstknoten 130b der Knoten ist, der Berichte von dem Benutzerknoten empfängt.

Bei einem Schritt 1504 wird der ausgewählte Informationsdienstknoten reproduziert. Zum Beispiel werden die globalen Caches und die Routingtabelle des Informationsdienstknotens 130f zu dem Knoten 1420 kopiert.

16 stellt ein exemplarisches Blockdiagramm eines Computersystems 1600 dar, das als ein Informationsdienstknoten in dem Überlagerungsnetzwerk 210 verwendet werden kann. Das Computersystem 1600 umfasst einen oder mehrere Prozessoren, wie beispielsweise einen Prozessor 1602, die eine Ausführungsplattform zum Ausführen einer Software liefern.

Befehle und Daten von dem Prozessor 1602 werden über einen Kommunikationsbus 1604 kommuniziert. Das Computersystem 1600 umfasst ferner einen Hauptspeicher 1606, wie beispielsweise einen Direktzugriffsspeicher (RAM = Random Access Memory), in dem eine Software während einer Laufzeit resident sein kann, und einen sekundären Speicher 1608. Der sekundäre Speicher 1608 umfasst beispielsweise ein Festplattenlaufwerk 1610 und/oder ein entfernbares Speicherungslaufwerk 1612, das ein Diskettenlaufwerk, ein Magnetbandlaufwert, ein CD-Laufwerk (CD = Compact Disk) etc. darstellt, oder einen nicht flüchtigen Speicher, in dem eine Kopie der Software gespeichert sein kann. Der sekundäre Speicher 1608 kann ferner einen ROM (Read-Only Memory = Nur-Lese-Speicher), einen EPROM (Erasable, Programmable ROM = löschbarer, programmierbarer ROM), einen EEPROM (Electrically Erasable, Programmable ROM = elektrisch löschbarer, programmierbarer ROM) umfassen. Zusätzlich zu einer Software, können Routingtabellen, die globale Informationstabelle und gemessene QoS-Charakteristika, eine gemessene verfügbare Bandbreite und eine Bandbreite, die für Dienste erforderlich ist, in dem Hauptspeicher 1606 und/oder dem sekundären Speicher 1608 gespeichert sein. Das entfernbare Speicherungslaufwerk 1612 liest von und/oder schreibt zu einer entfernbaren Speicherungseinheit 1614 auf eine gut bekannte Weise.

Ein Benutzer stellt mit einem oder mehreren Eingabegeräten 1628, wie beispielsweise einer Tastatur, einer Maus, einem Schreibstift und dergleichen, eine Schnittstelle mit dem Computersystem 1600 her. Der Anzeigeadapter 1622 stellt eine Schnittstelle mit dem Kommunikationsbus 1604 und der Anzeige 1620 her und empfängt Anzeigedaten von dem Prozessor 1602 und wandelt die Anzeigedaten in Anzeigebefehle für die Anzeige 1620 um. Eine Netzwerkschnittstelle 1630 ist für ein Kommunizieren mit anderen Knoten vorgesehen.

Einer oder mehrere der Schritte der Verfahren 1200, 1300 und 1500 können als eine Software implementiert sein, die auf einem computerlesbaren Medium eingebettet ist, wie beispielsweise dem Speicher 1606 und/oder 1608, und beispielsweise durch den Prozessor 1602 an dem Computersystem 1600 ausgeführt wird. Die Schritte können durch ein Computerprogramm ausgeführt sein, das in einer Vielfalt von Formen existieren kann, sowohl aktiv als auch inaktiv. Zum Beispiel können dieselben als ein Softwareprogramm (Softwareprogramme) existieren, das (die) aus Programmanweisungen in einem Quellcode, einem Objektcode, einem ausführbaren Code oder anderen Formaten zum Durchführen einiger der Schritte gebildet ist (sind). Irgendwelche der Obigen können auf einem computerlesbaren Medium verkörpert sein, das Speicherungsvorrichtungen und Signale umfasst, in komprimierter oder unkomprimierter Form. Beispiele von geeigneten computerlesbaren Speichervorrichtungen umfassen einen herkömmlichen Computersystem-RAM (Direktzugriffsspeicher), ROM (Nur-Lese-Speicher), EPROM (löschbarer, programmierbarer ROM), EERPOM (elektrisch löschbarer, programmierbarer ROM) und magnetische oder optische Platten oder Bänder. Beispiele von computerlesbaren Signalen, ob dieselben unter Verwendung eines Trägers moduliert sind oder nicht, sind Signale, auf die zuzugreifen ein Computersystem, das das Computerprogramm hostet oder ausführt, konfiguriert sein kann, einschließlich Signalen, die durch das Internet oder andere Netzwerke heruntergeladen werden. Konkrete Beispiele des Vorhergehenden umfassen eine Verteilung der Programme auf eine CD-ROM oder über eine Internet-Herunterladung. In einer Hinsicht ist das Internet selbst als eine abstrakte Entität ein computerlesbares Medium. Das gleiche gilt für Computernetzwerke im Allgemeinen. Es ist deshalb klar, dass diese Funktionen, die unten aufgezählt sind, durch irgendeine elektronische Vorrichtung durchgeführt werden können, die zum Ausführen der oben beschriebenen Funktionen in der Lage ist.

Während Ausführungsbeispiele mit Bezug auf Beispiele beschrieben wurden, sind Fachleute auf dem Gebiet in der Lage, verschiedene Modifikationen an den beschriebenen Ausführungsbeispielen vorzunehmen, ohne von der wahren Wesensart und dem Schutzbereich abzuweichen. Die Begriffe und Beschreibungen, die hierin verwendet werden, sind lediglich durch eine Darstellung dargelegt und sind nicht als Einschränkungen gemeint. Obwohl die Verfahren durch Beispiele beschrieben wurden, können insbesondere Schritte der Verfahren in unterschiedlichen Reihenfolgen als dargestellt oder simultan durchgeführt werden. Fachleute auf dem Gebiet erkennen, dass diese und andere Variationen innerhalb der Wesensart und des Schutzbereichs möglich sind, wie es in den folgenden Ansprüchen und den Äquivalenten derselben definiert ist.

Zusammenfassung

Um mit der zunehmenden Arbeitslast bei expandierenden Netzwerken umzugehen, wird eine dezentralisierte Arbeitslastausgleichstechnik benötigt, die ebenfalls die Ansprechzeit während Verkehrsspitzen reduziert, und wird ein Knoten aus einem Satz von Knoten in einem Partner-zu-Partner-Netzwerk identifiziert, der die höchsten Arbeitslasten in dem Partner-zu-Partner-Netzwerk (210) aufweist. Die Arbeitslast des Knotens (130b) wird mit einem anderen Knoten (130c) unter Verwendung eines Teilungsalgorithmus geteilt.


Anspruch[de]
Ein Verfahren, das folgende Schritte aufweist:

Empfangen einer Anforderung an einem Knoten (130b), der eine Arbeitslast aufweist, von der bestimmt ist, dass sich dieselbe in einem Satz von höchsten Arbeitslasten (712) für Knoten in einem Partner-zu-Partner-Netzwerk (210) befindet; und

Teilen der Arbeitslast des Knotens (130b) mit einem zweiten Knoten (130c) in dem Partner-zu-Partner-Netzwerk (210) unter Verwendung eines Teilungsalgorithmus.
Das Verfahren gemäß Anspruch 1, bei dem die Knoten (130) in dem Partner-zu-Partner-Netzwerk (210) wirksam sind, um Informationen zu speichern, die Attributen und Attributwerten für Dienste zugeordnet sind, und das Teilen der Arbeitslast des Knotens (130b) ferner folgende Schritte aufweist:

Bestimmen eines Attributs und zumindest eines Attributteilungswerts unter Verwendung des Teilungsalgorithmus; und

Teilen der Arbeitslast des Knotens (130b) basierend auf dem Attribut und dem zumindest einen Attributteilungswert.
Das Verfahren gemäß Anspruch 2, bei dem das Teilen der Arbeitslast des Knotens (130b) ferner folgende Schritte aufweist:

Bestimmen zweier Bereiche von Attributwerten für das Attribut, wobei ein erster Bereich Attributwerte unter dem zumindest einen Attributteilungswert umfasst und ein zweiter Bereich Attributwerte über dem zumindest einen Attributteilungswert umfasst;

Zuweisen des Knotens (130b), um Informationen über Dienste zu speichern, die einen Attributwert in einem der zwei Bereiche aufweisen; und

Zuweisen des zweiten Knotens (130c), um Informationen über Dienste zu speichern, die einen Attributwert in dem anderen der zwei Bereiche aufweisen.
Das Verfahren gemäß Anspruch 3, bei dem das Teilen der Arbeitslast des Knotens ferner folgenden Schritt aufweist:

Übertragen von Informationen für Dienste von dem Knoten (130b) an den zweiten Knoten (130c), wobei die übertragenen Informationen Informationen für Dienste umfassen, die Attributwerte in dem Bereich aufweisen, der dem zweiten Knoten (130b) zugewiesen ist.
Das Verfahren gemäß Anspruch 3, bei dem das Teilen der Arbeitslast des Knotens (130b) ferner folgenden Schritt aufweist:

Erzeugen einer Routingtabelle für den zweiten Knoten (130c) unter Verwendung einer Routingtabelle für den Knoten (130b), wobei die Routingtabelle für den zweiten Knoten (130c) einen Eintrag einer höchsten Ebene umfasst, der einem Eintrag auf höchster Ebene für den Knoten (130b) zugeordnet ist.
Das Verfahren gemäß Anspruch 3, bei dem der Teilungsalgorithmus einen Cluster-Algorithmus aufweist und das Auswählen eines Attributs und zumindest eines Attributteilungswerts unter Verwendung des Teilungsalgorithmus ferner folgende Schritte aufweist:

Bestimmen von zumindest zwei Clustern aus Daten, die bei dem Knoten gespeichert sind, unter Verwendung des Cluster-Algorithmus; und

Auswählen des Attributs und eines Attributteilungswerts basierend auf den zumindest zwei Clustern.
Das Verfahren gemäß Anspruch 3, bei dem der Teilungsalgorithmus einen Cluster-Algorithmus aufweist und das Auswählen eines Attributs und zumindest eines Attributsteilungswerts unter Verwendung des Teilungsalgorithmus ferner folgende Schritte aufweist:

Bestimmen dreier Cluster aus Daten, die bei dem Knoten (130b) gespeichert sind, unter Verwendung des Cluster-Algorithmus; und

Auswählen des Attributs und zweier Attributteilungswerte basierend auf den drei Clustern.
Das Verfahren gemäß Anspruch 7, bei dem das Teilen der Arbeitslast des Knotens (130b) ferner folgende Schritte aufweist:

Bestimmen dreier Bereiche von Attributwerten für das ausgewählte Attribut basierend auf den zwei Attributteilungswerten;

Zuweisen des Knotens (130b), um Informationen über Dienste zu speichern, die Attributwerte in einem der drei Bereiche aufweisen;

Zuweisen des zweiten Knotens (130c), um Informationen über Dienste zu speichern, die Attributwerte in einem zweiten der drei Bereiche aufweisen; und

Zuweisen sowohl des Knotens (130b) als auch des zweiten Knotens (130c), um Informationen über Dienste zu speichern, die Attributwerte in einem dritten der drei Bereiche aufweisen.
Das Verfahren gemäß Anspruch 8, bei dem das Zuweisen sowohl des Knotens (130b) als auch des zweiten Knotens (130c), um Informationen über Dienste zu speichern, die Attributwerte in einem dritten der drei Bereiche aufweisen, ferner folgenden Schritt aufweist:

Zuweisen von Wahrscheinlichkeiten, dass der Knoten (130b) und der zweite Knoten (130c) Informationen über Dienste speichern, die Attributwerte in dem dritten der drei Bereiche aufweisen.
Ein Knoten (130b) in einem Netzwerk (210), wobei der Knoten (130b) einer aus einem Satz von Knoten in dem Netzwerk (210) ist, von denen bestimmt ist, dass dieselben höchste Arbeitslasten aufweisen, wobei der Knoten (130b) folgende Merkmale aufweist:

eine Netzwerkschnittstelle (1530), die wirksam ist, um eine Beitrittsanforderung zu empfangen; und

eine Verarbeitungsschaltung (1502), die wirksam ist, um einen Cluster-Algorithmus anzuwenden, um die Arbeitslast des Knotens (130b) mit einem anderen Knoten (130c) zu teilen, der dem Netzwerk (210) beitritt.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com