Экспоненциальная задержка в быту и на работе В распределенных системах разного типа довольно часто встречается подход к повтору какого-то действия с экспоненциальной выдержкой. Суть его проста - между повторениями выдерживается пауза, которая увеличивается в геометрической прогрессии, чаще со знаменателем прогрессии равным 2. Например, этот подход часто применяется в коммуникациях между клиентом и сервером: клиент делает запрос к серверу, сервер возвращает ошибку, клиент ждет одну секунду, повторяет запрос, если опять произошла ошибка - ждет 2 секунды и повторяет запрос, потом 4, потом 8, и так далее, пока запрос не завершится успехом. В сетях Ethernet такой же подход используется при коллизии пакетов. Суть подхода простая - дать возможность получить результат быстро в большинстве случаев, но и не перегружать систему в случаях паталогических. Если бы задержка не увеличивалась, то в случаях, когда количество ошибочных запросов по какой-то причине стало больше, вся пропускная способность может уйти просто на повторные ошибочные попытки. Интересно то, что этот подход вполне полезен и в жизни тоже. Например, если определенный коллега или команда начинают занимать слишком много вашего времени, то можно начать выдерживать такие экспоненциально увеличивающиеся паузы. Частый пример - какая-то переписка или чат, где идет обсуждение какой-то темы и все пишут в минуту по сообщению. Имеет смысл перед отправкой следующего сообщения подождать (с каждым разом подольше) и потратить время либо на что-то более важное, либо хотя бы на более глубокую подготовку ответа - возможно, провести какие-то эксперименты или изложить достоинства и недостатки каждого из обсуждаемых подходов и так далее. А бывают и ситуации, когда дискуссия по большому счету просто бесполезная, но завершить вежливым образом ее сложно. Здесь тоже могут пригодиться экспоненциально увеличивающиеся задержки - как говорится, и волки целы, и овцы сыты.
2 года назад