Un asesor personalizado es un fragmento pequeño de código Java que se
proporciona como un archivo de clases, al que el código base de Load Balancer
llama para determinar la carga de un servidor. El código base proporciona todos
los servicios administrativos, incluidos iniciar y detener una instancia del asesor
personalizado, proporcionar el estado e informes, anotar la información de historial
en un archivo de anotaciones cronológicas y notificar los resultados del asesor al
componente gestor.
Acerca de esta tarea
Se llama
a los asesores personalizados después de que se han buscado los asesores nativos,
o estándar. Si Load Balancer no encuentra un asesor especificado entre la lista
de asesores estándar, consulta la lista de asesores personalizados. Cuando el
código base de Load Balancer llama al asesor personalizado, suceden los pasos siguientes:
- El código base de Load Balancer abre una conexión con la máquina servidor.
- Si se abre el socket, el código base llama a la función getLoad del asesor personalizado.
- La función GetLoad del asesor efectúa los pasos que el usuario ha definido
para evaluar el estado del servidor, incluida la espera a una respuesta por parte
del servidor. La función termina la ejecución cuando se recibe la respuesta.
- El código base de Load Balancer cierra el socket con el servidor y notifica la
información de carga al gestor. En función de si el asesor personalizado funciona
en modalidad normal o en modalidad de sustitución, el código base a veces
realiza cálculos adicionales después de que termine la función GetLoad.
Los asesores personalizados se pueden diseñar para interactuar con Load Balancer
en modalidad normal o en modalidad de sustitución. La selección de la modalidad de operación se
especifica en el archivo de asesor personalizado como parámetro en el método del constructor. (Cada asesor opera en una de estas modalidades únicamente, según su diseño).
- Modalidad normal: el asesor personalizado intercambia los datos con el servidor
y el código del asesor base cronometra el intercambio y calcula el valor de la carga.
A continuación, el código base informa de este valor de carga al gestor. El
asesor personalizado devuelve el valor cero para indicar el éxito o un valor
negativo para indicar un error.
Para especificar la modalidad normal, establezca el distintivo de sustitución del constructor en false.
- Modalidad de sustitución: el código base no efectúa ninguna medida de temporización.
El
código del asesor personalizado realiza las operaciones que se especifiquen, basándose
en los requisitos exclusivos y, a continuación, devuelve un número de carga real. El
código base acepta el número de carga y lo notifica, sin alterar, al gestor. Para
obtener los mejores resultados, normalice los números de carga entre 10 y 1000, donde
10 representa un servidor rápido y 1000 representa un servidor lento.
Para especificar la modalidad de sustitución,
establezca el distintivo de sustitución del constructor en true.
Como todos los asesores, un asesor personalizado amplía la clase
base del asesor, denominada ADV_Base. La base del asesor efectúa la mayoría de las
funciones del asesor, como informar de las cargas al gestor para que se utilicen
en el algoritmo de peso del gestor. La base del asesor también realiza operaciones de conexión y cierre de sockets, y proporciona métodos de envío y recepción para que el asesor los utilice. El asesor sólo se utiliza para enviar y recibir datos en el puerto especificado del servidor que se está investigando. Para calcular la carga, se calcula la duración de los métodos TCP incluidos en la base del asesor.
Si se desea, un distintivo en el constructor de la base de
asesor sobregraba la carga existente la nueva carga devuelta desde el asesor.
Nota: En función de un valor fijado en el constructor, la base del asesor proporciona la carga al algoritmo de peso a intervalos especificados. Si
el asesor no ha completado el proceso y no puede devolver una carga válida, la base de
asesor utiliza la carga notificada anteriormente.