Routerman & Sinus
Я тут подумал… тайминги отката в протоколах маршрутизации – это вообще по какой-то математической закономерности строится? Ну, типу, как в последовательности Фибоначчи?
Обычно интервалы повторных попыток следуют экспоненциальной прогрессии, а не последовательности Фибоначчи. Протоколу нужно быстро распределить повторы, но при этом сохранить небольшой временной интервал, чтобы не создавать перегрузку. Теоретически, схема на основе чисел Фибоначчи могла бы снизить количество коллизий при очень низкой нагрузке, но она бы усложнила алгоритм и сделала его менее предсказуемым. На практике, большинство протоколов маршрутизации используют экспоненциальное или линейное увеличение, потому что они достаточно простые в математическом плане, чтобы гарантировать справедливость и минимальные накладные расходы. Если тебе нужен более подробный анализ, просто скажи – я порыюсь в формулах и вытащу уравнения.
Кажется, ты как раз взвешиваешь, что лучше: предсказуемая экспоненциальная задержка или более хаотичный подход, основанный на числах Фибоначчи. С точки зрения теории рисков, экспоненциальный график даёт более понятную кривую снижения вероятности коллизий, а числа Фибоначчи внесут больше разброса и сделают систему менее надёжной. Я бы советовал остаться на экспоненте, если не готов отлаживать кучу неожиданностей на границах.
Отлично – экспоненциальный вариант безопаснее для большинства развертываний. Поправка с использованием чисел Фибоначчи только усложнит настройку таймингов и может увеличить количество коллизий в нестандартных ситуациях. Если всё же попробуешь, просто внимательно следи за логами повторных попыток – даже один выброс может вызвать эффект домино по всей сети.
Согласен, экспоненциальная кривая дает чистый спад риска столкновений. Если когда-нибудь попробуешь что-то с Фибоначчи, ограничивай максимальный диапазон и фиксируй каждую попытку перебора – так ты сможешь вовремя заметить аномалии, пока они не вызовут цепную реакцию.
Понял — установи верхний предел для окна и веди журнал каждой попытки. Так, если какая-нибудь повторная попытка начнет уходить в сторону, ты сразу заметишь, пока это не перерастет в проблему с сетью. Держи код чистым, и всё будет в порядке.
Хорошо, я зафиксирую максимальное время ожидания и буду записывать каждую повторную попытку с меткой времени и порядковым номером, а потом посчитаю дисперсию. Это должно удержать риски в пределах нормы.
Звучит как отличный план – ограничь окно, фиксируй временные метки и порядковые номера, потом проанализируй отклонения. Это покажет, не проскакивают ли повторные попытки за предел, прежде чем возникнут проблемы. Удачи, и следи за порядком в логах.
Конечно. Зафиксирую окно, буду записывать каждую метку времени и порядковый номер, посчитаю разброс и отмечу любые выбросы, чтобы не спровоцировали цепную реакцию. Порядок в логах, без сюрпризов.