2011-01-31 17 views
11

Tengo algunas preguntas sobre la agrupación de cuarzo, específicamente sobre cómo los desencadenantes de incendios/trabajos se ejecutan dentro del clúster.Seleccionar el nodo en el clúster de cuarzo para ejecutar un trabajo

  1. ¿El cuarzo le da preferencia a los nodos al ejecutar trabajos? ¿Como siempre o nunca el nodo que ejecutó el mismo trabajo la última vez, o es simplemente el nodo que llega primero al trabajo?

  2. ¿Es posible especificar el nodo que debe ejecutar el trabajo?

Respuesta

9

La respuesta a esto será algo así como "depende".

Para cuarzo 1.x, la respuesta es que la ejecución del trabajo siempre (solo) en un nodo más o menos aleatorio. Donde "aleatoriedad" realmente se basa en cualquier nodo que llegue a ella primero. Para planificadores "ocupados" (donde siempre hay muchos trabajos para ejecutar) esto termina dando una carga bastante equilibrada a través de los nodos del clúster. Para el programador no ocupado (solo un trabajo ocasional para disparar) a veces puede parecer que un solo nodo está ejecutando todos los trabajos (porque el programador busca el siguiente trabajo para disparar cada vez que se completa la ejecución del trabajo, por lo que el nodo acaba de terminar una ejecución tiende a encontrar el próximo trabajo para ejecutar).

Con cuarzo 2.0 (que está en beta) la respuesta es la misma que la anterior, para cuarzo estándar. Pero Terracotta ha creado una Enterprise Edition de TerracottaJobStore que ofrece un control de clústeres más complejo: al programar trabajos, puede especificar qué nodos del clúster son válidos para la ejecución del trabajo, o puede especificar características/requisitos de nodo, tales como como "un nodo con al menos 100 MB de memoria RAM disponible". Esto también funciona junto con ehcache, de modo que puede especificar el trabajo para ejecutar "en el nodo donde los datos introducidos por X son locales".

+0

gracias por la información. – ButterflyCoder

Cuestiones relacionadas