Консенсус в распределённой системе — различия между версиями
Yeputons (обсуждение | вклад) (Новая страница: «{{Определение |definition= '''Задача консенсуса''': есть N процессов, у каждого есть некие данные…») |
Yeputons (обсуждение | вклад) (→Terminating Reliable Broadcast (TRB)) |
||
Строка 20: | Строка 20: | ||
== Terminating Reliable Broadcast (TRB) == | == Terminating Reliable Broadcast (TRB) == | ||
+ | |||
+ | Отличие TRB от обычного broadcast: часть может получить и обработать, а посылающий упал. | ||
+ | У других нет гарантий про то, получили ли остальные сообщения. |
Версия 11:53, 3 июня 2019
Определение: |
Задача консенсуса: есть N процессов, у каждого есть некие данные — предложение (proposal), они должны выполнить некоторый распределённый алгоритм и прийти к решению (decision). Требуется:
|
Также можно требовать завершение (termination): протокол должен завершиться за конечное время.
Предложение/решение может быть битом, числом, чем-нибудь ещё — это всё друг к другу сводится. Доказательств не было, они очень технические, есть в толстенной книжке Линча. Но нужно примерно понимание, как сводить консенсус на бите к консенсусу на чём-нибудь сложном.
Можно ещё требовать обоснованный консенсус: это когда принятое решение должно совпадать с одним из исходных предложений. Необоснованный консенсус к обоснованному тоже сводится: сначала выбираем лидера (см. ниже), а потом лидер делает обоснованный выбор (если возникают потери сообщений или падения, то всё тухло). Формальное доказательство, опять же, опущено.
Выбор лидера
Terminating Reliable Broadcast (TRB)
Отличие TRB от обычного broadcast: часть может получить и обработать, а посылающий упал. У других нет гарантий про то, получили ли остальные сообщения.