У меня есть несколько заданий кварца cron в среде с балансировкой нагрузки. В настоящее время эти задания выполняются на каждом узле, что нежелательно. Я хочу, чтобы узел запускал только определенный планировщик, и если узел выходит из строя, другой узел должен запускать планировщик, предназначенный для отказавшего узла. Как это можно сделать с балансировщиком нагрузки spring 2.5.6/tomcat.
Планировщики Spring в среде с балансировкой нагрузки
Ответы (1)
Я думаю, что есть несколько аспектов этого вопроса.
Во-первых, у Quartz есть методы API для приостановки и возобновления работы планировщика или даже отдельных триггеров и заданий.
Я бы создал компонент Spring со ссылкой на планировщик или триггер Quartz и простой логический элемент isMasterNode для хранения состояния. Затем я бы предоставил 2 вызова веб-службы [с ограниченным доступом]: makeMaster и makeSlave, которые вызовут Scheduler.resume() или режим ожидания/паузы соответственно.
Наконец, большой вопрос заключается в том, как и с помощью чего вы определяете, что другой узел «упал».
Если вы используете аппаратный балансировщик нагрузки для управления этим, вы можете настроить его для вызова WS makeMaster на новом «основном» узле, который, в свою очередь, вызывает Scheduler.resume() или аналогичный.
чт