DE112005003037T5 - Bestimmen höchster Arbeitslasten für Knoten in einem Überlagerungsnetzwerk - Google Patents
Bestimmen höchster Arbeitslasten für Knoten in einem Überlagerungsnetzwerk Download PDFInfo
- Publication number
- DE112005003037T5 DE112005003037T5 DE112005003037T DE112005003037T DE112005003037T5 DE 112005003037 T5 DE112005003037 T5 DE 112005003037T5 DE 112005003037 T DE112005003037 T DE 112005003037T DE 112005003037 T DE112005003037 T DE 112005003037T DE 112005003037 T5 DE112005003037 T5 DE 112005003037T5
- Authority
- DE
- Germany
- Prior art keywords
- list
- information service
- node
- nodes
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/26—Route discovery packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1093—Some peer nodes performing special functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
Routen einer Liste (712) des Satzes von Knoten, die höchste Arbeitslasten in dem Netzwerk (210) aufweisen, durch Knoten in dem Netzwerk (210) hindurch zu einem endgültigen Bestimmungsort (701) in dem Netzwerk (210); und
Bestimmen, ob eine Arbeitslast eines jeweiligen Knotens, der die Liste (712) empfängt, einzuschließen ist, an jedem Knoten, der die Liste (712) empfängt, wenn die Liste (712) zu dem endgültigen Bestimmungsort (701) geroutet wird.
Description
- Technisches Gebiet
- Diese Erfindung bezieht sich allgemein auf Netzwerke. Insbesondere bezieht sich die Erfindung auf Arbeitslasten für 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.
- Zusammenfassung
- Gemäß einem Ausführungsbeispiel sind Knoten in einem Netzwerk wirksam, um einen Informationsdienst zu liefern. Ein Satz der Knoten, die eine höchste Arbeitslast aufweisen, werden durch ein Routen (Leiten) einer Liste von Arbeitslasten für die Knoten durch die Knoten in dem Überlagerungsnetzwerk hindurch zu einem endgültigen Bestimmungsort in dem Netzwerk identifiziert. Jeder Knoten, der die Liste empfängt, bestimmt, ob eine Arbeitslast in die Liste einzuschließen ist.
- 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ührungsbei spiele in Verbindung mit den zugehörigen Figuren besser verständlich werden, in denen:
-
1 ein 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; -
9 ein Flussdiagramm eines Verfahrens, das Schritte in einer Austauschphase umfasst, gemäß einem Ausführungsbeispiel darstellt; -
10 ein Flussdiagramm eines Verfahrens für einen Obere-K-Routing-Algorithmus (Top-K-Routing-Algorithmus) gemäß einem Ausführungsbeispiel darstellt; und -
11 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 Infor mationsdienstknoten 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 Netzwerk100 dar, das Benutzerknoten110 , Dienstknoten120 und Informationsdienstknoten130 umfasst. Ein Beispiel des Netzwerks100 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 Netzwerk100 verfügbar ist, und falls der Dienst verfügbar ist, welcher Dienstknoten zum Empfangen des Dienstes zu kontaktieren ist. Die Dienstknoten120 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 Informationsdienstknoten130 ermöglichen die Entdeckung von Diensten in dem Netzwerk100 . Zusätzlich zu einer Dienstentdeckung gleichen die Informationsdienstknoten130 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. beschrieben sind, und führen ein Routen durch, wie es in der ebenfalls anhängigen US-Patentanmeldung (Anwaltsaktenzeichen Nr. 200406058-1) mit dem Titel „Routing A Service Query In An Overlay Network" von Sujoy Basu et al. beschrieben ist, die beide durch Bezugnahme in ihrer Gesamtheit aufgenommen sind. Wie es oben beschrieben ist, führt der Informationsdienst, einschließlich der Informationsdienstknoten130 , Funktionen durch, die der Entdeckung von Diensten in dem Netzwerk100 zugeordnet sind. Zwei wichtige Funktionen umfassen das Speichern von Informationen über verfügbare Dienste und das Ansprechen auf Abfragen über verfügbare Dienste. Die Informationsdienstknoten130 sind in einem Partner-zu-Partner-Netzwerk, in2 gezeigt, in dem Netzwerk100 vorgesehen. Das Partner-zu-Partner-Netzwerk200 und ein Überlagerungsnetzwerk210 für das Partner-zu-Partner-Netzwerk200 werden unter anderem zum Speichern von Informationen über Dienste in den Informationsdienstknoten130 , zum Routen unter den Informationsdienstknoten130 und zum Ansprechen auf Abfragen verwendet. - Wie es in
2 gezeigt ist, überlagert das Überlagerungsnetzwerk210 das darunter liegende Partner-zu-Partner-Netzwerk200 . Das Überlagerungsnetzwerk210 ist eine logische Darstellung des Partner-zu-Partner-Netzwerks200 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 Informationsdienstknoten130 , die in dem Netzwerk100 zentral positioniert sind, und die Benutzerknoten110 sowie die Dienstknoten120 , die in dem Überlagerungsnetzwerk210 vorgesehen sind, zu Zwecken eines Darstellens dar, dass das Partner-zu-Partner-Netzwerk200 die Informationsdienstknoten130 umfasst und dass die Benutzerknoten110 und die Dienstknoten120 mit den Informationsdienstknoten130 in dem Partner-zu-Partner-Netzwerk200 kommunizieren, wenn es erforderlich ist. Die Informationsdienstknoten130 können in mehreren unterschiedlichen Bereichen des Netzwerks100 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 Attributraum300 , der in3 gezeigt ist. Der Attributraum300 umfasst alle Informationen über verfügbare Dienste in dem Partner-zu-Partner-Netzwerk100 . Der Attributraum300 ist eine logische Darstellung der Informationen, die in dem Informationsdienst gespeichert sind. - Der Attributraum
300 ist unter den Informationsdienstknoten130 verteilt. Lediglich drei Informationsdienstknoten130a –c sind in3 zu Darstellungszwecken gezeigt. Jedem der Informationsdienstknoten130 ist eine Verantwortung für einen Attributteilraum in dem Attributraum300 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 Informationsdienstknoten130 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 Netzwerk100 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 1Speicher: 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 Informationsdienstknoten130a der Attributteilraum zugewiesen, der durch die Attributwerte von Speicher <= 1 GB definiert ist. Eine Anzeige310 für den Gitterrechendienst 1, der die Attributwerte in Tabelle 1 umfasst, ist an dem Informationsdienstknoten130a gespeichert, weil der Informationsdienstknoten130a 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 Dienstknoten120 misst oder bestimmt anderweitig die Attributwerte für jedes der Attribute in dem vorbestimmten Satz von Attributen. Jeder der Dienstknoten120 sendet ferner regelmäßig die Anzeigen desselben zu dem Informationsdienst. Das Überlagerungsnetzwerk210 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 Anzeige130 für den Gitterrechendienst 1. Ein Dienstknoten, der den Gitterrechendienst 1 liefert, misst oder bestimmt anderweitig beispielsweise regelmäßig die Attributwerte für den Gitterre chendienst 1, die in Tabelle 1 gezeigt sind, und überträgt die Anzeige310 , die die Attributwerte umfasst, zu dem Überlagerungsnetzwerk210 für eine Speicherung in dem Informationsdienstknoten, der den Attributteilraum besitzt, in den die Anzeige fällt. Bei dem in3 gezeigten Beispiel routeten die Informationsdienstknoten130 eine Anzeige310 für den Gitterrechendienst 1 zu dem Informationsdienstknoten130a , weil der Informationsdienstknoten130a alle Informationen über Dienste speichert, die zu dem Überlagerungsnetzwerk210 ü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 11 GB schneidet den Attributbereich von Speicher <= 1 GB für den Attributteilraum des Informationsdienstknotens130a , d. h. ist in demselben enthalten. Somit fällt der Gitterrechendienst 1 in den Attributteilraum des Informationsdienstknotens130a . - 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 Überlagerungsnetzwerk210 , das in2 gezeigt ist, eine Abfrage320 empfangen, die in3 gezeigt ist, und eine Anforderung nach einem Dienst mit einem Attribut von Speicher > 1 GB und Plattenraum = 2 GB umfassen. Die Abfrage320 fällt in den Attributteilraum, den der Informationsdienstknoten130b besitzt. Somit wird die Abfrage320 durch das Überlagerungsnetzwerk210 hindurch zu dem Informationsdienstknoten130b geroutet. Die Abrage320 wird automatisch zu dem Informationsdienstknoten130b geroutet und in demselben gespeichert und der Informationsdienstknoten130b spricht auf die Abfrage durch ein Durchsuchen der Anzeigen, die in dem Informationsdienstknoten130b gespeichert sind, und ein Senden jeglicher Übereinstimmungen zu dem Knoten an, der den Dienst anfordert. - Das Überlagerungsnetzwerk
210 , das den Attributraum300 umfasst, unterstützt Bereichsabfragen. Bereichsabfragen umfassen einen oder mehrere Attributbereiche, die einen erwünschten Dienst identifizieren. Die Informationsdienstknoten130 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 Informationsdienstknoten130b , gespeichert sind. Der Informationsdienstknoten130b umfasst einen Speichercache410 , eine Überlagerungsroutingtabelle420 und einen Nachbildungspositionscache440 . Der Speichercache410 speichert lokale Abfragen401 und globale Abfragen402 . Der Speichercache410 speichert ferner lokale Anzeigen405 und globale Anzeigen406 . Die globalen Abfragen402 umfassen Abfragen, die durch das Überlagerungsnetzwerk210 hindurch zu dem Informationsdienstknoten130b geroutet werden, weil die Abfragen in den Attributteilraum fallen, den der Informationsspeicherknoten130b besitzt. Die Abfrage320 , die in3 gezeigt ist, ist ein Beispiel einer globalen Abfrage. - Die lokalen Abfragen
401 umfassen irgendeine Abfrage, die durch den Informationsdienstknoten130b empfangen wird. Zum Beispiel kann der Informationsdienstknoten130a eine Abfrage empfangen und die Abfrage zu dem Bestimmungsort derselben in dem Überlagerungsnetzwerk210 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 Speichercache410 lokal Cache-gespeichert. Ferner durchsucht der Informationsdienstknoten130b vor einem Weiterleiten der Abfrage zu dem Bestimmungsort derselben hin die lokalen Anzeigen405 , die in dem Speichercache410 gespeichert sind, um zu bestimmen, ob irgendwelche Übereinstimmungen mit der Abfrage gefunden werden. Falls eine Übereinstimmung gefunden wird, spricht der Informationsdienstknoten130b auf die Abfrage beispielsweise durch ein Senden der übereinstimmenden Anzeige zu dem Knoten an, der den Dienst und den zugeordneten Dienstknoten anfordert. Der Informationsdienstknoten130b 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 Informationsdienstknoten130b die Abfrage eventuell nicht weiter, falls eine Übereinstimmung lokal Cache-gespeichert ist. - Die globalen Anzeigen
406 umfassen Anzeigen, die durch das Überlagerungsnetzwerk210 hindurch zu dem Informationsdienstknoten130b geroutet werden, weil die Anzeigen in den Attributteilraum fallen, den der Informationsspeicherknoten130b besitzt. Die Anzeige310 , die in3 gezeigt ist, ist ein Beispiel einer globalen Anzeige für den Informationsdienstknoten130a . - Die lokalen Anzeigen
405 umfassen irgendeine Anzeige, die durch den Informationsdienstknoten130a empfangen wird. Beispielsweise kann der Informationsdienstknoten130a eine Anzeige empfangen und die Anzeige zu dem Bestimmungsort derselben hin weiterleiten. Diese Anzeigen sind lokal in dem Speichercache410 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 Überlagerungsroutingtabelle420 . Die Überlagerungsroutingtabelle420 umfasst die folgenden Felder: Ebene421 , IP-Adresse422 , Wahrscheinlichkeit423 und Attributbereich424 . Die Ebene421 ist im Allgemeinen der Anzahl von Malen zugeordnet, die der Informationsdienstknoten130b die Arbeitslast desselben mit einem anderen Informationsdienstknoten geteilt hat. Wenn der Informationsdienstknoten130b die Arbeitslast desselben mit einem anderen Informationsdienstknoten teilt, wird ein neuer Eintrag in der Routingtabelle in dem Informationsdienstknoten130b auf einer größeren Ebene erzeugt als der bestehenden höchsten Ebene in der Routingtabelle. Beispielsweise wurden die Einträge431 und432 auf einer Ebene 1 erzeugt, als der Informationsdienstknoten130b die Arbeitslast desselben mit den Informationsdienstknoten130c teilte. Der Eintrag433 wurde auf einer Ebene 2 erzeugt, als der Informationsdienstknoten130b nachfolgend die Arbeitslast desselben mit dem Informationsdienstknoten130d teilte. Eine Arbeitslastteilung kann durchgeführt werden, wenn eine Bestimmung vorgenommen wird, dass ein Informationsdienstknoten im Vergleich zu anderen Informationsdienstknoten in dem Überlagerungsnetzwerk210 eine hohe Arbeitslast aufweist. Die Wahrscheinlichkeiten423 geben die Wahrscheinlichkeit an, dass ein Informationsdienstknoten die erwünschten Daten aufweisen wird. Zum Beispiel gibt der Eintrag430 an, dass der Informationsdienstknoten130a immer anzeigen mit Speicher <= 1 GB speichert, und gibt der Eintrag431 an, dass der Informationsdienstknoten130c immer Anzeigen mit Plattenraum <= 2 GB speichert. Der Informationsdienstknoten130c 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 Routingtabelle420 ist zu einem Identifizieren des Bestimmungsorts eines Informationsdienstknotens in einem speziellen Eintrag vorgesehen. Falls beispielsweise der Informationsdienstknoten130b eine Anzeige empfängt und bestimmt, dass die Anzeige ein Speicherattribut < 1 GB aufweist, verwendet der Informationsdienstknoten130b den Eintrag430 , um die Anzeige zu dem nächsten Bestimmungsort derselben zu routen, z. B. dem Informationsdienstknoten130a . Die IP-Adresse des Informationsdienstknotens130a kann in dem IP-Adressfeld des Eintrags430 vorgesehen sein und der Informationsdienstknoten130b verwendet ein IP-Routing, um die Nachricht zu dem Informationsdienstknoten130a in dem Netzwerk200 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 Netzwerk100 dupliziert sein, falls bestimmt wird, dass der ursprüngliche Informationsdienstknoten häufig durch Benutzerknoten in einem Bereich des Netzwerks100 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 Informationsdienstknoten130b kann die Informationen in dem Nachbildungspositionscache440 verwenden, um zu bestimmen, ob eine Nachbildung in einem anderen Bereich des Netzwerks100 hinzuzufügen ist, um eine Latenz zu reduzieren. - 4. Routing
-
5 stellt ein Beispiel eines Routens einer Abfrage501 in dem Überlagerungsnetzwerk210 dar. Ein Benutzerknoten110a überträgt die Abfrage501 zu einem Informationsdienstknoten, z. B. dem Informationsdienstknoten130a , in dem Überlagerungsnetzwerk210 . Bei einem Beispiel kann der Informationsdienstknoten, mit dem der Benutzerknoten110a einen anfänglichen Kontakt in dem Überlagerungsnetzwerk210 herstellt, basierend auf einer Netzwerknähe ausgewählt sein. Während eines Initialisierungsschritts, wenn der Benutzerknoten110a dem Partner-zu-Partner-Netzwerk100 beitritt, empfängt beispielsweise der Benutzerknoten110a eine Nachricht von einem Informationsdienstknoten, die die IP-Adresse des Informationsdienstknotens in enger Netzwerknähe zu dem Benutzerknoten110a 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 Informationsdienstknoten130a , überträgt der Benutzerknoten110b die Abfrage501 zu dem Informationsdienstknoten130a . Die Abfrage501 umfasst Attributwerte, die einen Dienst definieren, der durch den Benutzerknoten110a gewünscht wird. Die Attributwerte können ein Bereich oder ein einziger Wert sein. Bei diesem Beispiel umfasst die Abfrage501 die folgenden Attributwerte: Tabelle 2 der Attribute und Attributwerte für die Abfrage 501Speicher: 2 GB Plattenraum: 10 GB Betriebssystem: Linux 2.4 Ansprechzeit: 50–100 ms - Der Informationsdienstknoten
130a empfängt die Abfrage501 . Der Attributteilraum für den Informationsdienstknoten130a umfasst Speicher <= 1 GB. Die Abfrage501 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 Informationsdienstknotens130a enthalten und somit fällt die Abfrage501 nicht in den Attributteilraum des Informationsdienstknotens130a . - Der Informationsdienstknoten
130a identifiziert einen Informationsdienstknoten aus der Routingtabelle desselben, der die Attributwerte der Abfrage501 umfasst. Zum Beispiel beginnt der Informationsdienstknoten130a 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 Abfrage501 schneiden. Ein Eintrag510 ist gezeigt, der Folgendes umfasst: Ebene 0, IP-Adresse für den Informationsdienstkno ten130b , Wahrscheinlichkeit von 1 und Speicher > 1 GB. Basierend auf dem Eintrag510 überträgt der Informationsdienstknoten130a die Abfrage501 zu dem Informationsdienstknoten130b . Der Attributteilraum für den Informationsdienstknoten130b umfasst Ansprechzeit < 20 ms, was in dem Ansprechzeitbereich von 50–100 ms nicht enthalten ist, der in der Abfrage501 spezifiziert ist. Somit durchsucht der Informationsdienstknoten130d die Routingtabelle desselben und findet beispielsweise den Eintrag511 . Der Eintrag511 identifiziert den Informationsdienstknoten130d und die Abfrage501 wird an den Informationsdienstknoten130d übertragen. Der Informationsdienstknoten130d weist einen Attributteilraum auf, der die Attributwerte der Abfrage501 umfasst, und somit fällt die Abfrage501 in diesen Attributteilraum. Der Informationsdienstknoten130a 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 Abfrage501 spezifiziert sind, damit derselbe als eine Übereinstimmung betrachtet wird. Falls eine Übereinstimmung gefunden wird, spricht der Informationsdienstknoten130a auf die Abfrage501 durch ein Senden der Anzeigen, einschließlich beispielsweise der IP-Adresse des Dienstknotens, der den Dienst liefert, an den Benutzerknoten110a an. Der Informationsdienstknoten130a kann ferner eine Nachricht an den Dienstknoten für die Anzeige, zusammen mit der IP-Adresse des Benutzerknotens110 , senden, die angibt, dass der Benutzerknoten110a den Dienst anfordert, der in der Anzeige beschrieben ist. Die Abfrage501 ist ferner in dem globalen Cache des Informationsdienstknotens130c gespeichert. - Die Informationsdienstknoten
130a und130b können eine Kopie der Abfrage501 in dem lokalen Cache derselben vor einem Weiterleiten der Abfrage501 speichern. Ferner können die Informationsdienstknoten130a und130b bestimmen, ob irgendwelche Anzeigen, die in dem lokalen Cache derselben gespeichert sind, die Abfrage501 erfüllen, bevor die Abfrage weitergeleitet wird. Falls eine Übereinstimmung gefunden wird, kann der Informationsdienstknoten130a durch ein Senden der Anzeige, einschließlich beispielsweise der IP-Adresse des Dienstknotens, der den Dienst liefert, an den Benutzerknoten110a auf die Abfrage501 ansprechen. Der Informationsdienst130a kann ferner eine Nachricht zusammen mit der IP-Adresse des Benutzerknotens110a , die angibt, dass der Benutzerknoten110a 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 Abfrage501 zu dem Informationsdienstknoten130d geroutet, weil die Abfrage501 in den Attributteilraum des Informationsdienstknotens130d fällt. Die Abfrage501 kann weiterhin zu anderen Informationsdienstknoten geroutet werden, die eventuell Anzeigen umfassen, die mit der Abfrage501 ü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 Informationsdienstknoten130d kann die Abfrage501 zu dem Informationsdienstknoten routen, der den oben beschriebenen Attributteilraum umfasst, weil die Abfrage501 auch in diesen Attributteilraum fällt. Somit kann der Benutzerknoten110a Suchergebnisse von mehreren Informationsdienstknoten empfangen, einschließlich Informationsdienstknoten, die Übereinstimmungen in den lokalen Caches derselben finden, und der Benutzerknoten110a kann einen Dienstknoten zum Empfangen des erwünschten Dienstes auswählen. - Zusätzlich ist zu beachten, dass das Überlagerungsnetzwerk
210 Bereichsabfragen unterstützt. Die Abfrage501 umfasst einen Bereich von Attributwerten, 50–100 ms, für das Attribut Ansprechzeit. Die Abfrage501 kann einen oder mehrere Bereiche umfassen und wird zu Informationsdienstknoten geroutet, die den Bereich schneiden. Zum Beispiel kann die Abfrage501 zu einem Attributteilraum geroutet werden, der irgendeinen der Attributwerte 50–100 ms umfasst. -
6 stellt ein Routing einer Anzeige601 in dem Überlagerungsnetzwerk210 dar. Anzeigen werden auf ähnliche Weise zu Abfragen in dem Überlagerungsnetzwerk210 geroutet. Die Dienstknoten120 messen die Attribute derselben regelmäßig und übertragen die Anzeigen derselben einschließlich der gemessenen Attribute an das Überlagerungsnetzwerk210 . 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 Anzeige601 dar, die durch den Dienstknoten120b erzeugt wird. Die Anzeige601 umfasst das Folgende: Tabelle 3 von Attributwerten für die Anzeige 601Speicher: 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 Anzeige601 an den Informationsdienstknoten130a übertragen, weil beispielsweise der Informationsdienstknoten130a sich in enger Nähe zu dem Dienstknoten120b befindet. Die Anzeige601 fällt nicht in den Attributteilraum, den der Informationsdienstknoten130a besitzt, weil die Anzeige601 einen Speicher > 1 GB aufweist und der Attributteilraum für den Informationsdienstknoten130a einen Speicher <= 1 GB umfasst. Somit identifiziert der Informationsdienstknoten130a den Informationsdienstknoten130b aus einem Eintrag610 in der Routingtabelle desselben. Der Informationsdienstknoten130b beginnt beispielsweise mit dem Eintrag auf niedrigster Ebene und durchsucht die Routingtabelle desselben nach einem Eintrag, der Attributwerte umfasst, die Attributwerte in der Anzeige601 schneiden. Der Eintrag610 identifiziert den Informationsdienstknoten130b und die Anzeige601 wird an den Informationsdienstknoten130b übertragen. Die Anzeige601 fällt nicht in den Attributteilraum, den der Informationsdienstknoten130b besitzt, weil der Plattenraum in der Anzeige601 kleiner oder gleich 5 GB ist. Der Informationsdienstknoten130b identifiziert den Informationsdienstknoten130c aus einem Eintrag611 in der Routingtabelle desselben, der den Attributwert Plattenraum <= 5 GB umfasst. Die Anzeige601 fällt in den Attributteilraum des Informationsdienstknotens130c und ist bei dem Informationsdienstknoten130c gespeichert. Vor einem Weiterleiten der Anzeige601 speichern die Informationsdienstknoten130a und130b die Anzeige601 in dem lokalen Cache derselben. Zusätzlich kann der Informationsdienstknoten130c die Anzeige601 für eine Speicherung in dem globalen Cache desselben kopieren und die Anzeige601 zu anderen Informationsdienstknoten weiterleiten, die Attributteilräume umfassen, in die die Anzeige601 fällt. - 4. Verteilter Algorithmus zum Identifizieren von Obere-K-Knoten
- Eine Arbeitslast wird regelmäßig durch jeden der Informationsdienstknoten
130 in dem Überlagerungsnetzwerk210 gemessen, das in2 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 Informationsdienstknoten130 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 Überlagerungsnetzwerk210 gemessen werden, wird durch jeden der Informationsdienstknoten130 in dem Überlagerungsnetzwerk210 hindurch zu einem Führungsknoten701 geroutet, der in7 gezeigt ist. Wenn die Obere-K-Liste durch jeden der Informationsdienstknoten130 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 Informationsdienstknoten130 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ührungsknoten701 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 Überlagerungsnetzwerk210 . Wenn der min-Ebene-Vektor durch jeden der Informationsdienstknoten130 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 Informationsdienstknoten130 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ührungsknoten701 einen einzigen min-Ebene-Vektor, der eine Anzahl L von Werten umfasst. - Die höchste Ebene der Routingtabelle in den Informationsdienstknoten
130 in dem Überlagerungsnetzwerk210 wird ebenfalls durch jeden der Informationsdienstknoten130 in dem Überlagerungsnetzwerk210 hindurch zu dem gleichen Führungsknoten701 geroutet, der in7 gezeigt ist. Wenn die höchste Ebene durch jeden der Informationsdienstknoten130 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 Informationsdienstknoten130 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ührungsknoten701 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ührungsknoten701 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 Informationsdienstknoten130 hindurch übertragen. Zum Beispiel wird die Obere-K-Liste an jeden der Informationsdienstknoten130 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 Informationsdienstknoten130a –d in dem Überlagerungsnetzwerk210 umfasst. Der Führungsknoten701 ist der Informationsdienstknoten130a . Während der Austauschphase messen die Informationsdienstknoten130a –d die Arbeitslasten derselben. Die Obere-K-Liste von Arbeitslasten wird den Dienstbaum hinauf von den Blättern aus, z. B. den Informationsdienstknoten130d und130e , zu dem Führungsknoten701 ü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. - Wie es in
7 gezeigt ist, messen die Informationsdienstknoten130d und130e die Arbeitslasten derselben und erzeugen die Arbeitslastvektoren710 bzw.711 . Die Arbeitslastvektoren in dem Überlagerungsnetzwerk210 , 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 und130e erzeugen ferner min-Ebene-Vektoren720 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 Informationsdienstknoten130a –d sind in8A –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 Überlagerungsnetzwerk210 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 Überlagerungsnetzwerk210 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 Arbeitslastvektoren710 und711 Obere-K-Listen, die zu dem Informationsdienstknoten130b übertragen werden. Unter der Annahme, dass K Drei beträgt, kombiniert der Informationsdienstknoten130b die Arbeitslastvektoren710 und711 und den eigenen Arbeitslastvektor desselben zu der Obere-K-Liste712 . Die Obere-K-Liste712 wird zu dem Führungsknoten701 hin übertragen und kann die Arbeitslasten der Informationsdienstknoten130c und/oder130a umfassen, falls die Arbeitslasten derselben höher als die Arbeitslasten in der Obere-K-Liste712 sind, die durch jeden Informationsdienstknoten empfangen wird. - Während der Austauschphase werden ferner die min-Ebene-Vektoren
720 und721 zu dem Informationsdienstknoten130b übertragen. Der Informationsdienstknoten130b kombiniert die min-Ebene-Vektoren720 und721 und den eigenen min-Ebene-Vektor desselben zu der L-min-Ebene-Liste722 (auch als der L-min-Ebene-Vektor bezeichnet). Die L-min-Ebene-Liste wird zu dem Führungsknoten701 hin übertragen und kann die höchsten Routingtabellenebenen für die Informationsdienstknoten130c und/oder130a 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 Überlagerungsnetzwerk210 aufweist. Der Unterschied zwischen der höchsten Routingtabellenebene und der minimalen Ebene eines Informationsdienstknotens, der anfänglich für eine Arbeits lastteilung ausgewählte 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. Reihenfolgeinformationen730 umfassen beispielsweise Identifikationen, wie beispielsweise IP-Adressen, die Informationsdienstknoten130e und130d , derart, dass der Informationsdienstknoten130b die Obere-K-Liste712 während der Ausbreitungsphase zu den Informationsdienstknoten130e und130d überträgt. Andere Beispiele von Reihenfolgeinformationen umfassen Reihenfolgeinformationen731 an dem Informationsdienstknoten130c , wie beispielsweise die IP-Adresse des Informationsdienstknotens130b , und Reihenfolgeinformationen732 an dem Informationsdienstknoten130a , wie beispielsweise die IP-Adresse des Informationsdienstknotens130c . Während der Ausbreitungsphase wird somit die Obere-K-Liste712 den Dienstbaum herunter zu allen Informationsdienstknoten130 ü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 Informationsdienstknoten130a –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 ent sprechenden 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 Informationsdienstknoten130d in der8D beispielsweise ist die höchste oder maximale Ebene in dem Eintrag840 mit einer Ebene von 2. Der Eintrag840 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 Knoten130b als der nächste Knoten zum Empfangen der Obere-K-Liste identifiziert. Der Knoten130d überträgt die Obere-K-Liste an den Knoten130b . - Der Informationsdienstknoten
130b empfängt die Obere-K-Liste und verwendet basierend auf dem Obere-K-Routing-Algorithmus den Eintrag820 der Routingtabelle für den Informationsdienstknoten130b , der in8b gezeigt ist, um den Informationsdienstknoten130c als den nächsten Informationsdienstknoten zu identifizieren, der die Obere-K-Liste empfangen soll. Der Informationsdienstknoten130b schließt die Arbeitslast desselben in die Obere-K-Liste ein und überträgt die Obere-K-Liste an den Informationsdienstknoten130c . - Bei diesem Beispiel ist der Wert von K = 3. Der Informationsdienstknoten
130c empfängt ferner die Arbeitslasten der Informationsdienstknoten130b ,130d und130e , wie es in7 gezeigt ist. Falls die Arbeitslast des Informationsdienstknotens130c geringer als die Arbeitslasten der Informationsdienstknoten130b ,130d und130e ist, dann schließt der Informationsdienstknoten130c die Arbeitslast desselben nicht in die Obere-K-Liste ein. Der Eintrag830 der Routingtabelle für den Informationsdienstknoten130c identifiziert den Informationsdienstknoten130a als den nächsten Knoten zum Empfangen der Obere-K-Liste basierend auf dem Obere-K-Routing-Algorithmus. Der Informationsdienstknoten130a bestimmt, ob die Arbeitslast desselben größer als die drei Arbeitslasten in der Obere-K-Liste ist. Falls dem so ist, schließt der Informationsdienstknoten103a die Arbeitslast desselben in die Obere-K-Liste ein. Ferner ist der Informationsdienstknoten130a 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 Informationsdienstknoten130a , die in8A gezeigt ist, umfasst einen Eintrag810 . Der Eintrag810 umfasst einen Attributbereich, der größer als der entsprechende Teilungswert von 1 GB ist. Somit umfasst die Routingtabelle des Informationsdienstknotens130a lediglich Attributbereiche, die größer als ein entsprechender Teilungswert sind, und der Informationsdienstknoten130a ist der Führungsknoten. Im Gegensatz dazu umfassen die Routingtabellen der Informationsdienstknoten130b –d zumindest einen Attributbereich, der geringer als entsprechender Teilungswert ist, wie beispielsweise die Einträge820 ,830 und840 . - 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 Informationsdienstknoten130a , die Obere-K-Liste an den Informationsdienstknoten130c . 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 Überlagerungsnetzwerk210 . Diese Werte werden zwischen den Informationsdienstknoten130 ü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. -
9 stellt ein Verfahren900 , das Schritte in der Austauschphase umfasst, gemäß einem Ausführungsbeispiel dar. Das Verfahren900 ist mit Bezug auf1 -8 durch ein Beispiel und ohne Einschränkung beschrieben. Bei einem Schritt901 wird die Obere-K-Liste durch die Informationsdienstknoten130 in dem Überlagerungsnetzwerk210 hindurch zu einem endgültigen Bestimmungsort in dem Überlagerungsnetzwerk210 geroutet. Bei einem Beispiel umfasst der endgültige Bestimmungsort den Führungsknoten130a , der in7 gezeigt ist. Während der Austauschphase empfängt der Führungsknoten130a , der in7 gezeigt ist, die Obere-K-Liste einschließlich einer Identifikation der Informationsdienstknoten, die die oberen K höchsten Arbeitslasten in dem Überlagerungsnetzwerk210 aufweisen, das in2 gezeigt ist. Der Führungsknoten ist der Informationsdienstknoten mit einer Routingtabelle, die lediglich einen Attributbereich oder Attributbereiche aufweist, die größer als ein entsprechender Teilungswert in der Routingtabelle desselben sind. Der Führungsknoten kann anfänglich durch einen Administrator ausgewählt werden. Es kann ein stabiler Informationsdienstknoten als der Führungsknoten ausgewählt werden. - Bei einem Schritt
902 , der durch die Informationsdienstknoten130 durchgeführt werden kann, wenn die Obere-K-Liste zu dem endgültigen Bestimmungsort geroutet wird, bestimmt jeder Informationsdienstknoten, der die Obere-K-Liste empfängt, ob eine Arbeitslast eines jeweiligen Knotens, der die Liste empfängt, eingeschlossen werden soll. Wie es in -
7 gezeigt ist, empfängt beispielsweise der Informationsdienstknoten130c die Obere-K-Liste von dem Informationsdienstknoten130b während der Austauschphase. Falls die Arbeitslast des Informationsdienstknotens130c geringer als die Arbeitslasten der Informationsdienstknoten130b und130d ist, dann schließt der Informationsdienstknoten130c die Arbeitslast desselben für K = 2 nicht in die Obere-K-Liste ein. Falls der Informationsdienstknoten130c bestimmt, dass die Arbeitslast desselben größer als die zwei Arbeitslasten in der Obere-K-Liste ist, wird die Arbeitslast des Informationsdienstknotens130c in die Obere-K-Liste eingeschlossen und wird die Obere-K-Liste zu dem endgültigen Bestimmungsort hin geroutet, wie beispielsweise dem Führungsknoten130a . -
10 stellt ein Flussdiagramm für ein Verfahren1000 für den Obere-K-Routing-Algorithmus, der an einem Knoten durchgeführt wird, wie beispielsweise einem Informationsdienstknoten, gemäß einem Ausführungsbeispiel dar. Das Verfahren100 ist mit Bezug auf1 -8 lediglich durch ein Beispiel und ohne Einschränkung beschrieben. - Bei einem Schritt
1001 empfängt der Informationsdienstknoten130b , der in7 gezeigt ist, die Obere-K-Liste. Bei einem Schritt1002 bestimmt der Informationsdienstknoten130b , ob die Arbeitslast desselben in die Obere-K-Liste einzuschließen ist. Der Informationsdienstknoten130b schließt beispielsweise die Arbeitslast desselben in die Obere-K-Liste ein, falls die Arbeitslast desselben größer als eine andere Arbeitslast in der Obere-K-Liste ist oder falls die Obere-K-Liste noch keine Anzahl K von Arbeitslasten umfasst. Mit Bezug auf das Beispiel von7 schließt beispielsweise der Informationsdienstknoten130b , falls K = 2, die Arbeitslast desselben in die Obere-K-Liste, weil die Obere-K-Liste eine Arbeitslast für den Informationsdienstknoten130d umfasst. Bei einem Schritt1003 routet der Informationsdienstknoten130b die Liste zu einem Führungsknoten in dem Partner-zu-Partner-Überlagerungsnetzwerk210 hin weiter. Zum Beispiel identifiziert der Informationsdienstknoten130b aus der Routingtabelle desselben einen Eintrag auf höchster Ebene, der einen Attributbereich umfasst, der kleiner oder gleich einem Attributteilungswert ist. Wie es in8b der Routingtabelle für den Informationsdienstknoten130b gezeigt ist, ist der Eintrag auf höchster Ebene, der einen Attributbereich umfasst, der kleiner oder gleich einem Attributteilungsbereich ist, der Eintrag820 . Der Informationsdienstknoten130c wird aus dem Eintrag820 identifiziert und die Obere-K-Liste wird an den Informationsdienstknoten130c übertragen. - Die in
8B –D gezeigten Routingtabellen können basierend auf Teilungsalgorithmen (Splitting-Algorithmen) erzeugt werden, die verwendet werden, um Arbeitslasten für die Informationsdienstknoten auszugleichen, die die höchsten Arbeitslasten aufweisen, wie es beispielsweise in der Obere-K-Liste identifiziert ist. Ein lokaler Teilungsalgorithmus kann eine Teilung einer Arbeitslast eines zweiten Knotens in dem Überlagerungsnetzwerk mit einem ersten Knoten basierend auf zumindest einem Attributteilungswert für den zweiten Knoten umfassen. Der erste Knoten kann einen neuen Knoten umfassen, der dem Überlagerungsnetzwerk210 beitritt. Dem neuen Knoten wird basierend auf dem Teilungswert ein Attributteilraum zugewiesen. Im Wesentlichen werden alle Einträge in der Routingtabelle des zweiten Knotens zu der Routingtabelle des ersten Knotens kopiert und wird zumindest ein neuer Eintrag auf höchster Ebene in der Routingtabelle des ersten Knotens für die Routingtabelle des ersten Knotens basierend auf dem zumindest einen Attributteilungswert erzeugt. -
11 stellt ein exemplarisches Blockdiagramm eines Computersystems1100 dar, das als ein Informationsdienstknoten in dem Überlagerungsnetzwerk210 verwendet werden kann. Das Computersystem1100 umfasst einen oder mehrere Prozessoren, wie beispielsweise einen Prozessor1102 , der eine Ausführungsplattform zum Ausführen einer Software bereitstellt. - Befehle und Daten von dem Prozessor
1102 werden über einen Kommunikationsbus1104 kommuniziert. Das Computersystem1100 umfasst ferner einen Hauptspeicher1106 , wie beispielsweise einen Direktzugriffsspeicher (RAM = Random Access Memory), in dem während einer Laufzeit eine Software resident sein kann, und einen sekundären Speicher1108 . Der sekundäre Speicher1108 umfasst beispielsweise ein Festplattenlaufwerk1110 und/oder ein entfernbares Speicherlaufwerk1112 , das ein Diskettenlaufwerk, ein Magnetbandlaufwert, ein Compact-Disk-Laufwerk etc. darstellen kann, oder einen nichtflüchtigen Speicher, in dem eine Kopie der Software gespeichert sein kann. Der sekundäre Speicher1108 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, Routingtabellen, der globalen Informationstabelle und gemessenen QoS-Charakteristika, kann eine gemessene verfügbare Bandbreite und eine Bandbreite, die für Dienste erforderlich ist, in dem Hauptspeicher1106 und/oder dem sekundären Speicher1108 gespeichert sein. Das entfernbare Speicherlaufwerk1112 liest auf gut bekannte Weise aus einer entfernbaren Speichereinheit1119 und/oder schreibt zu derselben. - Ein Benutzer stellt mit dem Computersystem
1100 mit einem oder mehreren Eingabegeräten1128 eine Schnittstelle her, wie beispielsweise einer Tastatur, einer Maus, einem Schreibstift und dergleichen. Der Anzeigeadapter1122 bildet eine Schnittstelle mit dem Kommunikationsbus1109 und der Anzeige1120 und empfängt Anzeigedaten von dem Prozessor1102 und wandelt die Anzeigedaten in Anzeigebefehle für die Anzeige1120 um. Eine Netzwerkschnittstelle1130 ist zum Kommunizieren mit anderen Knoten über das Netzwerk200 vorgesehen, das in1 gezeigt ist. - Einer oder mehrere der Schritte der Verfahren
700 ,800 und900 können als eine Software implementiert sein, die auf einem computerlesbaren Medium eingebettet ist, wie beispielsweise dem Speicher1106 und/oder1108 , und auf dem Computersystem1100 beispielsweise durch den Prozessor1102 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 Computerprogramm (Computerprogramme) existieren, das (die) aus Programmanweisungen in einem Quellcode, Objektcode, ausführbaren Code oder anderen Formaten zum Durchführen einiger der Schritte gebildet ist (sind). Irgendeines der Obigen kann auf einem computerlesbaren Medium ausgeführt sein, das Speichervorrichtungen 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
- Knoten (
130 ) in einem Netzwerk (210 ) sind wirksam, um einen Informationsdienst zu liefern. Ein Satz der Knoten, die eine höchste Arbeitslast aufweisen, wird durch ein Routen einer Liste von Arbeitslasten (712 ) für die Knoten durch das Netzwerk (210 ) hindurch zu einem endgültigen Bestimmungsort (701 ) identifiziert. Jeder Knoten, der die Liste (712 ) empfängt, bestimmt, ob eine Arbeitslast eines jeweiligen Knotens in die Liste (712 ) einzuschließen ist.
Claims (10)
- Ein Verfahren zum Bestimmen eines Satzes von Knoten, die eine höchste Arbeitslast aufweisen, aus Knoten (
130 ) in einem Netzwerk (210 ) für einen Informationsdienst, wobei das Verfahren folgende Schritte aufweist: Routen einer Liste (712 ) des Satzes von Knoten, die höchste Arbeitslasten in dem Netzwerk (210 ) aufweisen, durch Knoten in dem Netzwerk (210 ) hindurch zu einem endgültigen Bestimmungsort (701 ) in dem Netzwerk (210 ); und Bestimmen, ob eine Arbeitslast eines jeweiligen Knotens, der die Liste (712 ) empfängt, einzuschließen ist, an jedem Knoten, der die Liste (712 ) empfängt, wenn die Liste (712 ) zu dem endgültigen Bestimmungsort (701 ) geroutet wird. - Das Verfahren gemäß Anspruch 1, bei dem das Routen einer Liste (
712 ) des Satzes von Knoten, die höchste Arbeitslasten in dem Netzwerk (210 ) aufweisen, durch Knoten in dem Netzwerk (210 ) hindurch zu einem endgültigen Bestimmungsort (701 ) in dem Netzwerk (210 ) ferner folgende Schritte aufweist: Identifizieren eines Eintrags auf höchster Ebene an einem Knoten, der die Liste (712 ) empfängt, in einer Routingtabelle des Knotens, der die Liste (712 ) empfängt, einschließlich eines Attributbereichs, der kleiner oder gleich einem Attributteilungswert ist; und Identifizieren eines Knotens aus dem Eintrag auf höchster Ebene; und Übertragen der Liste (712 ) an den Knoten in dem identifizierten Eintrag auf höchster Ebene. - Das Verfahren gemäß Anspruch 1, bei dem das Bestimmen, ob eine Arbeitslast eines jeweiligen Knotens, der die Liste (
712 ) empfängt, an jedem Knoten, der die Liste (712 ) empfängt, wenn die Liste (712 ) zu dem endgültigen Bestimmungsort (701 ) geroutet wird, ferner folgende Schritte aufweist: Bestimmen, ob eine Arbeitslast des jeweiligen Knotens, der die Liste (712 ) empfängt, größer als eine Arbeitslast für einen anderen Knoten in der Liste (712 ) ist; und Hinzufügen der Arbeitslast des jeweiligen Knotens, der die Liste (712 ) empfängt, zu der Liste (712 ) ansprechend darauf, dass die Arbeitslast des jeweiligen Knotens, der die Liste (712 ) empfängt, größer als die Arbeitslast für den anderen Knoten in der Liste (712 ) ist. - Das Verfahren gemäß Anspruch 3, bei dem die Liste (
712 ) eine vorbestimmte Anzahl von Arbeitslasten umfasst. - Das Verfahren gemäß Anspruch 1, das ferner folgenden Schritt aufweist: Einschließen einer Identifikation jedes Knotens, der die Liste (
712 ) empfängt, in die Liste (712 ), wenn die Liste (712 ) zu dem Führungsknoten geroutet wird. - Das Verfahren gemäß Anspruch 5, das ferner folgenden Schritt aufweist: Übertragen der Liste (
712 ) von dem endgültigen Bestimmungsort (701 ) zu jedem der Knoten, die die Liste (712 ) empfangen hatten, als die Liste (712 ) zu dem endgültigen Bestimmungsort (701 ) geroutet wurde, unter Verwendung der Identifikationen. - Das Verfahren gemäß Anspruch 1, bei dem jeder der Knoten in dem Netzwerk (
210 ) wirksam ist, um Informationen über Dienste zu speichern, die in einem Netzwerk (210 ) verfügbar sind, und wirksam ist, um auf Abfragen über die Dienste anzusprechen. - Ein Knoten (
130 ) in einem Netzwerk (210 ), der folgende Merkmale aufweist: eine Schnittstelle (1130 ), die wirksam ist, um eine Liste (712 ) von Arbeitslasten für Knoten in dem Netzwerk (210 ) zu empfangen; und eine Verarbeitungsschaltung (1102 ), die wirksam ist, um zu bestimmen, ob eine Arbeitslast des Knotens in die Liste (712 ) einzuschließen ist, und um die Liste (712 ) zu einem endgültigen Bestimmungsort (701 ) in dem Netzwerk (210 ) weiterzuleiten. - Der Knoten (
130 ) gemäß Anspruch 8, bei dem die Verarbeitungsschaltung (1102 ) ferner wirksam ist, um eine Routingtabelle zum Weiterleiten der Liste (712 ) zu dem endgültigen Bestimmungsort (701 ) zu erzeugen. - Der Knoten (
130 ) gemäß Anspruch 8, wobei der Knoten (130 ) ein Knoten in einem Partner-zu-Partner-Überlagerungsnetzwerk (210 ) ist, der wirksam ist, um Informationen für zumindest einen Dienst zu liefern, der in dem Netzwerk (210 ) verfügbar ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/006,068 | 2004-12-07 | ||
US11/006,068 US7636325B2 (en) | 2004-12-07 | 2004-12-07 | Determining highest workloads for nodes in an overlay network |
PCT/US2005/039257 WO2006062623A1 (en) | 2004-12-07 | 2005-10-31 | Determining highest workloads for nodes in an overlay network |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112005003037T5 true DE112005003037T5 (de) | 2007-12-20 |
DE112005003037B4 DE112005003037B4 (de) | 2011-09-08 |
Family
ID=36574136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005003037T Active DE112005003037B4 (de) | 2004-12-07 | 2005-10-31 | Bestimmen höchster Arbeitslasten für Knoten in einem Überlagerungsnetzwerk |
Country Status (5)
Country | Link |
---|---|
US (1) | US7636325B2 (de) |
JP (1) | JP4588768B2 (de) |
CN (1) | CN101116313B (de) |
DE (1) | DE112005003037B4 (de) |
WO (1) | WO2006062623A1 (de) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8335760B1 (en) * | 2005-02-07 | 2012-12-18 | Hewlett-Packard Development, L. P. | Grid computing system to manage utility service content |
WO2009121425A2 (en) * | 2008-04-03 | 2009-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Network diagnostics |
JP5765950B2 (ja) * | 2010-01-28 | 2015-08-19 | トムソン ライセンシングThomson Licensing | 票ベクトルに従って、ワイヤレス・コミュニケーション能力を有するピア間のコンテンツ配布を制御するためのデバイス、及び方法 |
US10110412B2 (en) * | 2012-10-17 | 2018-10-23 | Disney Enterprises, Inc. | Dynamically allocated computing method and system for distributed node-based interactive workflows |
US9300544B2 (en) | 2014-02-28 | 2016-03-29 | International Business Machines Corporation | Calculating workload closure in networks |
JP6485811B2 (ja) * | 2016-02-18 | 2019-03-20 | 日本電信電話株式会社 | ノード装置および経路表管理方法 |
US11064019B2 (en) * | 2016-09-14 | 2021-07-13 | Advanced Micro Devices, Inc. | Dynamic configuration of inter-chip and on-chip networks in cloud computing system |
EP3804239A4 (de) * | 2018-06-05 | 2022-03-23 | Gramboo Inc. | Verzeichnisunterstütztes routing von inhalt in einem informationszentrischen netzwerk |
JP6750646B2 (ja) * | 2018-06-07 | 2020-09-02 | トヨタ自動車株式会社 | 車載装置、情報処理方法、および、情報処理プログラム |
CN112491717A (zh) * | 2019-09-12 | 2021-03-12 | 华为技术有限公司 | 一种服务路由方法及装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL99923A0 (en) * | 1991-10-31 | 1992-08-18 | Ibm Israel | Method of operating a computer in a network |
JP3522820B2 (ja) * | 1994-03-15 | 2004-04-26 | 株式会社東芝 | 分散処理システム |
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
JP3085515B2 (ja) * | 1995-07-03 | 2000-09-11 | 日本電信電話株式会社 | 帯域可変通信装置 |
US6173322B1 (en) * | 1997-06-05 | 2001-01-09 | Silicon Graphics, Inc. | Network request distribution based on static rules and dynamic performance data |
US6003083A (en) * | 1998-02-19 | 1999-12-14 | International Business Machines Corporation | Workload management amongst server objects in a client/server network with distributed objects |
US6691165B1 (en) * | 1998-11-10 | 2004-02-10 | Rainfinity, Inc. | Distributed server cluster for controlling network traffic |
US6820262B1 (en) * | 1999-07-22 | 2004-11-16 | Oracle International Corporation | Method for computing the degree of parallelism in a multi-user environment |
US6389448B1 (en) * | 1999-12-06 | 2002-05-14 | Warp Solutions, Inc. | System and method for load balancing |
JP2001244973A (ja) * | 2000-02-28 | 2001-09-07 | Nippon Telegr & Teleph Corp <Ntt> | インタネットパケット交換装置 |
JP2001268094A (ja) * | 2000-03-22 | 2001-09-28 | Toshiba Corp | ノード装置、同装置を複数備えた情報処理システム、及びパラメータ交換方法 |
JP2004526218A (ja) * | 2000-08-24 | 2004-08-26 | ボルテール アドバンスト データ セキュリティ リミテッド | 相互接続されたファブリックにおける高度にスケーラブルで高速のコンテンツ・ベース・フィルタリング及び負荷均衡化システム及び方法 |
US6965930B1 (en) * | 2000-10-20 | 2005-11-15 | International Business Machines Corporation | Methods, systems and computer program products for workload distribution based on end-to-end quality of service |
US20020107962A1 (en) * | 2000-11-07 | 2002-08-08 | Richter Roger K. | Single chassis network endpoint system with network processor for load balancing |
US7296268B2 (en) * | 2000-12-18 | 2007-11-13 | Microsoft Corporation | Dynamic monitor and controller of availability of a load-balancing cluster |
JP2002252640A (ja) * | 2001-02-23 | 2002-09-06 | Fujitsu Ltd | ネットワーク中継装置及び方法並びにシステム |
US7272645B2 (en) * | 2001-05-25 | 2007-09-18 | Sbc Technology Resources, Inc. | Method of improving the reliability of peer-to-peer network downloads |
US20030110291A1 (en) * | 2001-12-12 | 2003-06-12 | Nokia Corporation | Method and device for route searching in a bluetooth ad-hoc network |
JP4046562B2 (ja) * | 2002-07-10 | 2008-02-13 | 富士通株式会社 | 負荷分散方法 |
US7353538B2 (en) | 2002-11-08 | 2008-04-01 | Federal Network Systems Llc | Server resource management, analysis, and intrusion negation |
US7197573B1 (en) * | 2002-11-18 | 2007-03-27 | Packet Design, Inc. | System and method for identifying addresses to modify and the effects thereof |
US7522537B2 (en) * | 2003-01-13 | 2009-04-21 | Meshnetworks, Inc. | System and method for providing connectivity between an intelligent access point and nodes in a wireless network |
AU2003271071A1 (en) * | 2003-01-21 | 2004-08-13 | Hitachi, Ltd. | Communication device, network system, and link generation method |
GB0306971D0 (en) | 2003-03-26 | 2003-04-30 | British Telecomm | Client server model |
JP2004320405A (ja) * | 2003-04-16 | 2004-11-11 | Matsushita Electric Ind Co Ltd | 情報端末検索システム |
CN1311665C (zh) * | 2003-07-01 | 2007-04-18 | 株式会社日立制作所 | 具有多个分布式回归代理的移动IPv6网络及其负载平衡方法 |
US7353448B1 (en) * | 2003-10-21 | 2008-04-01 | Marvell Semiconductor Israel Ltd. | Methods, architectures, circuits and systems for transmission error determination |
US7389510B2 (en) * | 2003-11-06 | 2008-06-17 | International Business Machines Corporation | Load balancing of servers in a cluster |
CN1281027C (zh) * | 2003-12-04 | 2006-10-18 | 上海交通大学 | 处理超大量用户的协同过滤推荐方法 |
JP2007538315A (ja) * | 2004-05-07 | 2007-12-27 | ホーム ボックス オフィス,インコーポレイティド | 通信ネットワークを介した安全なコンテンツ配信方法とシステム |
-
2004
- 2004-12-07 US US11/006,068 patent/US7636325B2/en not_active Expired - Fee Related
-
2005
- 2005-10-31 CN CN200580047845.5A patent/CN101116313B/zh active Active
- 2005-10-31 WO PCT/US2005/039257 patent/WO2006062623A1/en active Application Filing
- 2005-10-31 DE DE112005003037T patent/DE112005003037B4/de active Active
- 2005-10-31 JP JP2007545468A patent/JP4588768B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE112005003037B4 (de) | 2011-09-08 |
US20060120391A1 (en) | 2006-06-08 |
JP2008526056A (ja) | 2008-07-17 |
WO2006062623A1 (en) | 2006-06-15 |
CN101116313B (zh) | 2010-10-27 |
CN101116313A (zh) | 2008-01-30 |
US7636325B2 (en) | 2009-12-22 |
JP4588768B2 (ja) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112005003035B4 (de) | Teilen einer Arbeitslast eines Knotens | |
DE112005003037B4 (de) | Bestimmen höchster Arbeitslasten für Knoten in einem Überlagerungsnetzwerk | |
US7814207B2 (en) | Method and system for identifying available resources in a peer-to-peer network | |
JP5090450B2 (ja) | 階層に編成され、ネットワークを介してリンクされた複数のノードに保管された複製データを更新するための方法、プログラム、およびコンピュータ可読媒体 | |
KR101120847B1 (ko) | 데이터 오버레이, 자가-조직 메타데이터 오버레이 및 애플리케이션 레벨 멀티캐스팅 | |
CN116915787A (zh) | 多集群入口 | |
EP1825654B1 (de) | Routen einer dienstanfrage in einem overlay-netzwerk | |
DE602004010807T2 (de) | Techniken zur bereitstellung eines virtuellen arbeitsraums, bestehend aus einer vielzahl elektronischer einrichtungen | |
DE602004005785T2 (de) | Dynamische Leitweglenkung in einem inhaltbasierten verteilten Netzwerk | |
DE102016104478A1 (de) | Kryptographische Verfahren, die Arbeitsnachweise in Systemen untereinander verbundener Knoten realisieren | |
US10146814B1 (en) | Recommending provisioned throughput capacity for generating a secondary index for an online table | |
DE112011100808T5 (de) | System und Verfahren zum Unterstützen der Instanziierung und Migration virtueller Maschinen | |
DE112012005533T5 (de) | Unterstützende Abfrage und ein Abfragen | |
DE112019000421B4 (de) | Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster | |
US10135703B1 (en) | Generating creation performance metrics for a secondary index of a table | |
DE112021002487T5 (de) | Teilen einer geografisch konzentrierten arbeitslast zwischen benachbarten mec-hosts mehrerer netzbetreiber | |
Ak et al. | BCDN: A proof of concept model for blockchain-aided CDN orchestration and routing | |
DE112016002226T5 (de) | Systeme und verfahren zur verwendung von webseitenskripten zu segmenten von kundensitzungen auf einer webseite | |
Elzohairy et al. | Fedlesscan: Mitigating stragglers in serverless federated learning | |
CN117203944A (zh) | 算力网络的资源调度方法 | |
DE112018002178T5 (de) | Dateiübertragung in gemeinsam genutztem arbeitsspeicher | |
DE102021211552A1 (de) | Verfahren und system zur migration von on-premises- zu cloud-arbeitslasten durch zyklische bereitstellung und evaluierung | |
DE102021125849A1 (de) | Verbindungsverwaltung für mehrere einheiten | |
Beskow et al. | The partial migration of game state and dynamic server selection to reduce latency | |
DE112020004493T5 (de) | Zwischenspeicherfähigkeit von single-page-anwendungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |
Effective date: 20111209 |
|
R081 | Change of applicant/patentee |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US |
|
R082 | Change of representative |
Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: H04L0029080000 Ipc: H04L0065000000 |
|
R082 | Change of representative |
Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB - PATENT- , DE Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE |
|
R081 | Change of applicant/patentee |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US |