Выберите узел в кластере Quartz для выполнения задания - PullRequest
12 голосов
/ 31 января 2011

У меня есть несколько вопросов о кластеризации кварца, в частности о том, как запускаются триггеры / задания запускаются внутри кластера.

  1. Придает ли кварц предпочтение узлам при выполнении заданий? Например, всегда или никогда узел, который выполнил одно и то же задание в последний раз, или это просто тот узел, который первым получит задание?

  2. Можно ли указать узел, который должен выполнять задание?

Ответы [ 2 ]

10 голосов
/ 31 января 2011

Ответом на это будет что-то вроде «это зависит».

Для кварца 1.x ответ заключается в том, что выполнение задания всегда (только) выполняется более или менее более или менее.случайный узел.Где «случайность» действительно основана на том, какой узел дойдет до него первым.Для «занятых» планировщиков (где всегда много заданий для выполнения) это приводит к довольно сбалансированной нагрузке на узлы кластера.Для незанятого планировщика (только случайное задание) иногда может показаться, что один узел запускает все задания (потому что планировщик ищет следующее задание для запуска при завершении выполнения задания, поэтому узел просто завершает выполнениестремится найти следующую работу для выполнения).

С кварцем 2.0 (который находится в бета-версии) ответ такой же, как и выше, для стандартного кварца.Но ребята из Terracotta создали Enterprise Edition своего TerracottaJobStore, который предлагает более сложное управление кластеризацией - когда вы планируете задания, вы можете указать, какие узлы кластера являются допустимыми для выполнения задания, или вы можете указать характеристики / реквизиты узлов, например,как «узел с ОЗУ не менее 100 МБ».Это также работает вместе с ehcache, так что вы можете указать задание для запуска «на узле, где данные, обозначенные X, являются локальными».

0 голосов
/ 03 июля 2013

Я решил этот вопрос для своего веб-приложения, используя Spring + AOP + memcached.Мои работы знают по данным, которые они просматривают, если задание уже выполнено, поэтому единственное, чего мне нужно избегать, - это два или более узлов, работающих одновременно.

Вы можете прочитать это здесь:

http://blog.oio.de/2013/07/03/cluster-job-synchronization-with-spring-aop-and-memcached/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...