Colas
Una cola es un procesador de trabajos que controla el número de instancias de trabajo que pueden ejecutarse a la vez y el retraso entre ejecuciones. Mediante la configuración de colas, puede utilizar los recursos del servidor de forma más eficiente.
Puede crear una cola dentro de un trabajo (cola local) o definir una cola como objeto independiente (cola global). Una cola local procesa únicamente las instancias del trabajo en las que se ha configurado la cola local. Una cola global puede procesar instancias de un trabajo e instancias de trabajos diferentes.
Las colas globales proporcionan un mecanismo flexible para gestionar la carga de un servidor tanto en una sola máquina FlowForce como en un clúster (ver más abajo).
Colas locales y globales en un entorno de clúster (Edición avanzada)
Configurar un clúster significa que el procesamiento se distribuye entre los miembros del clúster: una máquina maestra y una o más máquinas trabajadoras. Para una cola global, puede seleccionar un miembro del clúster en el que se lleve a cabo la ejecución, que puede ser el maestro o cualquier trabajador, sólo el maestro o sólo un trabajador. Con las colas locales, los trabajos sólo pueden ejecutarse en la máquina maestra y no en los demás miembros del clúster.
Aspectos relacionados con la seguridad
Las colas utilizan el mismo mecanismo de acceso de seguridad que cualquier otro objeto de configuración de FlowForce Server. Es decir que un usuario debe tener el privilegio Definir colas de ejecución para poder crear colas (ver Definir usuarios y roles). Además, los usuarios pueden ver colas o asignar trabajos a colas solo si tienen los permisos de contenedor correspondientes (ver ¿Cómo funcionan los permisos?). Por defecto, cualquier usuario autentificado obtiene el permiso Cola: usar, lo que significa que puede asignar trabajos a las colas.
Para restringir el acceso a las colas navegue hasta el contenedor en el que está definida la cola y cambie el permiso del contenedor a Cola: sin acceso para el rol authenticated. A continuación asigne el permiso Cola: usar a los roles o usuarios que quiera. Para más información consulte Restringir el acceso al contenedor /public.
Para obtener información sobre el procesamiento distribuido, consulte Clúster. Para más información sobre la creación de colas independientes y locales, siga leyendo.
Colas locales
Para configurar una cola local, seleccione la opción Definir una cola local en la página de configuración de trabajos y especifique sus preferencias. La imagen siguiente muestra las opciones predeterminadas. Para ver los detalles de las propiedades Tiempo mínimo entre las ejecuciones: y Nº máximo de ejecuciones en paralelo, consulte la sección Configuración de la cola más abajo.
Colas globales
Para crear una cola como objeto independiente, siga estas instrucciones:
1.Abra la página de configuración y navegue hasta el contenedor en el que quiere crear una cola.
2.Haga clic en Crear y después en Crear una cola (imagen siguiente).
3.Introduzca un nombre de cola y, si quiere, una descripción.
4.Configure las opciones que considera relevantes. Para más detalles consulte Configuración de la cola más abajo.
5.Por último, haga clic en Guardar.
Configuración de la cola
A continuación se enumeran las opciones de configuración relacionadas con las colas.
Nombre de la cola | Se trata de un campo obligatorio que representa el nombre de una cola. El nombre sólo puede contener letras, dígitos, espacios simples y los caracteres guion bajo (_), guion (-) y punto (.). No puede empezar ni terminar con un espacio.
|
Descripción de la cola | Descripción opcional.
|
Ejecutar en (Advanced Edition) | Indica cómo se deben ejecutar las instancias de los trabajos de esta cola:
•Maestro o cualquier trabajador: las instancias de trabajo que formen parte de esta cola se ejecutarán en el equipo maestro o en un equipo trabajador disponible, en función de los núcleos de servidor disponibles. •Sólo maestro: las instancias de trabajos se ejecutan solamente en el equipo maestro. •Cualquier trabajador: las instancias de trabajos se ejecutan en cualquier equipo trabajador disponible, pero nunca en el equipo maestro.
|
Tiempo mínimo entre ejecuciones | Una cola ofrece franjas de ejecución. El número de franjas disponibles se rige por la opción máximo de ejecuciones en paralelo multiplicado por el número de trabajadores asignados según la regla activa en ese momento. Cada franja ejecuta instancias de trabajo de forma secuencial.
La opción Tiempo mínimo entre las ejecuciones mantiene una franja marcada como ocupada durante un breve espacio de tiempo después de que haya terminado el trabajo, de forma que no reciba el siguiente trabajo de inmediato. Esta táctica reduce el rendimiento máximo para esta cola de ejecución pero obtiene tiempo de CPU para otras colas de ejecución y otros procesos del mismo equipo.
|
Máximo de ejecuciones en paralelo | Esta opción define el número de franjas de ejecución disponibles en una cola. Cada hueco ejecuta instancias de trabajos de forma secuencial, por lo que esta opción determina cuántas instancias del mismo trabajo se ejecutan en paralelo en la cola actual. Tenga en cuenta que el número de instancias que se ejecuten en paralelo tiene un impacto en los recursos disponibles del equipo. Puede aumentar el valor de esta opción para colas que procesan trabajos ligeros que no realizan operaciones de entrada/salida con una gran carga o para trabajos que no necesiten mucho tiempo de CPU. El valor predeterminado (la instancia 1) se puede usar para colas que procesan trabajos que requieren un uso intensivo de los recursos, lo que permite asegurarse de que sólo se procesa uno de esos trabajos pesados cada vez.
Esta opción no afecta al número máximo de solicitudes HTTP paralelas aceptadas por FlowForce Server (por ejemplo, solicitudes HTTP de clientes que invocan trabajos configurados como servicios web). Para más detalles consulte Reconfigurar grupos de hilos en FlowForce Server.
|
Varios conjuntos de configuraciones de cola (Advanced Edition)
Puede definir varios conjuntos de configuraciones de cola, cada una con diferentes requisitos de procesamiento, haciendo clic en el botón . Para cambiar la prioridad de las configuraciones de cola, utilice los botones y . Por ejemplo, puede definir una regla para el caso en que sólo el maestro está disponible y otra regla para el caso en que tanto el maestro como sus trabajadores están disponibles. Esto le permite crear un mecanismo de opciones alternativas para la cola en caso de que un miembro del clúster no esté disponible, por ejemplo.
Al procesar las colas, FlowForce Server supervisa constantemente el estado del clúster y de sus miembros. Si ha definido varias reglas de cola, FlowForce Server las evaluará en el orden definido, de arriba a abajo, y elegirá la primera regla que tenga asignado al menos un miembro del clúster según el la opción Ejecutar en. Para obtener más información sobre cómo operar FlowForce Server en los modos maestro y trabajador, consulte el apartado Clúster.
Ejemplo
Como ejemplo, pensemos en una configuración en la que el clúster incluye un maestro y cuatro equipos trabajadores. La configuración de la cola se define como se muestra a continuación:
Con la configuración ilustrada anteriormente, FlowForce procesaría la cola de la siguiente manera:
•Si todos los trabajadores están disponibles, se aplicará la primera regla. En concreto, pueden ejecutarse simultáneamente hasta 16 instancias de trabajo (4 instancias por trabajador). El tiempo mínimo entre ejecuciones es de 0 segundos.
•Si sólo tres de los trabajadores están disponibles, se seguirá aplicando la primera regla. En concreto, pueden ejecutarse simultáneamente hasta 12 instancias de trabajo y el tiempo mínimo entre ejecuciones es de 0 segundos.
•Si no hay trabajadores disponibles, se aplicará la segunda regla: Sólo puede ejecutarse una instancia en un momento dado y el tiempo mínimo entre ejecuciones es de 5 segundos.
Este tipo de configuración hace que sea posible ejecutar instancias sin trabajadores. Observe que la regla sólo maestro es algo más estricta (sólo una instancia y 5 segundos entre ejecuciones) para no absorber tanta potencia de procesamiento del equipo maestro si fallan todos los trabajadores.
Asignar trabajos a colas
Tras configurar la cola, deberá asignarle un trabajo en la página de configuración de trabajos. Para hacerlo siga estos pasos:
1.Abra la página de configuración del trabajo que desea asignar a la cola.
2.Navegue hasta la configuración de la cola en la parte inferior de la página.
3.Seleccione la opción Seleccionar una cola existente e introduzca la ruta de acceso al objeto de cola correspondiente (imagen siguiente).
Priodidad en una cola (Advanced Edition)
En FlowForce Server Advanced Edition, puede asignar prioridad a los trabajos de una cola. La prioridad se estima en función de todos los trabajos asignados a la cola. La prioridad puede ser baja, inferior a la normal, normal, superior a la normal o alta. La prioridad predeterminada es normal. Puede definir la prioridad para cualquier tipo de desencadenador. Si su trabajo tiene configurados varios desencadenadores, puede seleccionar diferentes valores de prioridad para ellos si lo necesita.
Colas globales
En el caso de las colas globales, es especialmente relevante configurar la prioridad de los desencadenadores. El motivo es que configurando la prioridad puede decidir qué trabajos de una cola son más importantes y deben desencadenarse primero. En la mayoría de los casos, un trabajo solo tendrá un desencadenador. Un trabajo cuyo desencadenador tenga una prioridad más alta y cuyas condiciones para desencadenarse se hayan cumplido será el que se desencadene primero.
Suponiendo que haya varios trabajos en una cola global y que cada trabajo tenga varios desencadenadores de diferente prioridad, FlowForce comprobará primero los desencadenadores de mayor prioridad. Si no se cumplen las condiciones de esos desencadenadores, FlowForce Server pasará a comprobar los desencadenadores de menor prioridad. En el caso de un trabajo con varios desencadenadores, tendría más sentido definir el mismo valor de prioridad para todos los desencadenadores (por ejemplo, prioridad alta si el trabajo es más importante que otros trabajos de la cola).
Colas locales
Una cola local procesa instancias del mismo trabajo. Si solo tiene configurado un desencadenador, se ignorará el valor de prioridad. Si hay varios desencadenadores de diferente prioridad, los desencadenador competirán entre sí. Por ejemplo, imaginemos que tenemos un trabajo con un temporizador y un desencadenador de sistema de archivos. El temporizador tiene una prioridad más baja, mientras que el desencadenador de sistema de archivos tiene una prioridad más alta. Si la condición del temporizador se ha cumplido y no hay archivos que procesar, el temporizador iniciará el trabajo antes que el segundo desencadenador. Sin embargo, si hay varios archivos que procesar, el temporizador esperará y el desencadenador de sistema de archivos tendrá prioridad.