Lastausgleich (Computer)

Diagramm, das Benutzeranfragen an eine veranschaulicht Elasticsarch Cluster wird von einem Lastausgleich verteilt. (Beispiel für Wikipedia.))

Im Computer, Lastverteilung bezieht sich auf den Prozess der Verteilung eines Satzes von Aufgaben über einen Satz von Ressourcen (Computereinheiten) mit dem Ziel, ihre Gesamtverarbeitung effizienter zu gestalten. Das Lastausgleich kann die Reaktionszeit optimieren und ein ungleichmäßiges Überladen einiger Berechnungsknoten vermeiden, während andere Rechenknoten im Leerlauf links sind.

Lastausgleich ist Gegenstand der Forschung im Bereich von Parallele Computer. Es gibt zwei Hauptansätze: statische Algorithmen, die den Zustand der verschiedenen Maschinen nicht berücksichtigen, und dynamische Algorithmen, die normalerweise allgemeiner und effizienter sind, aber Informationsaustausch zwischen den verschiedenen Computereinheiten erfordern, mit dem Risiko eines Verlusts Effizienz.

Problemübersicht

Ein Algorithmus aus dem Ladebalancieren versucht immer, ein bestimmtes Problem zu beantworten. Unter anderem die Natur der Aufgaben, der Algorithmic Komplexität, die Hardware -Architektur, auf der die Algorithmen ausgeführt werden, sowie erforderlich Fehlertoleranz, muss berücksichtigt werden. Daher muss ein Kompromiss festgestellt werden, um die anwendungsspezifischen Anforderungen am besten zu erfüllen.

Art der Aufgaben

Die Effizienz von Lastausgleichsalgorithmen hängt kritisch von der Art der Aufgaben ab. Je mehr Informationen über die Aufgaben zum Zeitpunkt der Entscheidungsfindung verfügbar sind, desto größer ist das Potenzial für die Optimierung.

Größe der Aufgaben

Perfekte Kenntnis der Ausführungszeit von jeder der Aufgaben ermöglicht es, eine optimale Lastverteilung zu erreichen (siehe Algorithmus von Präfix -Summe).[1] Leider ist dies tatsächlich ein idealisierter Fall. Genau kennen Ausführungszeit jeder Aufgabe ist eine äußerst seltene Situation.

Aus diesem Grund gibt es mehrere Techniken, um eine Vorstellung von den verschiedenen Ausführungszeiten zu bekommen. In dem glücklichen Szenario, Aufgaben von relativ homogener Größe zu haben, ist es zuallererst möglich, dass jeder von ihnen ungefähr die durchschnittliche Ausführungszeit benötigt. Wenn andererseits die Ausführungszeit sehr unregelmäßig ist, müssen anstrengtere Techniken angewendet werden. Eine Technik ist, einige hinzuzufügen Metadaten zu jeder Aufgabe. Abhängig von der vorherigen Ausführungszeit für ähnliche Metadaten ist es möglich, Schlussfolgerungen für eine zukünftige Aufgabe zu ziehen, die auf Statistiken basiert.[2]

Abhängigkeiten

In einigen Fällen hängen die Aufgaben voneinander ab. Diese Interdependenzen können durch a veranschaulicht werden Regie acyclische Graphen. Intuitiv können einige Aufgaben erst beginnen, wenn andere abgeschlossen sind.

Unter der Annahme, dass die erforderliche Zeit für jede der Aufgaben im Voraus bekannt ist, muss eine optimale Ausführungsreihenfolge zur Minimierung der Gesamtausführungszeit führen. Obwohl dies ein ist Np-harte Problem und daher kann es schwierig sein, genau gelöst zu werden. Es gibt Algorithmen wie Job Scheduler, die optimale Aufgabenverteilungen berechnen metaheuristisch Methoden.

Aufgaben Trennung

Ein weiteres Merkmal der Aufgaben, die für das Design eines Lastausgleichsalgorithmus von entscheidender Bedeutung sind, ist die Fähigkeit, während der Ausführung in Unteraufgaben unterteilt zu werden. Der später vorgestellte "Baumförmige Berechnungsalgorithmus" nutzt diese Spezifität groß.

Statische und dynamische Algorithmen

Statisch

Ein Lastausgleichsalgorithmus ist "statisch", wenn er den Status des Systems für die Verteilung der Aufgaben nicht berücksichtigt. Dadurch umfasst der Systemzustand Maßnahmen wie die Lastniveau (und manchmal sogar Überlastung) bestimmter Prozessoren. Stattdessen werden im Voraus Annahmen über das Gesamtsystem getroffen, z. B. die Ankunftszeiten und die Ressourcenanforderungen eingehender Aufgaben. Darüber hinaus sind die Anzahl der Prozessoren, ihre jeweiligen Kraft- und Kommunikationsgeschwindigkeiten bekannt. Daher zielt die statische Lastausgleichsziel darauf ab, einen bekannten Satz von Aufgaben mit den verfügbaren Prozessoren zu verbinden, um eine bestimmte Leistungsfunktion zu minimieren. Der Trick liegt im Konzept dieser Leistungsfunktion.

Statische Lastausgleichstechniken sind häufig um einen Router zentralisiert, oder Meister, was die Lasten verteilt und die Leistungsfunktion optimiert. Diese Minimierung kann Informationen zu den zu verteilenden Aufgaben berücksichtigen und eine erwartete Ausführungszeit ableiten.

Der Vorteil statischer Algorithmen besteht darin, dass sie bei relativ regelmäßigen Aufgaben einfach einrichten und äußerst effizient sind (z. B. HTTP -Anfragen von einer Website). Es gibt jedoch immer noch einige statistische Varianz bei der Zuordnung von Aufgaben, die zur Überlastung einiger Computereinheiten führen können.

Dynamisch

Im Gegensatz zu statischen Lastverteilungsalgorithmen berücksichtigen dynamische Algorithmen die aktuelle Last jeder der Computereinheiten (auch als Knoten) im System. Bei diesem Ansatz können Aufgaben dynamisch von einem überlasteten Knoten zu einem unterlasteten Knoten verschoben werden, um eine schnellere Verarbeitung zu erhalten. Während diese Algorithmen für das Design viel komplizierter sind, können sie insbesondere hervorragende Ergebnisse erzielen, wenn die Ausführungszeit von einer Aufgabe zu einer anderen stark unterschiedlich ist.

Dynamische Lastausgleichsarchitektur kann mehr sein modular Da es nicht obligatorisch ist, einen bestimmten Knoten für die Verteilung der Arbeit zu haben. Wenn Aufgaben in einem bestimmten Zeitpunkt einem Prozessor nach ihrem Staat einzigartig zugeordnet sind, ist dies eine einzigartige Aufgabe. Wenn andererseits die Aufgaben nach dem Zustand des Systems und seiner Entwicklung dauerhaft neu verteilt werden können, wird dies als dynamische Zuordnung bezeichnet.[3] Ein Lastausgleichsalgorithmus, der zu viel Kommunikation erfordert, um seine Entscheidungen zu treffen, besteht das Risiko, die Auflösung des Gesamtproblems zu verlangsamen.

Hardwarearchitektur

Heterogene Maschinen

Parallele Computing -Infrastrukturen bestehen häufig aus Einheiten verschiedener Rechenleistung, was für die Lastverteilung berücksichtigt werden sollte.

Beispielsweise können Einheiten mit niedrigerem Stromversorgungsanfragen Anfragen erhalten, die eine geringere Berechnung erfordern, oder erhalten bei homogenen oder unbekannten Anforderungsgrößen weniger Anfragen als größere Einheiten.

Gemeinsamer und verteilter Speicher

Parallele Computer werden häufig in zwei breite Kategorien unterteilt: diejenigen, in denen alle Prozessoren einen einzigen gemeinsamen Speicher teilen, auf dem sie parallel lesen und schreiben (KINDERWAGEN Modell) und diejenigen, bei denen jede Computereinheit einen eigenen Speicher hat (Verteilter Speicher Modell) und wo Informationen durch Nachrichten ausgetauscht werden.

Zum geteilte Erinnerung Computer, das Verwalten von Schreibkonflikten verlangsamt die Geschwindigkeit der individuellen Ausführung jeder Computereinheit erheblich. Sie können jedoch parallel gut arbeiten. Umgekehrt kann jeder der Prozessoren im Fall des Nachrichtenaustauschs mit voller Geschwindigkeit arbeiten. Andererseits müssen alle Prozessoren beim Austausch mit kollektiven Nachrichten darauf warten, dass die langsamsten Prozessoren die Kommunikationsphase starten.

In Wirklichkeit fallen nur wenige Systeme genau in eine der Kategorien. Im Allgemeinen haben die Prozessoren jeweils einen internen Speicher, um die für die nächsten Berechnungen erforderlichen Daten zu speichern, und sind in Folge organisiert Cluster. Oft werden diese Verarbeitungselemente dann durch koordiniert Verteilter Speicher und Nachrichtenübergang. Daher sollte der Lastausgleichsalgorithmus eindeutig an eine parallele Architektur angepasst werden. Andernfalls besteht das Risiko, dass die Effizienz der parallelen Problemlösung stark reduziert wird.

Hierarchie

Anhand der oben angezeigten Hardwarestrukturen gibt es zwei Hauptkategorien von Lastausgleichsalgorithmen. Einerseits wird derjenige, bei dem Aufgaben von „Master“ zugeordnet und von „Arbeitern“ ausgeführt werden, die den Meister über den Fortschritt seiner Arbeit auf dem Laufenden halten, und der Meister kann dann die Verantwortung für die Zuweisung oder Neugestaltung der Arbeitsbelastung im Falle deses übernehmen Dynamischer Algorithmus. Die Literatur bezieht sich darauf als "Meisterarbeiter" die Architektur. Andererseits kann die Steuerung zwischen den verschiedenen Knoten verteilt werden. Der Lastausgleichsalgorithmus wird dann auf jeden von ihnen ausgeführt, und die Verantwortung für die Zuweisung von Aufgaben (sowie die Wiedergabe und Spaltung gegebenenfalls) wird geteilt. In der letzten Kategorie wird ein dynamischer Lastausgleichsalgorithmus angenommen.

Da das Design jedes Lastausgleichsalgorithmus einzigartig ist, muss die vorherige Unterscheidung qualifiziert werden. Daher ist es auch möglich, eine Zwischenstrategie zu haben, beispielsweise "Master" -Knoten für jeden Subcluster, der selbst einem globalen "Master" ausgesetzt ist. Es gibt auch mehrstufige Organisationen mit einer Abwechslung zwischen Master-Slave- und Distributed Control Strategies. Die letzteren Strategien werden schnell komplex und werden selten auftreten. Designer bevorzugen Algorithmen, die leichter zu steuern sind.

Anpassung an größere Architekturen (Skalierbarkeit)

Im Kontext von Algorithmen, die sehr langfristig laufen (Server, Cloud ...), entwickelt sich die Computerarchitektur im Laufe der Zeit. Es ist jedoch vorzuziehen, nicht jedes Mal einen neuen Algorithmus zu entwerfen.

Ein äußerst wichtiger Parameter eines Lastausgleichsalgorithmus ist daher die Fähigkeit, sich an skalierbare Hardwarearchitektur anzupassen. Dies nennt man die Skalierbarkeit des Algorithmus. Ein Algorithmus wird für einen Eingabeparameter als skalierbar bezeichnet, wenn seine Leistung relativ unabhängig von der Größe dieses Parameters bleibt.

Wenn der Algorithmus in der Lage ist, sich an eine unterschiedliche Anzahl von Computereinheiten anzupassen, die Anzahl der Computereinheiten muss jedoch vor der Ausführung festgelegt werden, wird er als formbar bezeichnet. Wenn andererseits der Algorithmus während seiner Ausführung mit einer schwankenden Anzahl von Prozessoren umgehen kann, soll der Algorithmus formbar sein. Die meisten Lastausgleichsalgorithmen sind zumindest formbar.[4]

Fehlertoleranz

Besonders in großem Maßstab ComputerclusterEs ist nicht erträglich, einen parallelen Algorithmus auszuführen, der dem Ausfall einer einzelnen Komponente nicht standhalten kann. Deswegen, Fehlertoleranz Es werden Algorithmen entwickelt, die Ausfälle von Prozessoren erkennen und die Berechnung wiederherstellen können.[5]

Ansätze

Statische Verteilung mit vollem Wissen über die Aufgaben: Präfix -Summe

Wenn die Aufgaben voneinander unabhängig sind und ihre jeweilige Ausführungszeit und die Aufgaben unterteilt werden können, gibt es einen einfachen und optimalen Algorithmus.

Durch die Aufteilung der Aufgaben so, dass jeder Prozessor die gleiche Berechnung ergibt, bleibt nur noch zu tun, um die Ergebnisse zusammen zu gruppieren. Verwendung einer Präfix -Summe Algorithmus kann diese Teilung in berechnet werden logarithmische Zeit in Bezug auf die Anzahl der Prozessoren.

Lastausgleichsalgorithmus abhängig von der Spaltbarkeit von Aufgaben

Wenn die Aufgaben jedoch nicht unterteilt werden können (d. H. Sie sind es Atomic.[1]

Meistens ist die Ausführungszeit einer Aufgabe unbekannt und es sind nur raue Näherungen verfügbar. Dieser Algorithmus ist zwar besonders effizient, ist jedoch für diese Szenarien nicht realisierbar.

Statische Lastverteilung ohne Vorkenntnisse

Auch wenn die Ausführungszeit überhaupt nicht im Voraus bekannt ist, ist statische Lastverteilung immer möglich.

Round-Robin-Planung

In einem Round-Robin-Algorithmus wird die erste Anfrage an den ersten Server, dann am nächsten und so weiter zum letzten. Dann wird es erneut gestartet, wobei die nächste Anforderung dem ersten Server usw. zugewiesen wird.

Dieser Algorithmus kann so gewichtet werden, dass die leistungsstärksten Einheiten die größte Anzahl von Anfragen erhalten und zuerst erhalten.

Randomisierte statische

Randomisierter statischer Lastausgleich ist einfach eine Frage der zufälligen Zuweisung von Aufgaben zu den verschiedenen Servern. Diese Methode funktioniert ganz gut. Wenn andererseits die Anzahl der Aufgaben im Voraus bekannt ist, ist es noch effizienter, eine zufällige Permutation im Voraus zu berechnen. Dies vermeidet die Kommunikationskosten für jede Aufgabe. Es besteht keine Notwendigkeit mehr für einen Verteilungsmaster, da jeder Prozessor weiß, welche Aufgabe ihm zugeordnet ist. Auch wenn die Anzahl der Aufgaben unbekannt ist, ist es dennoch möglich, die Kommunikation mit einer Pseudo-Random-Zuordnung zu vermeiden, die allen Prozessoren bekannt ist.

Die Leistung dieser Strategie (gemessen in der Gesamtausführungszeit für einen gegebenen festen Aufgabensatz) nimmt mit der maximalen Größe der Aufgaben ab.

Andere

Natürlich gibt es auch andere Zuordnungsmethoden:

  • Weniger Arbeit: Weisen Sie den Servern mehr Aufgaben zu, indem Sie weniger ausführen (die Methode kann auch gewichtet werden).
  • Hash: Zuteilung Anfragen nach a Hash-tabelle.
  • Leistung von zwei Auswahlmöglichkeiten: Wählen Sie zufällig zwei Server und wählen Sie das Besser der beiden Optionen.[6][7]

Master-Arbeiter-Schema

Meisterarbeiter Schemata gehören zu den einfachsten dynamischen Lastausgleichsalgorithmen. Ein Master verteilt die Arbeitsbelastung an alle Arbeitnehmer (manchmal auch als "Sklaven" bezeichnet). Zunächst sind alle Arbeitnehmer untätig und melden dies dem Meister. Der Master beantwortet Arbeitnehmer an, die Aufgaben an sie zu beantworten und an sie auszugeben. Wenn er keine Aufgaben mehr zu geben hat, informiert er die Arbeiter, damit sie aufhören, nach Aufgaben zu fragen.

Der Vorteil dieses Systems besteht darin, dass es die Belastung sehr fair verteilt. Wenn man die für die Zuordnung erforderliche Zeit nicht berücksichtigt, wäre die Ausführungszeit mit der oben angezeigten Präfix -Summe vergleichbar.

Das Problem bei diesem Algorithmus ist, dass es aufgrund der hohen notwendigen Kommunikation Schwierigkeiten hat, sich an eine große Anzahl von Prozessoren anzupassen. Dieser Mangel an Skalierbarkeit macht es schnell in operierbar in sehr großen Servern oder sehr großen parallelen Computern. Der Meister wirkt als Engpass.

Meisterin und Engpass

Die Qualität des Algorithmus kann jedoch erheblich verbessert werden, indem der Master durch eine Aufgabenliste ersetzt wird, die von verschiedenen Prozessoren verwendet werden kann. Obwohl dieser Algorithmus etwas schwieriger zu implementieren ist, verspricht er viel bessere Skalierbarkeit, obwohl es für sehr große Computerzentren immer noch nicht ausreicht.

Nicht-hierarchische Architektur, ohne Kenntnis des Systems: Arbeit stehlen

Eine weitere Technik zur Überwindung von Skalierbarkeitsproblemen, wenn die Zeit für die Abschluss des Aufgabens unbekannt ist Arbeit stehlen.

Der Ansatz besteht darin, jedem Prozessor eine bestimmte Anzahl von Aufgaben zufällig oder vordefiniert zuzuweisen und dann inaktive Prozessoren zu ermöglichen, die Arbeit von aktiven oder überlasteten Prozessoren zu "stehlen". Es gibt mehrere Implementierungen dieses Konzepts, definiert durch ein Task -Division -Modell und die Regeln, die den Austausch zwischen Prozessoren bestimmen. Diese Technik kann zwar besonders effektiv sein, aber es ist schwierig zu implementieren, da sicherzustellen, dass die Kommunikation nicht zur Hauptbeschäftigung der Prozessoren wird, anstatt das Problem zu lösen.

Bei Atomaufgaben können zwei Hauptstrategien unterschieden werden, bei denen die Prozessoren mit geringer Belastung ihren Rechenkapazitäten für diejenigen mit der höchsten Last bieten, und dies waren die am meisten beladenen Einheiten, die die ihnen zugewiesene Arbeitsbelastung aufhellen möchten. Es wurde gezeigt[8] Wenn das Netzwerk stark geladen ist, ist es für die am wenigsten beladenen Einheiten effizienter, ihre Verfügbarkeit anzubieten, und wenn das Netzwerk leicht geladen ist, sind es die überlasteten Prozessoren, die Unterstützung von den inaktivsten erfordern. Diese Faustregel begrenzt die Anzahl der ausgetauschten Nachrichten.

In dem Fall, in dem man von einer einzelnen großen Aufgabe startet, die nicht über einen atomaren Niveau aufgeteilt werden kann, gibt es einen sehr effizienten Algorithmus "Baumförmigen" -Recher ".[9] wo die übergeordnete Aufgabe in einem Arbeitsbaum verteilt ist.

Prinzip

Zunächst haben viele Prozessoren eine leere Aufgabe, außer einer, die nacheinander funktioniert. Leerlaufprozessoren geben Anfragen zufällig an andere Prozessoren aus (nicht unbedingt aktiv). Wenn letzteres die Aufgabe, an der sie arbeitet, unterteilt wird, sendet dies einen Teil seiner Arbeit an den Knoten, der die Anfrage stellt. Andernfalls gibt es eine leere Aufgabe zurück. Dies führt zu a Baumstruktur. Anschließend ist es notwendig, ein Kündigungssignal an den übergeordneten Prozessor zu senden, wenn die Subtask abgeschlossen ist, damit sie wiederum die Nachricht an ihre übergeordnete Sendung sendet, bis sie die Wurzel des Baumes erreicht. Wenn der erste Prozessor, d. H. Die Wurzel, abgeschlossen ist, kann eine globale Beendigungnachricht ausgestrahlt werden. Am Ende ist es notwendig, die Ergebnisse zusammenzustellen, indem Sie den Baum hinaufgehen.

Effizienz

Die Effizienz eines solchen Algorithmus liegt nahe an der Präfix -Summe, wenn die Arbeitskürzung und die Kommunikationszeit im Vergleich zu den zu er legenden Arbeiten nicht zu hoch sind. Um zu hohe Kommunikationskosten zu vermeiden, können Sie sich eine Liste von Jobs vorstellen geteilte Erinnerung. Daher wird auf Anfrage des Master -Prozessors einfach eine Anfrage aus einer bestimmten Position zu diesem gemeinsam genutzten Speicher gelesen.

Anwendungsfälle

Zusätzlich zur effizienten Problemlösung durch parallele Berechnungen werden Lastausgleichsalgorithmen in großem Umfang verwendet Http Anfrageverwaltung, bei der eine Website mit einem großen Publikum eine große Anzahl von Anfragen pro Sekunde bearbeiten muss.

Internetbasierte Dienste

Eine der am häufigsten verwendeten Anwendungen des Lastausgleichs ist die Bereitstellung eines einzelnen Internetdienstes von mehreren Server, manchmal bekannt als a Serverfarm. Zu den häufig beladenen Systemen gehören beliebt Websites, groß Internet Relay Chat Netzwerke, Hochbandbreite Dateitransferprotokoll (FTP) Websites, Netzwerk -Nachrichtentransferprotokoll (NNTP) Server, Domainnamensystem (DNS) Server und Datenbanken.

Round-Robin-DNS

Round-Robin-DNS ist eine alternative Methode zum Lastausgleich, für die keine dedizierte Software oder Hardwareknoten erforderlich sind. In dieser Technik mehrere IP -Adressen sind mit einem einzigen verbunden Domainname; Kunden erhalten IP in rund-Robin-Weise. IP wird Clients mit einem kurzen Ablauf zugeordnet, sodass der Kunde beim nächsten Zugriff auf die Anforderung des Internetdienstes mit größerer Wahrscheinlichkeit eine andere IP verwendet.

DNS -Delegation

Eine weitere effektivere Technik für das Lastausgleich mit DNS ist das Delegieren www.example.org Als Unterdomäne, dessen Zone von jedem der gleichen Server serviert wird, die der Website bedienen. Diese Technik funktioniert besonders gut, wenn einzelne Server geografisch im Internet verteilt sind. Zum Beispiel:

One.example.org a 192.0.2.1 zwei.example.org a 203.0.113.2 www.example.org ns ein.example.org www.example.org ns zwei.example.org

Die Zonendatei für jedoch www.example.org Auf jedem Server ist unterschiedlich, dass jeder Server seine eigene IP-Adresse als A-Rekord auflöst.[10] Auf dem Server eines die Zonendatei für www.example.org Berichte:

@ in einem 192.0.2.1

Auf dem Server zwei Die gleiche Zonendatei enthält:

@ in einem 203.0.113.2

Auf diese Weise reagiert sein DNS, wenn ein Server gesunken ist, nicht und der Webdienst erhält keinen Datenverkehr. Wenn die Linie zu einem Server überlastet ist, gewährleistet die Unzuverlässigkeit von DNS weniger HTTP -Verkehr erreicht diesen Server. Darüber hinaus ist die schnellste DNS-Reaktion auf den Resolver fast immer die am engste Server des Netzwerks, die die geo-sensitive Lastausschüttung sicherstellt. Ein kurzer Ttl Auf dem A-Rekord hilft sicherzustellen, dass der Datenverkehr schnell umgeleitet wird, wenn ein Server sinkt. Es muss die Möglichkeit berücksichtigt werden, dass diese Technik einzelne Clients dazu veranlassen kann, in der Mitte der Sitzung zwischen einzelnen Servern zu wechseln.

Client-Seite zufälliger Lastausgleich

Ein weiterer Ansatz zum Ladeausgleich besteht darin, dem Client eine Liste von Server -IPs zu liefern und den Client dann zufällig die IP aus der Liste in jeder Verbindung auszuwählen.[11][12] Dies stützt sich im Wesentlichen auf allen Clients, die ähnliche Lasten generieren, und die Gesetz der großen Anzahl[12] um eine einigermaßen flache Lastverteilung über Server hinweg zu erzielen. Es wurde behauptet, dass der clientseitige zufällige Lastausgleich dazu neigt, eine bessere Lastverteilung zu bieten als Round-Robin-DNS. Dies wurde auf Caching-Probleme mit Round-Robin-DNS zurückgeführt, die bei großen DNS-Caching-Servern die Verteilung für Round-Robin-DNS tendieren, während die zufällige Selektion der clientseitigen Zufallsauswahl unabhängig von DNS-Caching bleibt.[12]

Mit diesem Ansatz kann die Methode zur Bereitstellung einer Liste von IPs an den Kunden variieren und kann als DNS-Liste (an alle Kunden ohne Round-Robin geliefert) oder über die Hardcodierung der Liste implementiert werden. Wenn ein "Smart -Client" verwendet wird, wobei festgestellt wird, dass ein zufällig ausgewählter Server heruntergekommen ist und sich wieder zufällig verbindet Fehlertoleranz.

Server-Seite Lastbalancer

Für Internetdienste ist ein serverseitiger Load Balancer in der Regel ein Softwareprogramm, das das zuhört Hafen wo externe Kunden mit Zugangsdiensten eine Verbindung herstellen. Der Lastbalancer leitet die Anfragen an einen der "Backend" -Server weiter, was normalerweise auf den Lastausgleich antwortet. Auf diese Weise kann der Lastausgleich auf den Client antworten, ohne dass der Client jemals über die interne Trennung von Funktionen weiß. Es hindert auch Kunden daran, sich direkt mit Back-End-Servern zu wenden, was Sicherheitsvorteile haben kann, indem sie die Struktur des internen Netzwerks versteckt und Angriffe auf den Netzwerkstapel des Kernels oder nicht verwandte Dienste, die in anderen Ports ausgeführt werden, verhindern.

Einige Lastbalancer bieten einen Mechanismus, um etwas Besonderes zu tun, wenn alle Backend -Server nicht verfügbar sind. Dies kann die Weiterleitung an einen Backup -Last -Balancer oder das Anzeigen einer Nachricht zum Ausfall beinhalten.

Es ist auch wichtig, dass der Lastausgleich selbst nicht zu einem wird der Punkt des Versagens. Normalerweise werden Lastbalancer in implementiert hohe Verfügbarkeit Paare, die auch Sitzungsdaten für Sitzungen replizieren können, falls sie von der spezifischen Anwendung erforderlich sind.[13] Bestimmte Anwendungen werden mit der Immunität gegen dieses Problem programmiert, indem der Lastausgleichspunkt über Differential -Sharing -Plattformen über das definierte Netzwerk hinausgeht. Die mit diesen Funktionen gepaarten sequentiellen Algorithmen werden durch flexible Parameter definiert, die in der spezifischen Datenbank eindeutig sind.[14]

Planungsalgorithmen

Zahlreich PlanungsalgorithmenAuch Lastausgleichsmethoden werden von Load Balancern verwendet, um zu bestimmen, auf welchen Back-End-Server eine Anfrage gesendet werden soll. Einfache Algorithmen enthalten zufällige Auswahl, Runde Robin, oder am wenigsten Verbindungen.[15] Ausgefugtere Lastbalancer können zusätzliche Faktoren berücksichtigen, z. Viel Verkehr wurde kürzlich zugewiesen.

Beharrlichkeit

Ein wichtiges Problem beim Betrieb eines ladenausgleichenden Dienstes ist, wie Sie Informationen behandeln, die in den mehreren Anforderungen in der Sitzung eines Benutzers aufbewahrt werden müssen. Wenn diese Informationen lokal auf einem Backend -Server gespeichert werden, könnten nachfolgende Anfragen an verschiedene Backend -Server nicht in der Lage sein, sie zu finden. Dies können zwischengespeicherte Informationen sein, die neu berechnet werden können. In diesem Fall wird in diesem Fall eine Anfrage an einen anderen Backend-Server geladen, der gerade ein Leistungsproblem einführt.[15]

Im Idealfall sollte der Cluster der Server hinter dem Lastbalancer nicht auf Sitzungsbewusstsein sein. Dies wird normalerweise mit einer gemeinsam genutzten Datenbank oder einer Datenbank für die Memory-Sitzung erreicht Memcached.

Eine grundlegende Lösung für das Problem mit Sitzungsdaten besteht darin, alle Anforderungen in einer Benutzersitzung konsequent an denselben Backend -Server zu senden. Dies ist als "Persistenz" oder "Klebrigkeit" bekannt. Ein erheblicher Nachteil dieser Technik ist der Mangel an automatischer Bedeutung Failover: Wenn ein Backend-Server ausgeht, wird seine Informationen pro Sitzung unzugänglich, und je nachdem, gehen alle Sitzungen verloren. Das gleiche Problem ist normalerweise für zentrale Datenbankserver relevant. Auch wenn Webserver "staatenlos" und nicht "klebrig" sind, ist die zentrale Datenbank (siehe unten).

Die Zuordnung an einen bestimmten Server kann auf einem Benutzernamen, einer Client -IP -Adresse oder einem zufälligen Client -IP -Adresse basieren. Aufgrund von Änderungen in der wahrgenommenen Adresse des Kunden infolge DHCP, Netzwerkadressübersetzung, und Web -Proxies Diese Methode kann unzuverlässig sein. Zufällige Zuordnungen müssen vom Lastausgleich in Erinnerung bleiben, was eine Belastung für den Speicher erzeugt. Wenn der Lastausgleich ersetzt wird oder fehlschlägt, können diese Informationen verloren gehen, und Zuordnungen müssen möglicherweise nach einer Zeitlimitzeit oder in hohen Lastperioden gelöscht werden, um zu vermeiden, dass der für die Zuordnungstabelle verfügbare Speicherplatz überschreitet. Die Zufallszuweisungsmethode erfordert außerdem, dass Clients einen Zustand beibehalten, was ein Problem sein kann, beispielsweise wenn ein Webbrowser die Speicherung von Cookies deaktiviert hat. Anspruchsvolle Lastbalancer verwenden mehrere Persistenztechniken, um einige der Mängel einer Methode zu vermeiden.

Eine andere Lösung besteht darin, die Daten pro Sitzung in a zu halten Datenbank. Dies ist im Allgemeinen schlecht für die Leistung, da sie die Last in der Datenbank erhöht: Die Datenbank wird am besten verwendet, um Informationen weniger vorübergehend als Daten pro Sitzung zu speichern. Um zu verhindern, dass eine Datenbank a wird der Punkt des Versagensund um zu verbessern SkalierbarkeitDie Datenbank wird häufig über mehrere Maschinen hinweg repliziert, und das Ladungsausgleich wird verwendet, um die Abfragebelastung auf diese Replikate zu verteilen. Microsoft's ASP.NET Die State Server -Technologie ist ein Beispiel für eine Sitzungsdatenbank. Alle Server in einem Webfarm speichern ihre Sitzungsdaten auf dem State Server und jedem Server in der Farm können die Daten abrufen.

In dem sehr verbreiteten Fall, in dem der Client ein Webbrowser ist, besteht ein einfacher, aber effizienter Ansatz darin, die Daten pro Sitzung im Browser selbst zu speichern. Eine Möglichkeit, dies zu erreichen, besteht darin, a zu verwenden Browser -Keks, angemessen zeitgestempelt und verschlüsselt. Ein anderer ist URL -Umschreiben. Das Speichern von Sitzungsdaten auf dem Client ist im Allgemeinen die bevorzugte Lösung: Anschließend kann der Last -Balancer einen beliebigen Backend -Server auswählen, um eine Anforderung zu bearbeiten. Diese Methode der staatlichen Datenbearbeitung eignet sich jedoch schlecht für einige komplexe Geschäftslogikszenarien, in denen die Nutzlast des Sitzungszustands groß ist und die Wiederzahlung mit jeder Anfrage auf einem Server nicht möglich ist. Das Umschreiben von URL hat wichtige Sicherheitsprobleme, da der Endbenutzer die eingereichte URL leicht ändern und somit Sitzungsströme ändern kann.

Eine weitere Lösung zum Speichern anhaltender Daten besteht darin, einen Namen mit jedem Datenblock zu verknüpfen und a zu verwenden verteilte Hash -Tabelle zu pseudo-randomisch zuweisen diesen Namen einem der verfügbaren Server und speichern Sie diesen Datenblock auf dem zugewiesenen Server.

Lastbalancer -Funktionen

Hardware- und Software -Last -Balancer haben möglicherweise eine Vielzahl von besonderen Funktionen. Das grundlegende Merkmal eines Lastausgleichs besteht darin, eingehende Anforderungen auf eine Reihe von Backend -Servern im Cluster gemäß einem Planungsalgorithmus zu verteilen. Die meisten der folgenden Funktionen sind anbieterspezifisch:

Asymmetrische Belastung
Ein Verhältnis kann manuell zugewiesen werden, um einige Backend -Server zu veranlassen, einen größeren Anteil an der Arbeitsbelastung zu erhalten als andere. Dies wird manchmal als grobe Art verwendet, um einige Server zu berücksichtigen, die mehr Kapazität haben als andere und funktionieren möglicherweise nicht immer wie gewünscht.
Prioritätsaktivierung
Wenn die Anzahl der verfügbaren Server unter eine bestimmte Zahl fällt oder die Last zu hoch wird, können Standby -Server online gebracht werden.
TLS -Ausladung und Beschleunigung
TLS (oder seine Vorgänger -SSL) Beschleunigung ist eine Technik, um kryptografische Protokollberechnungen auf spezialisierte Hardware zu laden. Abhängig von der Arbeitsbelastung, verarbeiten Sie die Verschlüsselungs- und Authentifizierungsanforderungen von a Tls Die Anfrage kann ein wesentlicher Bestandteil der Nachfrage in der CPU des Webservers werden. Mit zunehmender Nachfrage werden Benutzer langsamere Reaktionszeiten feststellen, da der TLS -Overhead auf Webservern verteilt wird. Um diese Nachfrage auf Webservern zu entfernen, kann ein Balancer TLS -Verbindungen beenden und HTTPS -Anforderungen als HTTP -Anforderungen an die Webserver weitergeben. Wenn der Balancer selbst nicht überlastet ist, beeinträchtigt dies die von den Endbenutzern wahrgenommene Leistung nicht merklich. Der Nachteil dieses Ansatzes ist, dass die gesamte TLS -Verarbeitung auf ein einzelnes Gerät (den Balancer) konzentriert ist, das zu einem neuen Engpass werden kann. Einige Lastausgleichsgeräte enthalten spezielle Hardware, um TLS zu verarbeiten. Anstatt den Load Balancer zu aktualisieren, der eine ziemlich teure dedizierte Hardware ist, ist es möglicherweise billiger, auf TLS -Offload zu verzichten und ein paar Webserver hinzuzufügen. Einige Serveranbieter wie Oracle/Sun enthalten jetzt kryptografische Beschleunigungshardware in ihre CPUs wie T2000. F5 Networks enthält eine dedizierte TLS -Beschleunigungs -Hardware -Karte in ihren lokalen Traffic Manager (LTM), das zum Verschlingen und Entschlüsseln von TLS -Verkehr verwendet wird. Ein klarer Vorteil für die TLS -Auslagerung im Balancer besteht darin, dass er basierend auf Daten in der HTTPS -Anforderung ausbalancieren oder inhaltsübergreifend wird.
Verteilte Denial -of -Service (DDOS) Angriffsschutz
Lastbalancer können Funktionen wie z. Syn Cookies und verzögerte Bindung (die Back-End-Server sehen den Client erst, wenn er seinen TCP-Handshake beendet hat), um zu mildern Syn -Flut Angriffe und im Allgemeinen arbeiten die Server auf eine effizientere Plattform ab.
HTTP -Komprimierung
Die HTTP -Komprimierung reduziert die Datenmenge, die für HTTP -Objekte übertragen werden soll, indem die in allen modernen Webbrowsern verfügbare GZIP -Komprimierung verwendet wird. Je größer die Antwort und je weiter der Client entfernt ist, desto mehr kann diese Funktion die Reaktionszeiten verbessern. Der Kompromiss besteht darin, dass diese Funktion den Lastausgleich zusätzliche CPU-Nachfrage erhebt und stattdessen von Webservern durchgeführt werden kann.
TCP -Abladung
Dafür verwenden verschiedene Anbieter unterschiedliche Begriffe, aber die Idee ist, dass normalerweise jede HTTP -Anforderung von jedem Client eine andere TCP -Verbindung ist. Diese Funktion verwendet HTTP/1.1, um mehrere HTTP-Anforderungen von mehreren Clients in einen einzelnen TCP-Socket auf die Back-End-Server zu konsolidieren.
TCP -Pufferung
Der Load Balancer kann die Antworten vom Server vom Server pufferen und die Daten auf langsame Clients einlösen, sodass der Webserver einen Thread für andere Aufgaben schneller freigeben kann als wenn er die gesamte Anfrage direkt an den Client senden müsste.
Direkter Serverrückgabe
Eine Option für die asymmetrische Lastverteilung, bei der Anforderung und Antwort unterschiedliche Netzwerkpfade haben.
Gesundheitsprüfung
Die Balancer -Server für Anwendungsschichten Gesundheit und Entfernung fehlgeschlagener Server aus dem Pool.
Http Caching
Der Balancer speichert statische Inhalte, damit einige Anfragen ohne Kontakt mit den Servern behandelt werden können.
Inhaltsfilterung
Einige Balancer können den Verkehr auf dem Weg willkürlich ändern.
HTTP -Sicherheit
Einige Balancer können HTTP -Fehlerseiten ausblenden, Header mit Serveridentifikationen aus HTTP -Antworten entfernen und Cookies verschlüsseln, damit Endbenutzer sie nicht manipulieren können.
Prioritätswarteschlange
Auch bekannt als Ratenformung, die Fähigkeit, unterschiedlichem Verkehr unterschiedliche Prioritäten zu geben.
Inhaltsbewusstes Umschalten
Die meisten Lastbalancer können Anfragen an verschiedene Server senden, basierend auf der angeforderten URL, unter der Annahme, dass die Anforderung nicht verschlüsselt ist (HTTP), oder wenn sie (über HTTPS) verschlüsselt ist, dass die HTTPS -Anforderung am Last -Balancer beendet wird (entschlüsselt).
Client -Authentifizierung
Authentifizieren Sie Benutzer mit einer Vielzahl von Authentifizierungsquellen, bevor sie den Zugriff auf eine Website ermöglichen.
Programmatische Verkehrsmanipulation
Mindestens ein Balancer ermöglicht die Verwendung einer Skriptsprache, um benutzerdefinierte Ausgleichsmethoden, willkürliche Verkehrsmanipulationen und vieles mehr zu ermöglichen.
Firewall
Firewalls können aus Gründen der Netzwerksicherheit direkte Verbindungen zu Backend -Servern verhindern.
Angrifferkennungssystem
Intrusion Prevention Systems bieten neben der von Firewall Security angebotenen Netzwerk-/Transportschicht die Sicherheit der Anwendungsschicht.

Telekommunikation

Lastausgleich kann bei Anwendungen mit redundanten Kommunikationsverbindungen nützlich sein. Beispielsweise kann ein Unternehmen mehrere Internetverbindungen haben, um den Netzwerkzugriff zu gewährleisten, wenn eine der Verbindungen fehlschlägt. EIN Failover Die Anordnung würde bedeuten, dass ein Link für den normalen Gebrauch bestimmt ist, während der zweite Link nur verwendet wird, wenn der primäre Link fehlschlägt.

Mit Lastausgleich können beide Links ständig verwendet werden. Ein Gerät oder Programm überwacht die Verfügbarkeit aller Links und wählt den Pfad zum Senden von Paketen aus. Die Verwendung mehrerer Links erhöht gleichzeitig die verfügbare Bandbreite.

Kürzeste Pfadüberbrückung

TRILLER (Transparente Verbindung vieler Links) erleichtert eine Ethernet eine willkürliche Topologie zu haben und die paarige Strömungslastaufteilung über die Aufteilung des Flusses zu ermöglichen Dijkstra -Algorithmus, ohne Konfiguration und Benutzerintervention. Der Katalysator für Trill war eine Veranstaltung bei Beth Israel Deaconess Medical Center das begann am 13. November 2002.[16][17] Das Konzept der RBridges[18] [sic] wurde erstmals vorgeschlagen Institut für Elektro- und Elektronikingenieure im Jahr 2004,[19] wen im Jahr 2005[20] lehnte ab, was als Trill bekannt wurde, und in den Jahren 2006 bis 2012[21] entwickelte eine inkompatible Variation, die als bekannt ist Kürzeste Pfadüberbrückung.

Der IEEE genehmigte das IEEE 802.1AQ Standard im Mai 2012,[22] Auch als kürzeste Pfadbrückung (SPB) bekannt. SPB ermöglicht es, alle Links auf mehreren günstigen Pfaden zu aktivieren, bietet schnellere Konvergenzzeiten, um Ausfallzeiten zu verringern Maschennetz -Topologien (teilweise verbunden und/oder vollständig verbunden), indem der Datenverkehr über alle Pfade eines Netzwerks laden kann.[23][24] SPB wurde entwickelt, um den menschlichen Fehler während der Konfiguration virtuell zu beseitigen und die Plug-and-Play-Natur zu erhalten, die Ethernet als De-facto-Protokoll in Layer 2 etabliert hat.[25]

Routing 1

Viele Telekommunikationsunternehmen haben mehrere Routen über ihre Netzwerke oder in externe Netzwerke. Sie verwenden ausgefeilte Lastausgleich, um den Verkehr von einem Weg zum anderen zu verändern, um sie zu vermeiden Netzüberlastung auf einer bestimmten Verbindung und manchmal, um die Kosten des Transits in externen Netzwerken zu minimieren oder zu verbessern Netzwerkzuverlässigkeit.

Eine andere Möglichkeit, Lastausgleich zu verwenden, ist in Netzwerküberwachung Aktivitäten. Lastbalancer können verwendet werden, um riesige Datenflüsse in mehrere Unterflüsse aufzuteilen und mehrere Netzwerkanalysatoren zu verwenden, wobei jeweils einen Teil der Originaldaten gelesen wird. Dies ist sehr nützlich für die Überwachung schneller Netzwerke wie 10gbe oder STM64, wobei die komplexe Verarbeitung der Daten bei möglicherweise nicht möglich ist Drahtgeschwindigkeit.[26]

Rechenzentrumsnetzwerke

Lastausgleich wird in großem Umfang verwendet in Rechenzentrum Netzwerke, um den Verkehr auf viele vorhandene Pfade zwischen zwei beliebigen Servern zu verteilen.[27] Es ermöglicht eine effizientere Nutzung der Netzwerkbandbreite und senkt die Bereitstellungskosten. Im Allgemeinen kann das Lastausgleich in Rechenzentrumsnetzwerken entweder als statisch oder dynamisch eingestuft werden.

Der statische Lastausgleich verteilt den Verkehr durch Berechnung eines Hashs der Quell- und Zieladressen und der Portnummern der Verkehrsströme und verwendet, um zu bestimmen, wie Flüsse einem der vorhandenen Pfade zugeordnet werden. Der dynamische Lastausgleich weist den Pfaden Verkehrsströmen zu, indem die Verwendung der Bandbreite auf verschiedenen Pfaden überwacht wird. Dynamische Zuordnungen können auch proaktiv oder reaktiv sein. Im ersteren Fall wird die Zuordnung nach dem Erstellen festgelegt, während im letzteren die Netzwerklogik die verfügbaren Pfade und Verschiebungen durch die Netzwerknutzungsänderungen weiter überwacht (mit Ankunft neuer Ströme oder Fertigstellung vorhandener). Ein umfassender Überblick über das Lastausgleich in Rechenzentrum -Netzwerken wurde zur Verfügung gestellt.[27]

Failover

Lastausgleich wird häufig zur Implementierung verwendet Failover- Die Fortsetzung des Dienstes nach dem Ausfall eines oder mehrerer seiner Komponenten. Die Komponenten werden kontinuierlich überwacht (z. B. können Webserver durch das Abholen bekannter Seiten überwacht werden), und wenn man nicht mehr reagiert, wird der Lastausgleich informiert und sendet keinen Datenverkehr mehr an sie. Wenn eine Komponente wieder online kommt, beginnt der Load Balancer mit dem Umleiten des Datenverkehrs. Damit dies funktioniert, muss es mindestens eine Komponente geben, die über die Kapazität des Dienstes hinausgeht (N+1 Redundanz). Dies kann viel kostengünstiger und flexibler sein als Failover -Ansätze, bei denen jede einzelne Live -Komponente mit einer einzelnen Backup -Komponente gepaart wird, die im Falle eines Fehlers übernimmt (MisserfolgDoppelte modulare Redundanz). Etwas ÜBERFALLEN Systeme können auch nutzen Heißer Ersatz für einen ähnlichen Effekt.[28]

Siehe auch

Verweise

  1. ^ a b Sanders, Peter; Mehlhorn, Kurt; Dietzfelbinger, Martin; Demenz, Roman (11. September 2019). Sequentielle und parallele Algorithmen und Datenstrukturen: Die grundlegende Toolbox. ISBN 978-3-030-25208-3.
  2. ^ Liu, Qi; Cai, Weidong; Jin, Dandan; Shen, Jian; Fu, Zhangjie; Liu, Xiaodong; Linge, Nigel (30. August 2016). "Schätzgenauigkeit zur Ausführungszeit von Laufzeitaufgaben in einer heterogenen verteilten Umgebung". Sensoren. 16 (9): 1386. Bibcode:2016senso..16.1386l. doi:10.3390/s16091386. PMC 5038664. PMID 27589753. S2CID 391429.
  3. ^ Alakeel, Ali (November 2009). "Eine Anleitung zum dynamischen Lastausgleich in verteilten Computersystemen". Internationales Journal für Informatik und Netzwerksicherheit (IJCSNs). 10.
  4. ^ Asghar, Sajjad; Aubanel, Eric; Bremner, David (Oktober 2013). "Eine dynamische, modifizierbare Arbeitsplanung auf dem parallelen Sat Solver". 2013 42. Internationale Konferenz zur parallele Verarbeitung: 110–119. doi:10.1109/ICPP.2013.20. ISBN 978-0-7695-5117-3. S2CID 15124201.
  5. ^ Punetha Sarmila, G.; Gnanambigai, N.; Dinadayalan, P. (2015). "Übersicht über Fehlertolerant - Lastausgleich Algorithmensin Cloud Computing". 2. Internationale Konferenz über Elektronik- und Kommunikationssysteme (ICECs): 1715–1720. doi:10.1109/ecs.2015.7124879. ISBN 978-1-4799-7225-8. S2CID 30175022.
  6. ^ "Nginx und die" Leistung von zwei Auswahlmöglichkeiten "Lastausgleichalgorithmus". nginx.com. 2018-11-12. Archiviert von das Original Am 2019-12-12.
  7. ^ "Test Driving" Power von zwei zufälligen Auswahlmöglichkeiten "Lastausgleich". haproxy.com. 2019-02-15. Archiviert von das Original Am 2019-02-15.
  8. ^ Eifrig, Derek L; Lazowska, Edward D; Zahorjan, John (1. März 1986). "Ein Vergleich der von Empfänger initiierten und von Absender initiierten adaptiven Lastfreigabe". Leistungsbewertung. 6 (1): 53–68. doi:10.1016/0166-5316 (86) 90008-8. ISSN 0166-5316.
  9. ^ Sanders, Peter (1998). "Baumförmige Berechnungen als Modell für parallele Anwendungen". Workshop zum anwendungsbasierten Lastausgleich (ALV '98), München, 25. - 26. Märrz 1998 - Veranstst. Vom sonderforschungsbereich 342 "werktzeuge und methoden für Die Nuttzung Paralleler Regelarchitekturen". Ed.: A. Bode: 123. doi:10.5445/ir/1000074497.
  10. ^ IPv4 -Adressdatensatz (a)
  11. ^ Muster: Client -Seitenlastausgleich
  12. ^ a b c MMOG Server-Seite-Architektur. Front-End-Server und clientseitige zufällige Lastausgleich
  13. ^ "Hohe Verfügbarkeit". LinuxvirtualServer.org. Abgerufen 2013-11-20.
  14. ^ Ranjan, R (2010). "Peer-to-Peer-Cloud-Bereitstellung: Service Discovery und Lastausgleich". Cloud Computing.
  15. ^ a b "Lastausgleich 101: Muttern und Schrauben". F5 -Netzwerke. 2017-12-05. Archiviert von das Original Am 2017-12-05. Abgerufen 2018-03-23.
  16. ^ "Alle Systeme unten" (PDF). CIO.com. IDG Communications, Inc. archiviert aus das Original (PDF) am 23. September 2020. Abgerufen 9. Januar 2022.
  17. ^ "Alle Systeme unten". CIO.com. IDG Communications, Inc. archiviert aus das Original am 9. Januar 2022. Abgerufen 9. Januar 2022.
  18. ^ "RBridges: transparentes Routing" (PDF). Kurse.cs.Washington.edu. Radia Perlman, Sun Microsystems Laboratories. Archiviert von das Original (PDF) am 9. Januar 2022. Abgerufen 9. Januar 2022.
  19. ^ "RBridges: transparentes Routing". ResearchGate.net. Radia Perlman, Sun Microsystems; Donald Eastlake 3., Motorola.
  20. ^ "Trill Tutorial" (PDF). postel.org. Donald E. Eastlake 3., Huawei.
  21. ^ "IEEE 802.1: 802.1AQ - Kürzeste Pfadüberbrückung". IEEE802.org. Institut für Elektro- und Elektronikingenieure.
  22. ^ Shuang Yu (8. Mai 2012). "IEEE genehmigt neue IEEE 802.1AQ ™ kürzeste Pfadbrückungsstandard". IEEE. Abgerufen 2. Juni 2012.
  23. ^ Peter Ashwood-Smith (24. Februar 2011). "Kürzeste Pfadüberbrückung IEEE 802.1AQ Übersicht" (PDF). Huawei. Archiviert von das Original (PDF) am 15. Mai 2013. Abgerufen 11. Mai 2012.
  24. ^ Jim Duffy (11. Mai 2012). "Das größte Illinois -Gesundheitssystem Illinois Aufbau von Cisco auf den Bau von 40 Millionen US -Dollar für private Cloud". PC -Berater. Abgerufen 11. Mai 2012. Das kürzeste Pfadüberbrückung ersetzt den Spannungsbaum im Ethernet -Stoff.
  25. ^ "IEEE genehmigt neue IEEE 802.1AQ kürzeste Pfadbrückungsstandard". Tech Power -Up. 7. Mai 2012. Abgerufen 11. Mai 2012.
  26. ^ Mohammad NoorMohammadpour, Cauligi S. Raghavendra Minimierung der Durchflussabschlusszeiten mit adaptivem Routing über Weitnetzwerke mit interdatacenter IEEE INFOCOM 2018 Postersitzungen, doi: 10.13140/rg.2.2.36009.90720 6. Januar 2019
  27. ^ a b M. NoorMohammadpour, C. S. Raghavendra, "Datencenterverkehrskontrolle: Techniken und Kompromisse verstehen", " IEEE Kommunikationsumfragen und Tutorials, vol. Pp, nein. 99, S. 1-1.
  28. ^ Failover- und Lastausgleich IBM 6. Januar 2019

Externe Links