Должен ли я использовать простую задержку или экспоненциальный откат - PullRequest
0 голосов
/ 09 августа 2011

У меня есть распределенная система, которая в основном выполняет процессы (не процессы ОС, а просто то, что нужно сделать). после нескольких неудачных попыток (тайм-аутов) он сообщает об ошибке.

Я хочу продолжить пытаться выполнить процесс впоследствии в фоновом режиме, и возникает вопрос: должен ли я использовать больший период ожидания? или все большее время ожидания (с каждым разом все больше и больше)

  • Существует множество причин сбоя процесса, в основном проблемы с сетью.

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Зависит от того, что не удалось сделать с первой попытки.

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

Если вы в основном ожидаете, что что-то случится или будет доступно, например, если порт открыт или файл там (в основном "опрашивается"), вы можете просто подождать в течение фиксированных периодов времени.

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

2 голосов
/ 09 августа 2011

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

2 голосов
/ 09 августа 2011

Я думаю, что первый вариант - лучший выбор, потому что если у вас будет больше и больше с каждой попыткой, то если вы начинаете с 1 минуты после 1 часа неудачи, то следующая попытка может быть через 1 день ...! 1-> 2, 2 -> 4, 4 -> 8, 8 -> 16..

Я пойду с первым подходом и определю разумное время ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...