-
HINTERGRUND
-
Die Cloud-EDV bezieht sich auf eine netzgestützte EDV, in der Sammlungen von Servern, die in Datenzentren aufgenommen sind, Computerbetriebsmittel und Datenspeicherung für Endnutzer nach Bedarf bereitstellen. Viele Cloud-EDV-Dienste ermöglichen, dass Endnutzer Softwareanwendungen in virtuellen Maschinen oder anderen Umgebungen in der Cloud ausführen. Die Netzbandbreite für die Anwendungen und für die dazugehörige Speicherung können für jeden Endnutzer und für jeden Anwendungsprozess, der ausgeführt wird, variieren.
-
Ein Cloud-EDV-Anbieter muss eine verhältnismäßig große physikalische Infrastruktur aufbauen, von der Cloud-EDV-Dienste Endnutzern angeboten werden können. Da die Kosten einer solchen physikalischen Infrastruktur enorm sein können, bemüht sich der Anbieter häufig, eine effiziente Nutzung physikalischer Betriebsmittel sicherzustellen, um die Kosten zu senken. Dementsprechend nutzt ein Anbieter häufig verschiedene Regeln und Grundstrukturen wie etwa Verarbeitungskerne, Speicherplatz usw., um physikalische Betriebsmittel zuzuordnen. Gleichfalls nutzt der Anbieter verschiedene Regeln und Grundstrukturen, um andere Betriebsmittel wie etwa Bandbreite zuzuordnen. Obgleich der Einsatz solcher Regeln und Grundstrukturen zu einer effizienteren Zuordnung von Betriebsmitteln führen kann, erlegen die Regeln und Grundstrukturen dem Anbieter außerdem Overhead-Kosten auf, wobei z. B. Betriebsmittel wie etwa Kerne, Speicher und Bandbreite verbraucht werden, um die Regeln und Grundstrukturen zu implementieren.
-
ZUSAMMENFASSUNG
-
Diese Patentschrift bezieht sich auf die Zuordnung und Drosselung verteilter Bandbreite.
-
Allgemein kann ein innovativer Aspekt des in dieser Patentschrift beschriebenen Gegenstands in einem System verkörpert werden, das einen Begrenzer verteilter Bandbreite, einen ersten Throttler und einen zweiten Throttler enthält. Der Begrenzer verteilter Bandbreite empfängt erste Nutzungsdaten, die einen ersten Bandbreitennutzungswert für eine erste Entität beschreiben, und empfängt zweite Nutzungsdaten, die einen zweiten Bandbreitennutzungswert für eine zweite Entität beschreiben. Der Begrenzer verteilter Bandbreite bestimmt auf der Grundlage der ersten Nutzungsdaten, der zweiten Nutzungsdaten und einer Gesamtbandbreitenzuordnung eine erste Bandbreitenzuordnung, die für Netzverkehr für die erste Entität verfügbare Bandbreite spezifiziert, und eine zweite Bandbreitenzuordnung, die für Netzverkehr für die zweite Entität verfügbare Bandbreite spezifiziert, wobei eine Summe der ersten Bandbreitenzuordnung und der zweiten Bandbreitenzuordnung die Gesamtbandbreitenzuordnung nicht übersteigt. Der erste Throttler empfängt von dem Begrenzer verteilter Bandbreite die erste Bandbreitenzuordnung, drosselt die für Netzverkehr für die erste Entität verfügbare Bandbreite in Übereinstimmung mit der ersten Bandbreitenzuordnung und berichtet die ersten Nutzungsdaten an den Begrenzer verteilter Bandbreite. Der zweite Throttler empfängt von dem Begrenzer verteilter Bandbreite die zweite Bandbreitenzuordnung, drosselt die für Netzverkehr für die zweite Entität verfügbare Bandbreite in Übereinstimmung mit der zweiten Bandbreitenzuordnung und berichtet die zweiten Nutzungsdaten an den Begrenzer verteilter Bandbreite. Andere Ausführungsformen dieses Aspekts enthalten entsprechende Verfahren und Computerprogramme, die dafür konfiguriert sind, die Tätigkeiten der Verfahren auszuführen, die in Computerspeichereinrichtungen codiert sind. Der Begriff verteilt soll hier ein gemeinsam genutztes Wesen von Bandbreite, die zwischen zwei oder mehr Einrichtungen zugeordnet werden soll, z. B. das Management der Bandbreitenzuordnung zu zwei oder mehr Entitäten, die zusammen einer Gesamtbandbreitenzuordnung unterliegen, umfassen.
-
Bestimmte Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands können in der Weise implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Die iterative Überwachung von Nutzungsraten ermöglicht, dass das System Bandbreitenzuordnungen auf dynamische Weise mit einer verhältnismäßig kurzen Konvergenzzeit nachstellt. Das System für die Zuordnung verteilter Bandbreite konvergiert auf Bandbreitenzuordnungen, die für jedes bestimmte System, das gemanagt wird, einzigartig sind, was ermöglicht, dass das System für die Zuordnung verteilter Bandbreite auf mehrere Systeme mit jeweils einzigartigen und wachsenden Band breitenanforderungen angewendet wird. Das System für die Zuordnung verteilter Bandbreite ist dahingehend arbeitssparend, dass die Summe der Bandbreitenzuordnungen für jede gemanagte Entität in einem System gleich einer Gesamtbandbreitenzuordnung für das System ist, was zu keiner nicht zugeordneten (und somit zu keiner verschwendeten) Bandbreite führt. Um sicherzustellen, dass jede gemanagte Entität immer wenigstens eine minimale zugeordnete Bandbreite besitzt, kann das System für die Zuordnung verteilter Bandbreite für jede gemanagte Entität in dem System für minimale und maximale Bandbreitenzuordnung eingestellt werden. Die iterative Zuordnung von Bandbreite kann in Intervallen erfolgen, die einen Ausgleich zwischen Konvergenzzeiten und System-Overhead-Nutzung treffen, was die Skalierung über sehr große Systeme erleichtert. Außerdem werden Bandbreitenbetriebsmittel dahingehend fair verteilt, dass nicht irgendeine Entität einer anderen Entität Bandbreite verweigert.
-
Ein weiterer Vorteil ist die beim Wandern der einzelnen Throttler gebotene Flexibilität, z. B. können die Throttler in Systemen angeordnet sein, die fern von dem System sind, in dem die Berechnungen der verteilten Bandbreite bestimmt werden. Zum Beispiel können sich die Throttler in unterschiedlichen Nutzerraumprozessen, in unterschiedlichen Betriebssystemen, in unterschiedlicher Netzschnittstellencontroller-Firmware (MIC-Firmware) oder in unterschiedlicher Hardware befinden. Der verteilte Algorithmus kann auf derselben physikalischen Maschine ausgeführt werden oder sogar auf einer anderen physikalischen Maschine ausgeführt werden.
-
In den folgenden Zeichnungen und in der folgenden Beschreibung sind die Einzelheiten einer oder mehrerer Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands dargelegt. Weitere Merkmale, Aspekte und Vorteile des Gegenstands gehen aus der Beschreibung, aus den Zeichnungen und aus den Ansprüchen hervor.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockschaltplan eines Systems für die Zuordnung verteilter Bandbreite.
-
2 ist ein Blockschaltplan eines Systems für die Zuordnung verteilter Bandbreite, das in einer Umgebung einer virtuellen Maschine implementiert ist.
-
3 ist ein Ablaufplan eines beispielhaften Prozesses, um Bandbreite auf verteilte Weise zuzuordnen.
-
4 ist ein Ablaufplan eines beispielhaften Prozesses, um einen Bandbreitenbedarf für eine gemanagte Entität zu bestimmen.
-
5A und B sind Ablaufpläne eines beispielhaften Prozesses, um Bandbreite auf verteilte Weise zuzuordnen.
-
Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 ist ein Blockschaltplan eines Systems 100 für die Zuordnung verteilter Bandbreite. Das System 100 für die Zuordnung verteilter Bandbreite managt die Bandbreitenzuordnung zu zwei oder mehr Entitäten, z. B. zu einer ersten Entität 150 und zu einer zweiten Entität 160, die einer Gesamtbandbreitenzuordnung unterliegen. Wie es in dieser schriftlichen Beschreibung verwendet ist, ist eine Entität ein logisches und/oder physikalisches Betriebsmittel, das Bandbreite in einer Netzumgebung verbraucht. Eine Entität kann eine physikalische Maschine, ein Dienst oder eine Instantiierung eines Prozesses oder einer Anwendung in einer oder in mehreren physikalischen Maschinen sein. Beispiele für Entitäten enthalten ohne Beschränkung virtuelle Maschinen, Container, Speichersysteme, Servereinrichtungen, Clienteinrichtungen usw.
-
Die Gesamtbandbreitenzuordnung ist die Menge an Bandbreite, die die erste und die zweite Entität 150 und 160 für Netzverkehr über das Netz 102 verbrauchen können. Die Gesamtbandbreitenzuordnung kann z. B. eine maximale Menge an Bandbreite sein, die die erste und die zweite Entität für ausgehenden und/oder ankommenden Netzverkehr über das Netz 102 verwenden dürfen oder die für sie zur Verwendung freigeschaltet worden ist. Die Bandbreite kann für Ausgangsverkehr, d. h. für Netzverkehr, der durch die Entitäten gesendet wird, oder alternativ für Eingangsverkehr, d. h. für Netzverkehr, der durch die Entitäten empfangen wird, oder für eine Kombination aus Ausgangs- und Eingangsverkehr sein. Dadurch, dass die Summe der Bandbreitenzuordnungen zu den Entitäten gleich der Gesamtbandbreitenzuordnung ist, ordnet das System 100 Bandbreite auf arbeitssparende Weise zu.
-
Das System 100 enthält einen Begrenzer 120 verteilter Bandbreite und zwei oder mehr Throttler, z. B. einen ersten Throttler 130 und einen zweiten Throttler 140. Der Begrenzer 120 verteilter Bandbreite kann Betriebsdaten, die sich auf den früheren oder aktuellen Betrieb beziehen, Betriebsbedarfe und/oder Betriebsanforderungen der zwei oder mehr Entitäten (wie etwa ihre jeweiligen Nutzungsdaten) empfangen und jeweils für jede Entität eine Bandbreitenzuordnung bestimmen. Jeder Throttler setzt für eine jeweilige Entität, die er managt, eine Bandbreitenzuordnung durch. Außerdem kann jeder Throttler in einem Prozess, in einer Maschine oder in einem Nutzerraum implementiert werden, der von dem Prozess, von der Maschine oder von dem Nutzerraum, in dem der Begrenzer 120 verteilter Bandbreite implementiert ist, verschieden ist.
-
In der beispielhaften Implementierung aus 1 sind in dem System 100 nur zwei Throttler enthalten. Allerdings kann das System 100 dafür implementiert werden, eine Gesamtbandbreitenzuordnung für eine Menge N gemanagter Entitäten zu managen, wobei N > 2 ist und wobei der Netzverkehr jeder gemanagten Entität einer Bandbreitenzuordnung für diese Entität unterliegt.
-
In 1 drosselt der erste Throttler 130 die für Netzverkehr für die erste Entität 150 verfügbare Bandbreite in Übereinstimmung mit der ersten Bandbreitenzuordnung. Die erste Bandbreitenzuordnung ist durch den Ring 132 gezeigt, durch den hindurchgehend der Netzverkehr gezeigt ist. Gleichfalls drosselt der zweite Throttler 140 die für Netzverkehr für die zweite Entität 160 verfügbare Bandbreite in Übereinstimmung mit der durch den Ring 142 gezeigten zweiten Bandbreitenzuordnung. Die Gesamtbandbreitenzuordnung ist durch den Ring 122 gezeigt.
-
Im Betrieb empfängt der Begrenzer 120 verteilter Bandbreite von dem ersten Throttler 130 erste Nutzungsdaten, die einen ersten Bandbreitennutzungswert für die erste Entität 150 beschreiben, und empfängt er außerdem zweite Nutzungsdaten, die einen zweiten Bandbreitennutzungswert für die zweite Entität 160 beschreiben. Der erste und der zweite Throttler 130 und 140 können die Nutzungsdaten an den Begrenzer 120 verteilter Bandbreite berichten. In einigen Implementierungen können die Nutzungsdaten ein Wert sein, der die Menge an Daten ist, die von einer Entität an das Netz 102 gesendet werden. In anderen Implementierungen können die Nutzungsdaten ein Wert sein, der die Menge der Daten ist, die von einer Entität an das Netz 102 gesendet und durch die Entität über das Netz 102 empfangen werden.
-
In nochmals anderen Implementierungen kann der Nutzungsdatenwert Verkehr berücksichtigen, der außerdem durch den Throttler gedrosselt worden ist. Zum Beispiel wären die Nutzungsdaten 530 GB, falls die erste Entität einem Bandbreitengrenzwert von 500 GB/s unterliegt und die erste Entität 150 während einer Berichtsperiode von 1 Sekunde 500 GB gesendet hat und 30 GB gedrosselt worden sind. Den Throttlern 130 und 140 können außerdem Anwendungsprogrammschnittstellen (APIs) zugeordnet sein, die ermöglichen, dass die erste und die zweite Entität 150 und 160 die Bandbreitennutzung an die Throttler berichten.
-
Der Begrenzer 120 verteilter Bandbreite empfängt iterativ die ersten Nutzungsdaten und die zweiten Nutzungsdaten und bestimmt unter Verwendung dieser Daten und der Gesamtbandbreitenzuordnung die erste Bandbreitenzuordnung und die zweite Bandbreitenzuordnung. Die Summe der ersten Bandbreitenzuordnung und der zweiten Bandbreitenzuordnung übersteigt nicht die Gesamtbandbreitenzuordnung. Daraufhin werden die aktualisierte erste und zweite Bandbreitenzuordnung für den ersten bzw. für den zweiten Throttler 130 und 140 bereitgestellt.
-
Allgemeiner empfängt der Begrenzer verteilter Bandbreite für N Throttler Nutzungsdaten für jeden Throttler und bestimmt er N Bandbreitenzuordnungen, deren Summe die Gesamtbandbreitenzuordnung nicht übersteigt. Daraufhin wird jede Bandbreitenzuordnung für ihren jeweiligen Throttler bereitgestellt.
-
Das System 100 kann in einer Vielzahl verschiedener Umgebungen implementiert werden. Eine beispielhafte Implementierung ist die in einer Umgebung 200 einer virtuellen Maschine, wie sie in 2 gezeigt ist. In 2 ist über einer Betriebssystemschicht für eine oder für mehrere Host-Maschinen eine Schicht eines Host-Nutzerraums 202 implementiert. Ein Hypervisor 204 überwacht eine virtuelle Maschine 260 und Netzverkehr von der virtuellen Maschine 260 fließt über eine Eingabe/Ausgabe-Warteschlange (E/A-Warteschlange) 212 zu einem virtuellen Switch 206. Der virtuellen Maschine 260 ist ein Speichersystem 250 zugeordnet, das ein virtualisiertes Speichersystem sein kann, wobei es eine Datenspeicherung für die virtuelle Maschine 260 bereitstellt, und der Hypervisor 204 managt ebenfalls Verkehr für das Speichersystem 240. Der Begrenzer 220 für verteilte Bandbreite und ein Speichersystem-Throttler 230 sind in dem Hypervisor 204 instantiiert und der Throttler 240 der virtuellen Maschine ist in dem virtuellen Switch 206 implementiert.
-
Der Netzverkehr für das Speichersystem 250 ist durch den Weg 252 gezeigt, der angibt, dass der Speichersystemverkehr durch den Speichersystem-Throttler 230 gemanagt und durch den Host-Kernel 210 verarbeitet wird. Der Verkehr geht über den NIC 214 zu dem externen Netz 102. Netzverkehr für die virtuelle Maschine 260, der durch den Weg 254 gezeigt ist, geht über den virtuellen Switch 206 und wird durch den Throttler 240 der virtuellen Maschine gemanagt und geht daraufhin über den NIC 214 zu dem externen Netz 102.
-
Bei Abbildung der Implementierung aus 2 auf das System 100 aus 1 ist die erste Entität 150 das Speichersystem 250 und ist die zweite Entität 160 die virtuelle Maschine 260. Dementsprechend sind die ersten Nutzungsdaten Speichernutzungsdaten und ist der erste Bandbreitennutzungswert ein Speicherbandbreiten-Nutzungswert für Netzverkehr für das Speichersystem 250. Gleichfalls sind die zweiten Nutzungsdaten Nutzungsdaten der virtuellen Maschine für die virtuelle Maschine 260 und betrifft der zweite Bandbreitennutzungswert Netzverkehr für die virtuelle Maschine 260. Der Speichersystem-Throttler 230 managt Verkehr für das Speichersystem 250 in Übereinstimmung mit einer Speicherbandbreitenzuordnung, die für Netzverkehr für das Speichersystem verfügbar ist, und der Throttler 240 der virtuellen Maschine managt Verkehr für die virtuelle Maschine in Übereinstimmung mit der Bandbreitenzuordnung der virtuellen Maschine, die Bandbreite spezifiziert, die für Netzverkehr für die virtuelle Maschine verfügbar ist.
-
Die Gesamtbandbreitenzuordnung kann in Übereinstimmung mit einem oder mehreren Kriterien eingestellt werden. Die Gesamtbandbreitenzuordnung kann z. B. der Bandbreitennennwert des NIC 214 sein. Alternativ kann die Gesamtbandbreitenzuordnung auf der Grundlage der durch die virtuelle Maschine verbrauchten physikalischen Betriebsmittel eingestellt werden, wobei z. B. für jeden Verarbeitungskern eine Gesamtbandbreitenzuordnung von 2 GB/s bereitgestellt werden kann. Um die Gesamtbandbreitenzuordnung einzustellen oder auszuwählen, können andere geeignete Kriterien verwendet werden.
-
3 ist ein Ablaufplan eines beispielhaften Prozesses 300, um Bandbreite auf verteilte Weise zuzuordnen. Der Prozess 300 kann in dem System 100 wie etwa in der Umgebung 200 einer virtuellen Maschine aus 2 oder in einem physikalischen System, das eine oder mehrere Computer und Speichereinrichtungen enthält, implementiert werden.
-
Der Prozess 300 beschreibt, wie das System 100 zunächst die Bandbreitenzuordnungen für die gemanagten Entitäten initialisiert und daraufhin die tatsächliche Bandbreitennutzung der gemanagten Entitäten überwacht, um die Bandbreitenzuordnungen nachzustellen. Genauere Beschreibungen des in 2 beschriebenen Algorithmus sind im Folgenden anhand von 4, 5A und 5B gegeben.
-
Der Prozess 300 initialisiert die erste und die zweite Bandbreitenzuordnung und stellt die erste Bandbreitenzuordnung für den ersten Throttler und die zweite Bandbreitenzuordnung für den zweiten Throttler bereit (302). Zum Beispiel können im Fall der Umgebung einer virtuellen Maschine die Speichersystem-Bandbreitenzuordnung und die Bandbreitenzuordnung der virtuellen Maschine anfangs durch den Begrenzer 220 verteilter Bandbreite auf die jeweils garantierte minimale Bandbreitenzuordnung eingestellt werden. Alternativ können die Speichersystem-Bandbreitenzuordnung und die Bandbreitenzuordnung der virtuellen Maschine auf Werte eingestellt werden, für die die Summe tatsächlich kleiner als die Gesamtbandbreitenzuordnung ist. Die Anfangswerte können Startpunkte sein, von denen aus schließlich eine Konvergenz zu stationären Band breitenzuordnungen erzielt werden soll. In Abhängigkeit von dem durch den Begrenzer 220 verteilter Bandbreite genutzten Konvergenzprozess können ebenfalls andere Initialisierungswerte verwendet werden.
-
Daraufhin beginnt der Prozess 300 durch Wiederholen der Schritte 304, 306 und 308 einen iterativen Bandbreitenmanagementprozess. Zu Beginn empfängt der Prozess 300 erste Nutzungsdaten, die den ersten Bandbreitennutzungswert für die erste Entität beschreiben, und zweite Nutzungsdaten, die den zweiten Bandbreitennutzungswert für die zweite Entität beschreiben (304). Zum Beispiel berichten die Throttler 230 und 240 nach einer Iterationszeitperiode jeweilige Bandbreitennutzungswerte an den Begrenzer 220 verteilter Bandbreite. Die Zeitperiode kann so gewählt werden, dass zwischen Overhead-Kosten und Konvergenzzeit ausgeglichen wird. Allgemein nehmen die dem Begrenzer 220 verteilter Bandbreite auferlegten Overhead-Kosten zu, während die Länge der Zeitperiode abnimmt, während die Konvergenzzeit zu verhältnismäßig stationären Bandbreitenzuordnungen abnimmt.
-
In einigen Implementierungen kann die Zeitperiode dynamisch sein, wobei sie bei Initialisierung mit einem Minimalwert beginnt und zu einem Maximalwert zunimmt, während die Änderungen der Größe der Bandbreitenzuordnungen abnehmen. Zum Beispiel erhöht der Begrenzer 220 verteilter Bandbreite die Iterationszeitperiode, während die relativen Änderungen der Bandbreitenzuordnungen von einer Iteration zu der nächsten abnehmen. Gleichfalls kann der Begrenzer 220 verteilter Bandbreite die Iterationszeitperiode verringern, während die relativen Änderungen der Bandbreitenzuordnungen von einer Iteration zu der nächsten zunehmen.
-
Der Prozess 300 bestimmt die erste und die zweite Bandbreitenzuordnung auf der Grundlage der ersten Nutzungsdaten, der zweiten Nutzungsdaten und der Gesamtbandbreitenzuordnung (306). In einigen Implementierungen kann der Begrenzer 220 verteilter Bandbreite für jede Entität 150 und 160 ihre jeweiligen Nutzungswerte speichern und auf der Grundlage der Nutzungswerte Bandbreitenbedarfe bestimmen. Um bei der Konvergenz zu helfen und die Empfindlichkeit gegen Rauschen zu verringern, das sich aus Bursts im Netzverkehr ergibt, können Glättungs- und Skalierungsfaktoren verwendet werden. Ein beispielhafter Bandbreitenbedarfsalgorithmus ist im Folgenden anhand von 4 beschrieben und ein beispielhafter Bandbreitenzuordnungs-Bestimmungsalgorithmus ist im Folgenden anhand von 5A und 5B beschrieben.
-
Der Prozess 300 stellt die erste Bandbreitenzuordnung für den ersten Throttler und die zweite Bandbreitenzuordnung für den zweiten Throttler bereit (308). Die Bandbreitenzuordnungen können von den für eine frühere Iteration bereitgestellten Bandbreitenzuordnungen verschieden sein. Daraufhin managen die Throttler den Netzverkehr für ihre jeweiligen Entitäten in Übereinstimmung mit den jeweils empfangenen Bandbreitenzuordnungen.
-
4 ist ein Ablaufplan eines beispielhaften Prozesses 400 zum Bestimmen eines Bandbreitenbedarfs für eine gemanagte Entität. In einigen Implementierungen führt der Begrenzer 220 verteilter Bandbreite den Prozess 400 für jede gemanagte Entität aus. Der Prozess 400 nutzt einen Skalierungsfaktor und ein Fenster historischer Nutzungswerte, um einen Bedarf für eine Entität zu bestimmen.
-
Der Prozess 400 bestimmt auf der Grundlage des aktuellen Bandbreitennutzungswerts und des aktuellen Bandbreitenbedarfs einen Skalenfaktor (402). Der Skalenfaktor wird verwendet, um eine endgültige Bandbreitenbedarfsberechnung zu vergrößern (oder zu verkleinern). In einigen Implementierungen kann der Skalierungsfaktor von einem Minimalwert zu einem Maximalwert variieren und für jede Iteration bestimmt werden.
-
In einer beispielhaften Implementierung kann der Skalierungsfaktor auf der Grundlage des Nutzungswerts und eines aktuellen Bedarfs nachgestellt werden. Zum Beispiel kann für eine i-te Iteration der folgende Algorithmus verwendet werden:
wobei:
usage_value[i] der Nutzungswert für eine i-te Iteration ist;
demand[i-1] ein Bandbreitenbedarf für die Iteration i-1 ist;
K ein Schwellenwert ist, der üblicherweise kleiner als eins ist;
INC ein Inkrementwert ist;
Max_scale_factor ein maximaler Skalenfaktor ist; und
Reset_value ein Wert ist, auf den der Skalenfaktor zurückgesetzt werden kann.
-
Die Werte von K, INC, Max_scale_factor und Reset_value können auf der Grundlage einer Abwägung der Konvergenzzeit und der Empfindlichkeit ausgewählt werden.
-
Der Prozess 400 bestimmt auf der Grundlage des Skalenfaktors und eines oder mehrerer früherer Bandbreitennutzungswerte einen neuen Bandbreitenbedarf (404). Um den Bandbreitenbedarf zu bestimmen, können eine Vielzahl geeigneter Funktionen verwendet werden, und auf der Grundlage des Typs der Entität, die gemanagt wird, kann eine Funktion ausgewählt werden. Zum Beispiel kann der Bedarf für Netzverkehr der virtuellen Maschine auf einem Produkt des Skalenfaktors, der für die virtuelle Maschine bestimmt wird, und maximal N früheren Nutzungswerten für die virtuelle Maschine beruhen, z. B.
-
-
Andere Funktionen, wie etwa z. B. ein Produkt des Skalenfaktors und ein Durchschnitt der N früheren Nutzungswerte, können ebenfalls verwendet werden. In einigen Implementierungen kann außerdem ein von null verschiedener Bodenwert, z. B. 1% der Gesamtbandbreitenzuordnung, verwendet werden, um sicherzustellen, dass die bestimmte Bedarfsbandbreite immer größer als 0 ist.
-
Der Wert von N zur Bestimmung des Bedarfs kann für jede gemanagte Entität variieren. Für Entitäten, die stark gebündelten Verkehr besitzen, kann der Wert von N im Verhältnis zu Entitäten, die weniger gebündelten Verkehr besitzen, erhöht werden.
-
Andere Bandbreitenbedarfs-Berechnungsalgorithmen können ebenfalls verwendet werden.
-
Nachdem die Bedarfsbandbreiten für jede Entität bestimmt worden sind, bestimmt die Zuordnungseinrichtung für verteilte Bandbreite daraufhin für jede Entität die Bandbreitenzuordnungen und verteilt sie die neuen Bandbreitenzuordnungen an die Throttler. Es können eine Vielzahl geeigneter Bandbreitenzuordnungsalgorithmen verwendet werden, wobei ein Beispiel anhand von 5A und 5B beschrieben ist. Insbesondere sind 5A und 5B Ablaufpläne eines beispielhaften Prozesses 500, um Bandbreite auf verteilte Weise zuzuordnen. Der Prozess 500 besitzt zwei Hauptzweige – der erste Zweig, der in 5A gezeigt ist, wird genommen, wenn die Summe der für die Entitäten berechneten Bandbreitenbedarfe größer als die Gesamtbandbreitenzuordnung ist. Der zweite Zweig, der in 5B gezeigt ist, wird genommen, wenn die Summe der für die Entitäten berechneten Bandbreitenbedarfe kleiner als die Gesamtbandbreitenzuordnung ist.
-
Der Prozess 500 bestimmt den ersten Bandbreitenbedarf und den zweiten Bandbreitenbedarf (502). Zum Beispiel kann der Begrenzer 220 verteilter Bandbreite den Prozess 400 (oder einen anderen Prozess) für jede gemanagte Entität verwenden, um den Bandbreitenbedarf für diese Entität zu bestimmen. In dem Beispiel aus 2 bestimmt der Begrenzer 220 verteilter Bandbreite einen Speichersystembandbreitenbedarf als den ersten Bandbreitenbedarf und bestimmt er einen Bandbreitenbedarf der virtuellen Maschine als den zweiten Bedarf.
-
Der Prozess 500 bestimmt, ob eine Summe des ersten und des zweiten Bandbreitenbedarfs die Gesamtbandbreitenzuordnung übersteigt (504). Falls der Prozess 500 nicht bestimmt, dass die Summe des ersten und des zweiten Bandbreitenbedarfs die Gesamtbandbreitenzuordnung übersteigt, verzweigt der Prozess 500 zu dem nächsten Schritt 516, der im Folgenden anhand von 5B beschrieben ist und später diskutiert wird.
-
Falls der Prozess 500 bestimmt, dass die Summe des ersten und des zweiten Bandbreitenbedarfs die Gesamtbandbreitenzuordnung übersteigt, bestimmt der Prozess 500, ob der erste Bandbreitenbedarf eine garantierte erste Zuordnung übersteigt und der zweite Bandbreitenbedarf eine garantierte zweite Zuordnung übersteigt (506). Jeder Throttler besitzt eine garantierte Zuordnung, die als die Entitätsbandbreitenzuordnung zugewiesen wird, wenn alle jeweiligen Bandbreitenbedarfe für die Entitäten ihre jeweils garantierten Zuordnungen übersteigen. Somit stellt der Prozess 500 die erste Bandbreitenzuordnung auf die garantierte erste Zuordnung ein und stellt er die zweite Bandbreitenzuordnung auf die garantierte zweite Zuordnung ein, falls der Prozess bestimmt, dass der erste Bandbreitenbedarf die garantierte erste Zuordnung übersteigt und dass der zweite Bandbreitenbedarf die garantierte zweite Zuordnung übersteigt (508). Die garantierten Zuordnungen können gleiche Mengen sein, z. B. kann jede garantierte Zuordnung für N Throttler 1/N·Gesamtbandbreitenzuordnung sein. In anderen Implementierungen kann die garantierte Zuordnung von jeder anderen verschieden sein, wobei z. B. eine virtuelle Maschine eine garantierte Zuordnung von 40% der zugeordneten Gesamtbandbreite besitzen kann und das Speichersystem eine garantierte Zuordnung von 60% der zugeordneten Gesamtbandbreite besitzen kann.
-
Zur Veranschaulichung wird angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine 1,10 GB/s ist und dass der Speichersystembedarf 1,5 GB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde die Bandbreitenzuordnung der virtuellen Maschine auf 800 MB/s eingestellt und würde die Speichersystembandbreite auf 1,2 GB/s eingestellt.
-
Wenn die Summe aller Bandbreitenbedarfe die Gesamtbandbreitenzuordnung übersteigt, aber nicht alle Bandbreitenbedarfe ihre jeweils garantierten Zuordnungen übersteigen, versucht der Begrenzer 220 verteilter Bandbreite, Bandbreite auf der Grundlage der relativen Notwendigkeiten der Entitäten zuzuordnen. In diesen Situationen kann die zugeordnete Bandbreite für eine gemanagte Entität somit schließlich kleiner als die garantierte Bandbreitenzuordnung für diese Entität sein.
-
Zum Beispiel bestimmt der Prozess 500, ob der zweite Bandbreitenbedarf kleiner als die garantierte zweite Zuordnung ist, falls der Prozess nicht bestimmt, dass der erste Bandbreitenbedarf die garantierte erste Zuordnung übersteigt und dass der zweite Bandbreitenbedarf die garantierte zweite Zuordnung übersteigt (510). Falls der Prozess 500 bestimmt, dass der zweite Bandbreitenbedarf kleiner als die garantierte zweite Zuordnung ist, stellt der Prozess 500 die zweite Bandbreitenzuordnung auf den zweiten Bandbreitenbedarf ein und stellt er die erste Bandbreitenzuordnung auf eine Differenz der Gesamtbandbreitenzuordnung und der zweiten Bandbreitenzuordnung ein (512).
-
Zur Veranschaulichung wird wieder angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine (der zweite Bandbreitenbedarf) 400 MB/s ist und dass der Speichersystembedarf (der erste Bandbreitenbedarf) 1,8 GB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde der Bandbreitenzuordnung der virtuellen Maschine auf 400 MB/s eingestellt und würde die Speichersystembandbreite auf 1,6 GB/s eingestellt.
-
Falls der Prozess nicht bestimmt, dass der zweite Bandbreitenbedarf kleiner als die garantierte zweite Zuordnung ist, stellt der Prozess 500 die erste Bandbreitenzuordnung auf den ersten Bandbreitenbedarf ein und stellt er die zweite Bandbreitenzuordnung auf eine Differenz der Gesamtbandbreitenzuordnung und der ersten Bandbreitenzuordnung ein (514). Zur Veranschaulichung wird wieder angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine (der zweite Bandbreitenbedarf) 1,3 GB/s ist und dass der Speichersystembedarf (der erste Bandbreitenbedarf) 1,0 GB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde die Bandbreitenzuordnung der virtuellen Maschine auf 1,0 GB/s eingestellt und würde die Speichersystembandbreite auf 1,0 GB/s eingestellt.
-
Zurückkehrend zu 504 bestimmt der Prozess 500 daraufhin, ob sowohl der erste als auch der zweite Bandbreitenbedarf kleiner als seine jeweils garantierte Zuordnung ist, falls der Prozess 500 nicht bestimmt hat, dass die Summe des ersten und des zweiten Bandbreitenbedarfs die Gesamtbandbreitenzuordnung übersteigt (516). Falls der Prozess bestimmt, dass sowohl der erste als auch der zweite Bandbreitenbedarf kleiner als seine jeweils garantierte Zuordnung ist, stellt der Prozess 500 die erste Bandbreitenzuordnung auf die garantierte erste Zuordnung und die zweite Bandbreitenzuordnung auf die garantierte zweite Zuordnung ein (518). Allgemeiner wird die Bandbreitenzuordnung für jede Entität in der Situation, in der die Summe aller Bandbreitenbedarfe kleiner als die zugeordnete Gesamtbandbreite ist und jeder Bandbreitenbedarf für eine Entität kleiner als die garantierte Bandbreitenzuordnung für diese Entität ist, auf die garantierte Bandbreitenzuordnung für diese Entität eingestellt.
-
Zur Veranschaulichung wird wieder angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine 200 MB/s ist und dass der Speichersystembedarf 300 MB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde die Bandbreitenzuordnung der virtuellen Maschine auf 800 MB/s eingestellt und würde die Speichersystemband breite auf 1,2 GB/s eingestellt.
-
Wenn die Summe aller Bandbreitenbedarfe kleiner als die Gesamtbandbreitenzuordnung ist, aber einige Bandbreitenbedarfe ihre jeweils garantierten Zuordnungen übersteigen, versucht der Begrenzer verteilter Bandbreite erneut, Bandbreite auf der Grundlage der relativen Notwendigkeiten der Entitäten zuzuordnen. Zum Beispiel bestimmt der Prozess 500, ob der erste Bandbreitenbedarf die garantierte erste Bandbreitenzuordnung übersteigt, falls der Prozess nicht bestimmt, dass sowohl der erste als auch der zweite Bandbreitenbedarf kleiner als seine jeweils garantierte Zuordnung ist (520). Falls der Prozess bestimmt, dass der erste Bandbreitenbedarf die garantierte erste Bandbreitenzuordnung übersteigt, stellt der Prozess 500 die erste Bandbreitenzuordnung auf den ersten Bandbreitenbedarf und die zweite Bandbreitenzuordnung auf eine Differenz der Gesamtbandbreitenzuordnung und der ersten Bandbreitenzuordnung ein (522).
-
Zur Veranschaulichung wird wieder angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine 400 MB/s ist und dass der Speichersystembedarf 1,4 GB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde die Bandbreitenzuordnung der virtuellen Maschine auf 600 MB/s eingestellt und würde die Speichersystembandbreite auf 1,4 GB/s eingestellt.
-
Falls der Prozess nicht bestimmt, dass der erste Bandbreitenbedarf die garantierte erste Bandbreitenzuordnung übersteigt, stellt der Prozess 500 die zweite Bandbreitenzuordnung auf einen zweiten Bandbreitenbedarf und die erste Bandbreitenzuordnung auf eine Differenz der Gesamtbandbreitenzuordnung und der zweiten Bandbreitenzuordnung ein (524). Zur Veranschaulichung wird wieder angenommen, dass die Gesamtbandbreitenzuordnung 2 GB/s ist, und wird angenommen, dass der Bedarf der virtuellen Maschine 900 MB/s ist und dass der Speichersystembedarf 1,0 GB/s ist. Außerdem wird angenommen, dass die garantierte Bandbreitenzuordnung für die virtuelle Maschine 800 MB/s ist und dass die garantierte Bandbreitenzuordnung für das Speichersystem 1,2 GB/s ist. In diesem Fall würde die Bandbreitenzuordnung der virtuellen Maschine auf 900 MB/s eingestellt und würde die Speichersystembandbreite auf 1,1 GB/s eingestellt.
-
Selbst mit Bandbreitenzuordnungen auf der Grundlage früherer Nutzungswerte kann es Situationen geben, in denen die Gesamtbandbreitenzuordnung etwas nicht voll genutzte Bandbreite besitzt. Dies kann z. B. auftreten, wenn die zugeordnete Bandbreite für die Gesamtheit auf ihre bestimmte Bedarfsbandbreite eingestellt wurde. Somit stellt der Begrenzer 220 verteilter Bandbreite in einigen Implementierungen einen Bandbreitenzuordnungs-Offset bereit, der auf der beobachteten nicht verwendeten Bandbreite beruht.
-
Zum Beispiel wird angenommen, dass für eine vorhergehende Iteration eine erste Entität eine Bandbreitenzuordnung hatte, die auf ihren Bandbreitenbedarf eingestellt war. Falls für diese Entität für die frühere Periode eine nicht verwendete Bandbreite beobachtet wird, kann diese nicht verwendete Bandbreite während einer aktuellen Periode anderem Verkehr zugeordnet werden, z. B. Verkehr für eine oder mehrere andere Entitäten zugeordnet werden. Der Begrenzer verteilter Bandbreite kann den folgenden Algorithmus verwenden, um den Bandbreitenzuordnungs-Offset zu erreichen:
wobei:
bandwidth_allocation_1[i-1] eine Bandbreitenzuordnung für eine erste Entität für eine vorhergehende Iteration ist;
demand_1[i-1] der für die erste Entität für die vorhergehende Iteration bestimmte Bandbreitenbedarf ist;
usage_value_1[i-1] der für die vorhergehende Iteration berichtete Nutzungswert ist; und
bandwidth_allocation_2[i] eine Bandbreitenzuordnung für eine zweite Entität für eine aktuelle Iteration ist, die auf die vorhergehende Iteration unmittelbar folgt.
-
Ausführungsformen des Gegenstands und der Operationen, die in dieser Patentschrift beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung oder in Computersoftware, Computerfirmware oder Computerhardware einschließlich der Strukturen, die in dieser Patentschrift offenbart sind, und ihrer strukturellen Entsprechungen oder in Kombinationen einer oder mehrerer von ihnen implementiert werden. Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen, die in einem Computerarbeitsspeichermedium zur Ausführung z. B. durch eine Datenverarbeitungseinrichtung oder zum Steuern von deren Betrieb codiert sind, implementiert werden.
-
Ein Computerspeichermedium kann z. B. eine computerlesbare Speichereinrichtung, ein computerlesbares Speichersubstrat, eine Schreib-Lese-Arbeitsspeicheranordnung oder eine Arbeitsspeicheranordnung mit seriellem Zugriff oder eine Schreib-Lese-Arbeitsspeichereinrichtung oder eine Arbeitsspeichereinrichtung mit seriellem Zugriff oder eine Kombination eines oder mehrerer von ihnen sein oder darin enthalten sein. Obgleich ein Computerspeichermedium kein ausgebreitetes Signal ist, kann ein Computerspeichermedium darüber hinaus eine Quelle oder ein Ziel von Computerprogrammanweisungen sein, die in einem künstlich erzeugten ausgebreiteten Signal codiert sind. Das Computerspeichermedium kann außerdem eine oder mehrere getrennte physikalische Komponenten oder Medien (z. B. mehrere CDs, Platten oder andere Speichereinrichtungen) sein oder darin enthalten sein.
-
Die in dieser Patentschrift beschriebenen Operationen können als Operationen implementiert werden, die durch eine Datenverarbeitungseinrichtung an Daten, die auf einer oder auf mehreren computerlesbaren Arbeitsspeichereinrichtungen gespeichert sind oder von anderen Quellen empfangen werden, ausgeführt werden.
-
Der Begriff ”Datenverarbeitungsvorrichtung” umfasst alle Arten von Vorrichtungen, Einrichtungen und Maschinen zur Verarbeitung von Daten einschließlich beispielhaft eines programmierbaren Prozessors, eines Computers, eines Einchipsystems oder mehrerer der Vorstehenden oder Kombinationen davon. Die Vorrichtung kann eine Speziallogikschaltungsanordnung, z. B. eine FPGA (frei programmierbare logische Anordnung) oder eine ASIC (anwendungsspezifische integrierte Schaltung), enthalten. Außerdem kann die Vorrichtung zusätzlich zu Hardware Code, der eine Ausführungsumgebung für das fragliche Computerprogramm erzeugt, z. B. Code, der Prozessorfirmware, einen Protokollstapel, ein Datenbankmanagementsystem, ein Betriebssystem, eine plattformübergreifende Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination eines oder mehrerer von ihnen bildet, enthalten. Die Vorrichtung und die Ausführungsumgebung können verschiedene unterschiedliche Computermodellinfrastrukturen wie etwa Web-Dienste, verteilte Computerinfrastrukturen und GRID-Computerinfrastrukturen verwirklichen.
-
Ein Computerprogramm (auch als ein Programm, als Software, als Softwareanwendung, als Skript oder als Code bekannt) kann in irgendeiner Form einer Programmiersprache einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, geschrieben sein und kann in irgendeiner Form einschließlich als selbstständiges Programm oder als ein Modul, als eine Komponente, als ein Unterprogramm, als ein Objekt oder als eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist, eingesetzt werden. Ein Computerprogramm kann einer Datei in einem Dateisystem entsprechen, muss es aber nicht. Ein Programm kann in einem Abschnitt einer Datei, die andere Programme oder Daten (z. B. ein oder mehrere Skripte, die in einem Markup-Sprachen-Dokument gespeichert sind) hält, in einer einzelnen Datei, die für das fragliche Programm vorgesehen ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Abschnitte von Code speichern) gespeichert sein. Ein Computerprogramm kann dafür eingesetzt werden, in einem Computer oder in mehreren Computern, die sich an einem Standort befinden oder die über mehrere Standorte verteilt sind und durch ein Kommunikationsnetz miteinander verbunden sind, ausgeführt zu werden.
-
Die Prozesse und Logikabläufe, die in dieser Patentschrift beschrieben sind, können durch einen oder mehrere programmierbare Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um durch Bearbeiten von Eingangsdaten und Erzeugen einer Ausgabe Tätigkeiten auszuführen. Die Prozesse und Logikabläufe können ebenfalls durch eine Speziallogikschaltungsanordnung, z. B. durch eine FPGA (eine frei programmierbare logische Anordnung) oder durch eine ASIC (eine anwendungsspezifische integrierte Schaltung), ausgeführt werden und die Vorrichtungen können ebenfalls als solche implementiert werden.
-
Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, enthalten beispielsweise sowohl Mehrzweck- als auch Spezialmikroprozessoren und irgendeinen oder mehrere Prozessoren irgendeiner Art Digitalcomputer. Allgemein empfängt ein Prozessor Anweisungen und Daten von einem Nur-Lese-Arbeitsspeicher oder von einem Schreib-Lese-Arbeitsspeicher oder von beiden. Die wesentlichen Elemente eines Computers sind ein Prozessor zum Ausführen von Tätigkeiten in Übereinstimmung mit Anweisungen und eine oder mehrere Arbeitsspeichereinrichtungen zum Speichern von Anweisungen und Daten. Allgemein enthält ein Computer ebenfalls Daten von einer oder mehreren Massenspeichereinrichtungen zum Speichern von Daten, z. B. magnetischen, magnetooptischen Platten oder optischen Platten, oder ist er zum Empfangen von Daten von ihnen oder zum Übertragen von Daten an sie oder für beides funktional gekoppelt. Allerdings braucht ein Computer solche Einrichtungen nicht aufzuweisen. Darüber hinaus kann ein Computer in eine andere Einrichtung, z. B. in ein Mobiltelephon, in einen Personal Digital Assistant (PDA), in einen mobilen Audio- oder Videoplayer, in eine Spielekonsole, in einen Empfänger des globalen Positionsbestimmungssystems (GPS) oder in eine tragbare Speichereinrichtung (z. B. ein Universal-Serial-Bus-Flash-Laufwerk (USB-Flash-Laufwerk)), um nur einige zu nennen, eingebettet sein. Einrichtungen, die zum Speichern von Computerprogrammanweisungen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Arbeitsspeicher, Medien und Arbeitsspeichereinrichtungen einschließlich beispielhaft Halbleiterarbeitsspeichereinrichtungen, z. B. EPROM, EEPROM und Flash-Arbeitsspeichereinrichtungen; Magnetplatten, z. B. interne Festplatten oder Wechselplatten; magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Arbeitsspeicher können durch eine Speziallogikschaltungsanordnung ergänzt oder in sie integriert sein.
-
Um eine Interaktion mit einem Nutzer bereitzustellen, können Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands in einem Computer mit einer Anzeigeeinrichtung, z. B. mit einem CRT-Monitor (Katodenstrahlenröhrenmonitor) oder mit einem LCD-Monitor (Flüssigkristallanzeigemonitor) zum Anzeigen von Informationen für den Nutzer, und mit einer Tastatur und einer Zeigeeinrichtung, z. B. einer Maus oder einem Trackball, durch die der Nutzer eine Eingabe für den Computer bereitstellen kann, implementiert werden. Um eine Interaktion mit einem Nutzer bereitzustellen, können ebenfalls andere Arten von Einrichtungen verwendet werden; z. B. kann eine für den Nutzer bereitgestellte Rückkopplung irgendeine Form einer sensorischen Rückkopplung, z. B. eine visuelle Rückkopplung, eine hörbare Rückkopplung oder eine Tastrückkopplung, sein; und kann eine Eingabe von dem Nutzer in irgendeiner Form einschließlich einer akustischen Eingabe, einer Spracheingabe oder einer Tasteingabe empfangen werden. Außerdem kann ein Computer mit einem Nutzer dadurch interagieren, dass er an eine Einrichtung, die durch den Nutzer verwendet wird, Dokumente sendet und Dokumente von ihr empfängt; z. B., indem er in Reaktion auf Anforderungen, die von dem Webbrowser empfangen werden, Webseiten an einen Webbrowser auf einer Nutzereinrichtung des Nutzers sendet.
-
Ausführungen des in dieser Patentschrift beschriebenen Gegenstands können in einem Computersystem implementiert werden, das eine Backend-Komponente, z. B. als einen Datenserver, enthält oder das eine Middleware-Komponente, z. B. einen Anwendungsserver, enthält oder das eine Frontend-Komponente, z. B. einen Nutzercomputer mit einer graphischen Nutzerschnittstelle oder mit einem Webbrowser, über den ein Nutzer mit einer Implementierung des in dieser Patentschrift beschriebenen Gegenstands interagieren kann, enthält oder das irgendeine Kombination einer oder mehrerer solcher Backend-, Middleware- oder Frontend-Komponenten enthält. Die Komponenten des Systems können durch irgendeine Form oder durch irgendein Medium der digitalen Datenkommunikation, z. B. durch ein Kommunikationsnetz, miteinander verbunden sein. Beispiele für Kommunikationsnetze enthalten ein lokales Netz (”LAN”) und ein Weitverkehrsnetz (”WAN”), ein Inter-Netz (z. B. das Internet) und Peer-to-Peer-Netze (z. B. Ad-hoc-Peer-to-Peer-Netze).
-
Das Computersystem kann Nutzer und Server enthalten. Allgemein sind ein Nutzer und ein Server fern voneinander und üblicherweise interagieren sie über ein Kommunikationsnetz. Die Beziehung von Nutzer und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern ausgeführt werden und die eine Nutzer-Server-Beziehung zueinander besitzen. In einigen Ausführungsformen sendet ein Server Daten (z. B. eine HTML-Seite) an eine Nutzereinrichtung (z. B. zum Anzeigen von Daten für einen Nutzer, der mit der Nutzereinrichtung interagiert, und zum Empfangen einer Nutzereingabe von ihm). Daten, die bei der Nutzereinrichtung erzeugt werden (z. B. ein Ergebnis der Nutzerinteraktion), können von der Nutzereinrichtung bei dem Server empfangen werden.
-
Obgleich diese Patentschrift viele spezifische Implementierungseinzelheiten enthält, sind diese nicht als Beschränkungen des Schutzumfangs dessen, was beansprucht werden kann, sondern vielmehr als Beschreibungen von Merkmalen, die spezifisch für bestimmte Ausführungsformen sind, zu verstehen. Bestimmte Merkmale, die in dieser Patentschrift im Kontext getrennter Ausführungsformen beschrieben sind, können ebenfalls zusammen in einer einzelnen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben sind, ebenfalls in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Teilkombination implementiert werden. Obgleich Merkmale oben in der Weise beschrieben sein können, dass sie in bestimmten Kombinationen wirken und anfangs sogar in der Weise beansprucht sind, können darüber hinaus ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination ausgeschlossen werden und kann die beanspruchte Kombination auf eine Teilkombination oder auf Varianten einer Teilkombination gerichtet sein.
-
Obgleich Operationen in den Zeichnungen in einer bestimmten Reihenfolge gezeigt sind, ist dies ähnlich nicht so zu verstehen, dass es erfordert, dass diese Operationen in der bestimmten gezeigten Reihenfolge oder in einer sequentiellen Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um wünschenswerte Ergebnisse zu erzielen. In bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus ist die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht so zu verstehen, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und können die beschriebenen Programmkomponenten und Systeme selbstverständlich allgemein zusammen in ein einzelnes Softwareprodukt integriert oder in mehrere Softwareprodukte gepackt sein.
-
Somit sind bestimmte Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen liegen im Schutzumfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen dargestellten Tätigkeiten in einer anderen Reihenfolge ausgeführt werden und weiterhin wünschenswerte Ergebnisse erzielen. Außerdem erfordern die in den beigefügten Figuren gezeigten Prozesse nicht notwendig die bestimmte gezeigte Reihenfolge oder sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.