SYSTEM ATLASЗагрузка материала

Задача византийских генералов

Byzantine Generals Problem

Консенсус требуется при произвольном или злонамеренном поведении узлов.

Простыми словами

Например, очередь сообщений повторно доставляет событие после сетевого сбоя, и системе нужно не создать второй бизнес-эффект. Поэтому при проектировании заранее решают, что произойдёт при задержке, повторе запроса или потере связи - иначе редкий сетевой сбой превращается в дубли, противоречивые данные или зависание.

Механизм действия

Сначала проверяют, есть ли исходное условие из определения. Затем смотрят, как оно влияет на структуру компонентов, потоки данных, ограничения и действия участников. Если эту связь не удаётся наблюдать, принцип не стоит использовать как готовое объяснение.

Пример в работе

Нерабочий подход

Решение принимают без учета механизма «Задача византийских генералов», оценивая только ближайший эффект.

Системный подход

Перед изменением проверяют, как «Задача византийских генералов» влияет на ограничения, стимулы, зависимости и вторичные последствия.

Ограничения

«Задача византийских генералов» объясняет только часть происходящего в области «Распределенные системы». Сам принцип не говорит, насколько сильным будет эффект в вашем случае, и не заменяет измерения. При другом масштабе, среде или временном горизонте результат может отличаться.

Источник

Leslie Lamport; Robert Shostak; Marshall Pease. The Byzantine Generals Problem (1982).

Первоисточник