Eine angepasste Advisor-Funktion 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 bereits, wie z. B. das Starten und Stoppen einer Instanz der angepassten Advisor-Funktion, das Bereitstellen von Status und Berichten, das Aufzeichnen von Protokolldaten in einer Protokolldatei sowie das Berichten der Advisor-Ergebnisse an die Managerkomponente.
Informationen zu dieser Task
Angepasste Advisor-Funktionen
werden aufgerufen, nachdem native oder Standard-Advisor-Funktionen gesucht wurden.
Wenn Load Balancer eine angegebenen Advisor-Funktion nicht in der Liste der Standard-Advisor-Funktionen
findet, verwendet er die Liste der
angepassten Advisor-Funktionen.
Wenn der Load-Balancer-Basiscode eine angepasste Advisor-Funktion aufruft, geschieht Folgendes:
- Der Load-Balancer-Basiscode öffnet eine Verbindung zur Servermaschine.
- Wenn der Socket geöffnet wird, ruft der Basiscode die Funktion
GetLoad der angegebenen Advisor-Funktion auf.
- Die Funktion GetLoad der Advisor-Funktion 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 die angepasste Advisor-Funktion 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-Funktionen 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 der angepassten Advisor-Funktion als Parameter der
Methode "constructor" angegeben. (Eine Advisor-Funktion kann nur in einem dieser Modi ausgeführt werden, der auf seiner Gestaltung basiert.
- Im normalen Modus tauscht die angepasste Advisor-Funktion Daten mit dem
Server aus. Der Basiscode der Advisor-Funktion misst die Zeit für den Austausch und berechnet den
Lastwert.
Der Basiscode übergibt dann diesen Lastwert an den Manager. Die angepasste Advisor-Funktion 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 Advisor-Code führt alle angegebenen, für die Advisor-Funktion spezifischen Anforderungen
aus und gibt dann einen tatsächlichen Lastwert zurück. Der Basiscode akzeptiert den Lastwert
und berichtet 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-Funktion erweitert auch eine angepasste Advisor-Funktion die Funktionalität der
Advisor-Basisklasse ADV_Base. Der Advisor-Basiscode führt die meisten Funktionen der Advisor-Funktion aus. So berichtet
er beispielsweise Lastwerte an den Manager zurück, die im Wertigkeitsalgorithmus des Managers verwendet werden.
Darüber hinaus stellt der Advisor-Basiscode
Socket-Verbindungen her, schließt Sockets und stellt Sende- und
Empfangsmethoden für die Advisor-Funktion bereit. Die Advisor-Funktion wird nur zum Senden von Daten an den Port
bzw. zum Empfangen von Daten vom Port des überprüften Servers verwendet.
Die im Advisor-Basiscode bereitgestellten TCP-Methoden sind zeitlich gesteuert, um die
Last zu berechnen. Mit einem Flag der Methode "constructor" des Advisor-Basiscodes
kann bei Bedarf die vorhandene Last mit der neuen, von der Advisor-Funktion zurückgegebenen Last überschrieben
werden.
Anmerkung:
Der Advisor-Basiscode stellt in angegebenen Intervallen
die Last ausgehend von einem in der Methode "constructor" gesetzten Wert
für den Wertigkeitsalgorithmus bereit. Wenn die Advisor-Funktion ihre Verarbeitung noch nicht abgeschlossen hat und keinen
gültigen Lastwert zurückgeben kann, verwendet der Advisor-Basiscode den zuvor berichteten Lastwert.