Лучшая стратегия для совместного использования периодического задания на ферме

У меня есть проблема здесь. Предположим, у вас есть бизнес-периодическое задание, например, создание баланса каждый месяц. Эта задача может выполняться в ферме, поэтому в случае сбоя компьютера, на котором выполняется периодическая задача, ее необходимо передать на другой компьютер.

Итак, как я могу сохранить периодическое задание и сделать его безопасным на ферме? Я думал в постоянной и общей очереди, но я довольно застрял.

Есть идеи?

Заранее спасибо.

3 ответа

Решение

На ваш вопрос не хватает многих факторов. Как вы получаете доступ к задаче? Это веб-сервис? Удаленный вызов процедуры? Он запускается самостоятельно, а затем сохраняет результаты в общей папке?

Если это просто веб-сервисы, то решением может быть просто запросить их по порядку, если один из них недоступен, тогда переходите к следующему... вероятно, rpc можно было бы просто обработать с помощью той же процедуры. Конечно, это не так хорошо масштабируется, и это немного нерегулярно, но это может помочь, если у вас нет времени на что-то еще.

Если у вас есть время и деньги, необходимые для реального масштабирования, вам следует проверить реконфигурацию, которая является основой для типа отказоустойчивости, который вы ищете. Конечно, это будет означать наличие контроллера (машин контроля, как их называет @jldupont), а также большого количества механизма и усилий, чтобы все было вместе.

Оно того стоит, только если оно тебе действительно нужно. Это отличное вложение времени и денег, поэтому не смело делайте это только потому, что это круто.

Не уверен, каков ваш технологический стек, но взгляните на Quartz (или Quartz.net, если вы используете стек.NET). Quartz - это корпоративный планировщик заданий с надежными возможностями отработки отказа / высокой доступности.

Переход от 1 к>1 всегда большой шаг.

Опция 1

Вам понадобится (среди прочего):

  • Супервизор машин
  • Протокол сердцебиения / обнаружение сбоев
  • Протокол выборов для планировщика заданий
  • Планировщик заданий
  • Отчет о работе

и т.п.

Вариант 2

Просто попросите несколько машин выполнить задание и выберите успешный результат на одном из них (или используйте голосование большинством, если вам это нужно).

Другие вопросы по тегам