Ein angepasster Advisor ist ein als Klassendatei bereitgestellter kurzer Java-Code, der vom Load-Balancer-Basiscode aufgerufen wird, um die Last eines Servers zu bestimmen. Der Basiscode stellt alle erforderlichen Verwaltungsdienste bereit, z. B. das Starten und Stoppen
einer Instanz des angepassten Advisors, das Bereitstellen von Status und Berichten, das
Aufzeichnen von Protokolldaten in einer Protokolldatei sowie das Berichten der Advisorergebnisse
an die Managerkomponente.
Informationen zu dieser Task
Angepasste Advisor
werden aufgerufen, nachdem native oder Standardadvisor gesucht wurden.
Wenn Load Balancer einen
angegebenen Advisor nicht in der Liste der Standardadvisor
findet, verwendet er die Liste der
angepassten Advisor.
Wenn der Load-Balancer-Basiscode einen angepassten Advisor aufruft, geschieht Folgendes:
- Der Load-Balancer-Basiscode öffnet eine Verbindung zur Servermaschine.
- Wenn der Socket geöffnet wird, ruft der Basiscode die Funktion
GetLoad des angegebenen Advisors auf.
- Die Funktion GetLoad des Advisors führt die Schritte aus, die
der Benutzer für die Auswertung des Serverstatus definiert hat. Sie wartet unter anderem auch auf eine Antwort des Servers.
Die Funktion wird nach dem Empfang der Antwort beendet.
- Anschließend schließt der Load-Balancer-Basiscode den Socket zum Server und übergibt die
Lastinformationen an den Manager. Abhängig davon, ob der angepasste Advisor im normalen Modus oder im Ersetzungsmodus
ausgeführt wird, führt der Basiscode manchmal nach Beendigung der Funktion GetLoad zusätzliche Berechnungen durch.
Angepasste Advisor können so gestaltet werden,
dass sie entweder im normalen Modus oder im Ersetzungsmodus mit Load Balancer interagieren.
Die Auswahl der Betriebsart
wird in der Datei des angepassten Advisors als Parameter der
Konstruktormethode angegeben. (Jeder Advisor wird basierend auf seinem Design
nur in einem dieser Modi ausgeführt.)
- Im normalen Modus tauscht der angepasste Advisor Daten mit dem
Server aus. Der Basiscode des Advisors misst die Zeit für den Austausch und berechnet den
Lastwert.
Der Basiscode übergibt dann diesen Lastwert an den Manager. Der angepasste Advisor gibt den Wert null für
Erfolg oder einen negativen Wert für einen Fehler zurück.
Zur Angabe
des normalen Modus müssen Sie das Flag "replace" der Methode "constructor"
auf "false" setzen.
- Im Ersetzungsmodus führt der Basiscode keine Zeitmessungen aus.
Der angepasste Advisorcode führt alle angegebenen, für den Advisor spezifischen Anforderungen
aus und gibt dann einen tatsächlichen Lastwert zurück. Der Basiscode akzeptiert den Lastwert
und meldet diesen unverändert an den Manager.
Um bestmögliche Ergebnisse zu erzielen,
sollten Sie die Lastwerte zwischen 10 und 1000 normalisieren, wobei
10 einen schnellen Server und 1000 einen langsamen Server angibt.
Zur Angabe
des Ersetzungsmodus müssen Sie das Flag "replace" der Methode
"constructor" auf "true" setzen.
Wie alle Advisor erweitert auch ein angepasster Advisor die Funktionalität der
Advisorbasisklasse ADV_Base. Der Advisorbasiscode führt die meisten Funktionen des Advisors aus. So berichtet
er beispielsweise Lastwerte an den Manager zurück, die im Wertigkeitsalgorithmus des Managers verwendet werden.
Darüber hinaus stellt der Advisorbasiscode
Socket-Verbindungen her, schließt Sockets und stellt Sende- und
Empfangsmethoden für den Advisor bereit. Der Advisor wird nur zum Senden von Daten an den Port
bzw. zum Empfangen von Daten vom Port des überprüften Servers verwendet.
Die im Advisorbasiscode bereitgestellten TCP-Methoden sind zeitlich gesteuert, um die
Last zu berechnen. Mit einem Flag der Methode constructor des Advisorbasiscodes
kann bei Bedarf die vorhandene Last mit der neuen, vom Advisor zurückgegebenen Last überschrieben
werden.
Anmerkung: Der Advisorbasiscode stellt in angegebenen Intervallen
die Last ausgehend von einem in der Methode constructor festgelegten Wert
für den Wertigkeitsalgorithmus bereit. Wenn der Advisor ihre Verarbeitung noch nicht abgeschlossen hat und keinen
gültigen Lastwert zurückgeben kann, verwendet der Advisorbasiscode den zuvor berichteten Lastwert.