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

StackOverflow https://stackoverflow.com/questions/1887437

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

Есть идеи?

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Опция 1

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

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

и т. д.

Вариант 2

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

Не уверен, какой у вас технологический стек, но взгляните на Кварц (или Кварц.нет если вы используете стек .NET).Quartz — это корпоративный планировщик заданий с надежными возможностями аварийного переключения и высокой доступности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top