Изменения

Перейти к: навигация, поиск

Иерархия ошибок в распределённых системах

291 байт добавлено, 17:53, 3 июня 2019
Нет описания правки
Более сложный отказ может моделировать более простой, т.е. алгоритм, который хорошо работает с более сложным отказом, с более лёгким тоже должен справиться.
# Отсутствие отказов.
# Полный отказ одного или нескольких узлов (crash): узел упал и больше гарантированно никогда не поднимается. Не отвечает на сообщения, не посылает свои. "Воскреснуть" тоже не может. На практике этого можно достичь, если каждому процессу давать в начале случайное число, а при перезапуске его генерировать заново.
# Полный отказ одного или нескольких каналов связи (link failure): сообщения между парой процессов с некоторого момента никогда не доставляются. Можно проэмулировать отказ узла, убрав все ведущие к нему каналы. Тут тонко с алгоритмами, которые требуют что-нибудь для всех живых узлов, но это ладно. (Не)ориентированность не обсуждали.
# Ненадёжная доставка сообщений (omission): сообщения между парой процессов иногда теряются, а иногда доходят. Можно проэмулировать полный отказ канала, сказав, что теряются всегда.
# Византийская ошибка (byzantine failure): есть один или несколько "византийских" процессов, которые могут делать что угодно: игнорировать сообщения, посылать любые сообщения любым процессам, с которыми есть связь (в том числе не соответствующие протоколу). В частности, "византийский" процесс может имитировать процесс, с которым плохая связь.
292
правки

Навигация