Лучшая стратегия разделения периодических задач на ферме
-
19-09-2019 - |
Вопрос
У меня есть проблема.Предположим, у вас есть периодическая бизнес-задача, например ежемесячное создание баланса.Эта задача может выполняться в ферме, поэтому в случае сбоя компьютера, на котором выполняется периодическая задача, ее необходимо передать на другой компьютер.
Итак, как я могу сохранить периодическую задачу и сделать ее безопасной на ферме?Я думал в постоянной и общей очереди, но совершенно застрял.
Есть идеи?
Заранее спасибо.
Решение
В вашем вопросе не хватает многих факторов.Как вы получаете доступ к задаче?Это веб-сервис?Удаленный вызов процедуры?Запускается ли он сам по себе, а затем сохраняет результаты в общей папке?
Если это просто веб-сервисы, то решением может быть просто запросить их по порядку, если один из них недоступен, перейдите к следующему...вероятно, с rpc можно было бы справиться той же процедурой.Конечно, это не так хорошо масштабируется и носит нестандартный характер, но может сработать, если у вас нет времени ни на что другое.
Если у вас есть время и деньги, необходимые для реального масштабирования, вам следует обратить внимание на реконфигурация управления что является основой той отказоустойчивости, которую вы ищете.Конечно, это будет подразумевать контроллер (надзорные машины, как их называет @jldupont), а также множество механизмов и усилий, чтобы держать все вместе.
Оно того стоит, только если оно вам действительно нужно.Это отличная инвестиция времени и денег, поэтому не делайте это смело только потому, что это круто.
Другие советы
Переход от 1 к >1 всегда является большим шагом.
Опция 1
Вам понадобится (помимо прочего):
- Супервизорные машины
- Протокол сердечного ритма / обнаружение сбоев
- Протокол выборов планировщика заданий
- Планировщик заданий
- Отчет о вакансиях
и т. д.
Вариант 2
Просто попросите несколько машин выполнить задачу и выберите успешный результат на одной из них (или используйте голосование большинством, если вы чувствуете, что вам это нужно).