Last Verteilung

Die Applikation benötigt Manager, welche für die ganze Installation nur einmal (nur auf einem Server) laufen dürfen. Der Betrieb dieser Manager wird durch die Watchdogs auf den einzelnen Applicationsservern sichergestellt: sie synchronisieren sich via DB und verteilen die Manager unter sich und stellen so sicher, dass immer einer und nur einer läuft. Wenn einzelne Applicationsserver offline gehen, werden die dabei verschwundenen Manager automatisch auf andere Server verteilt.

Weitere Einzelheiten zu Funktionsweise, Technik und Implementation sind in der Entwicklerdokumentation im Abschnitt “Load Balancing” beschrieben.

Überblick

Für eine Anwendung, die auf mehreren Applikationsservern (nachfolgend “Nodes” genannt) verteilt läuft, muss die Last so zwischen den Nodes verteilt werden, dass nicht einzelne Nodes überlastet sind und dadurch das Gesamtsystems ein schlechtes Leistungsverhalten zeigt, während andere Nodes deutlich unterdurchschnittlich belastet sind.

Die Verteilung der Last zwischen den Nodes (Load Balancing) kann durch Verwendung der nachfolgend beschriebenen Funktionalität in der Anwendung erfolgen. Alternativ kann das Load Balancing auch außerhalb der Anwendung erfolgen, z.B. durch die Verwendung von vorgeschalteten Load-Balancing-Switches.

Das in der Applikation implementierte Load Balancing beruht auf folgenden Komponenten und Verfahren:

Der Windows-Client kann statt eines festen Servernamens eine Liste von Servernamen verwenden. Diese Liste wird in der Windows-Registry gespeichert und jeweils bei einer bestehenden Verbindung vom Applikationsserver für den nächsten Start des Clients aktualisiert. Bei Verwendung der Liste von Servernamen wählt der Client beim Start zufällig einen Server aus der Liste aus, um sich zu verbinden. Wenn diese Verbindung nicht erfolgreich aufgebaut werden kann, versucht der Client nacheinander andere Servernamen der Liste, bis ein Verbindungsaufbau erfolgreich ist. Einmal laufende Clientprozesse können nicht zwischen Applikationsservern verschoben werden.

Die Überlastung einzelner Nodes, während andere Nodes erheblich geringer belastet sind, wird verhindert, indem die auf jedem Node laufenden Watchdogprozesse der Applikation im Zusammenspiel dafür sorgen, dass bei Überlastung eines Nodes dieser nach Möglichkeit keine Verbindungen mehr annimmt, während gleichzeitig sichergestellt wird, dass zu jedem Zeitpunkt mindestens ein Node Verbindungen annimmt. Der am geringsten belastete Node nimmt jeweils Verbindungen an, um auch bei Überlastung des Gesamtsystems sicherzustellen, dass noch ein Verbindungsaufbau und das Arbeiten mit der Anwendung möglich ist, auch wenn die Leistung des Systems für einen einzelnen Benutzer dann möglicherweise unbefriedigend wird.

Weitere Einzelheiten zu Funktionsweise, Technik und Implementation sind in der Entwicklerdokumentation im Abschnitt “Load Balancing” beschrieben.