Планировщики Spring в среде с балансировкой нагрузки

У меня есть несколько заданий кварца cron в среде с балансировкой нагрузки. В настоящее время эти задания выполняются на каждом узле, что нежелательно. Я хочу, чтобы узел запускал только определенный планировщик, и если узел выходит из строя, другой узел должен запускать планировщик, предназначенный для отказавшего узла. Как это можно сделать с балансировщиком нагрузки spring 2.5.6/tomcat.


person rabbit    schedule 11.04.2010    source источник


Ответы (1)


Я думаю, что есть несколько аспектов этого вопроса.

Во-первых, у Quartz есть методы API для приостановки и возобновления работы планировщика или даже отдельных триггеров и заданий.

например http://www.jarvana.com/jarvana/view/opensymphony/quartz/1.6.1/quartz-1.6.1-javadoc.jar!/org/quartz/Scheduler.html#standby( )

Я бы создал компонент Spring со ссылкой на планировщик или триггер Quartz и простой логический элемент isMasterNode для хранения состояния. Затем я бы предоставил 2 вызова веб-службы [с ограниченным доступом]: makeMaster и makeSlave, которые вызовут Scheduler.resume() или режим ожидания/паузы соответственно.

Наконец, большой вопрос заключается в том, как и с помощью чего вы определяете, что другой узел «упал».

Если вы используете аппаратный балансировщик нагрузки для управления этим, вы можете настроить его для вызова WS makeMaster на новом «основном» узле, который, в свою очередь, вызывает Scheduler.resume() или аналогичный.

чт

person laher    schedule 11.04.2010