Как классифицировать детектор отказов?

Я понимаю, что детекторы отказов в асинхронных системах в основном классифицируются как (в конечном итоге) совершенные /(в конечном итоге) сильные и как определяются эти классы, но я как бы борюсь за то, чтобы за этим скрылась интуиция.

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

Теперь, как я узнаю, к какому классу относится эта реализация FD? Для этого потребуется формальное доказательство свойств полноты / точности FD? Если идеальный FD может быть реализован, зачем беспокоиться о других (более слабых)? Или классы только "предполагаются" при разработке отказоустойчивых распределенных алгоритмов?

Я немного озадачен этим (как на самом деле классифицировать данный (конкретный) FD). Буду признателен за любые ответы.

1 ответ

Решение

Сначала вам нужно смоделировать синхронизацию процессов и связей между ними; например: "все процессы могут в конечном итоге обмениваться информацией своевременно, сообщения передаются в течение известного периода времени, а процессы выполняют крайние сроки в течение известного периода времени". Определив такую ​​модель, вы можете проанализировать конкретный алгоритм и определить его класс (и доказать это).

Различные классы детекторов отказов полезны для инкапсуляции и абстрагирования от таких базовых допущений при разработке алгоритмов более высокого уровня. Их также можно использовать для определения того, какие проблемы (консенсус, трансляция, избрание слабого лидера и т. Д.) Труднее / легче решить в зависимости от требуемого класса детектора сбоев.

В отличие от того, что указано в вашем вопросе, идеальный FD не может быть реализован ни в одной модели системы. На самом деле, одной из активных областей исследований является нахождение минимальных требований к синхронизации, таких как, например, детектор омега-сбоя (см. Статью "Омега встречает Паксос").

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

Другие вопросы по тегам