Я в настоящее время исследую худшие варианты развития событий атомарных протоколов фиксации как 2 пк и 3 пк и застреваю в точке, которую я не могу узнать, почему 3 пк могут гарантировать атомарность. Таким образом, как это гарантирует это, если когорта фиксации, когорта B также будет фиксировать?
Вот упрощенный в 3 пк от статьи Wikipedia:
Теперь давайте примем следующий случай:
Результаты:
И там у Вас есть он: Одна когорта фиксировала, другой прервался. Транзакция завинчена.
Таким образом, что я пропускаю здесь? В моем понимании, если автоматическая фиксация на тайм-ауте (в состоянии перед фиксацией) была заменена путем бесконечного ожидания команды координатора, должен хорошо работать тот случай.
Статья, которую вы процитировали, кажется, довольно точно охватывает этот случай: "Главный недостаток этого алгоритма в том, что он не может восстановиться в случае, если сеть сегментирована каким-либо образом". Отмеченный вами случай, когда "А" просто отключается от сети, переводится как "сеть была сегментирована" - т.е. "А" теперь находится в одном сегменте, а "В" и "Координатор" - в другом.
Различные усовершенствованные протоколы 3PC для решения этой проблемы обсуждаются (среди прочих мест) в статье Кемпстера, Стирлинга и Танниша.