Robert & Jaxor
Robert Robert
Интересно, как бы мы смогли создать отказоустойчивую систему, которая при этом работала бы на пике производительности? Я думаю о вероятностной модели избыточности, которая минимизирует задержки, не жертвуя безопасностью.
Jaxor Jaxor
Конечно, просто добавь еще пару серверов, вкинь немного случайных проверок и называй это "эффективная отказоустойчивость". Если математика сходится, то практически гарантировано, что система будет работать как часы, а тебе не дадут спокойно спать из-за этих логов.
Robert Robert
Получишь большую стабильность, но заплатишь за это огромным увеличением накладных расходов. Цифры могут выглядеть красиво на бумаге, но на практике ты будешь гоняться за теми же ошибками, которые сам и создал. Гораздо умнее сосредоточиться на предсказуемых сценариях восстановления и простых проверках работоспособности, а не просто добавлять всё больше железа.
Jaxor Jaxor
Ты прав, если нагромождать копии, из чистой архитектуры получается цирк бесполезных процессов. Обычно умнее использовать детерминированную цепочку переключения при отказе с краткими, регулярными проверками работоспособности. Только не дай простоте обмануть тебя – не пропустишь тонкие условия гонки. И помни, "легковесный" не всегда равно "низкая задержка".
Robert Robert
Согласен, но будь осторожен с невидимыми разрывами синхронизации состояния; даже лёгкая проверка может пропустить незаметную гонку, если она опирается на устаревшие данные. Делай проверки идемпотентными и логику переключения на резерв stateless.
Jaxor Jaxor
Ты абсолютно прав – устаревшие данные – самый быстрый способ превратить красивый дизайн в ловушку с ошибками. Делай все зонды идемпотентными и логику переключения без состояния; тогда ты будешь бороться только с реальными гонками состояния, а не с призрачными. Помни, даже система без состояния может быть обманута, если источник истины не защищен должным образом. Держи проверки простыми, состояние — чистым, и ты избежишь самой распространенной ошибки.
Robert Robert
Отлично справился – защищай источник истины и делай зонды как можно легче, и тогда избежишь стандартных проблем. Только убедись, что каждое получение блокировки действительно атомарное; даже небольшая задержка может снова вызвать ту же гонку, от которой ты избавляешься.