カスタム advisor は、サーバー上の負荷を決める Load Balancer 基本コードによって呼び出される小規模な Java コードであり、クラス・ファイルとして提供されます。基本コードは、カスタム advisor のインスタンスの開始と停止、状況と報告書の提供、ヒストリー情報のログ・ファイルへの記録、および advisor の結果の manager コンポーネントへの報告などのあらゆる必要な管理サービスを提供します。
このタスクについて
カスタム advisor は、ネイティブ、すなわち標準 advisor が検索された後に呼び出されます。Load Balancer が
標準 advisor のリストの中で指定の advisor を見つけられなかった場合は、
カスタム advisor のリストを参照します。Load Balancer 基本コードが
カスタム advisor を呼び出すと、以下のステップが発生します。
- Load Balancer 基本コードは、サーバー・マシンとの接続をオープンします。
- ソケットがオープンすると、基本コードは、指定された advisor の GetLoad 関数を呼び出します。
- advisor の GetLoad 関数は、サーバーからの応答の待機などサーバーの状況を評価するためにユーザーが定義したステップを実行します。応答が受信されると、関数は実行を終了します。
- Load Balancer 基本コードは、サーバーとのソケットをクローズして、manager に負荷情報を報告します。カスタム advisor が通常モードで動作したか置換モードで動作したかに
応じて、GetLoad 関数が終了した後で、基本コードが追加計算を行う場合もあります。
カスタム advisor は、通常モードまたは置換モードで Load Balancer と対話するように設計することができます。動作モードの選択は、カスタム advisor ファイルでコンストラクター・メソッドのパラメーターとして指定します。(各 advisor は、その設計に基づいてこれらのモードのいずれかでのみ動作します)
すべての advisor と同様に、カスタム advisor は、ADV_Base という advisor 基本クラスの機能を拡張します。advisor ベースは、advisor の機能のほとんどを実行します。
例えば、manager の重みのアルゴリズムで使用するために、manager に負荷を報告することなどが挙げられます。 また、advisor ベースは、ソケット接続とクローズ操作も実行し、advisor が使用するための send および receive メソッドを提供します。advisor は、調査されているサーバーの指定ポートでのデータの送受信にのみ
使用されます。advisor ベース内部の TCP メソッドに費やした時間が測定され、負荷が計算されます。
必要な場合は、advisor ベースのコンストラクター内のフラグによって、advisor から戻された新しい負荷で既存の負荷が上書きされます。
注: コンストラクターで設定された値に基づいて、advisor ベースは、指定された時間間隔で重みのアルゴリズムに負荷を提供します。advisor が処理を完了していないために
有効な負荷を返すことができない場合、advisor ベースは直前に報告された負荷を使用します。