Как Трехфазное может Фиксировать атомарность гарантии Протокола (3PC)?

Я в настоящее время исследую худшие варианты развития событий атомарных протоколов фиксации как 2 пк и 3 пк и застреваю в точке, которую я не могу узнать, почему 3 пк могут гарантировать атомарность. Таким образом, как это гарантирует это, если когорта фиксации, когорта B также будет фиксировать?

Вот упрощенный в 3 пк от статьи Wikipedia:

3PC commit protocol as depicted on English Wikipedia

Теперь давайте примем следующий случай:

  1. Две когорты участвуют в транзакции (A и B)
  2. Оба делают их работу, затем голосуют за фиксацию
  3. Координатор теперь отправляет сообщения перед фиксацией...
    • Получение сообщения перед фиксацией, подтверждает и затем идет офлайн в течение долгого времени
    • B не получает сообщение перед фиксацией (независимо от того, что причина могла бы быть), и находится таким образом все еще в "неопределенном" состоянии

Результаты:

  • Координатор прерывает транзакцию, потому что не все сообщения перед фиксацией были отправлены и подтверждены успешно
  • A, то, кто находится в состоянии перед фиксацией, все еще в режиме офлайн, таким образом приводит к таймауту и фиксирует
  • B прерывается в любом случае: Он любой пребывание офлайн и испытывает таймаут (аварийное прекращение работы причин) или происходит онлайн и получает команду аварийного прекращения работы от координатора

И там у Вас есть он: Одна когорта фиксировала, другой прервался. Транзакция завинчена.

Таким образом, что я пропускаю здесь? В моем понимании, если автоматическая фиксация на тайм-ауте (в состоянии перед фиксацией) была заменена путем бесконечного ожидания команды координатора, должен хорошо работать тот случай.

7
задан Community 8 February 2017 в 14:24
поделиться

1 ответ

Статья, которую вы процитировали, кажется, довольно точно охватывает этот случай: "Главный недостаток этого алгоритма в том, что он не может восстановиться в случае, если сеть сегментирована каким-либо образом". Отмеченный вами случай, когда "А" просто отключается от сети, переводится как "сеть была сегментирована" - т.е. "А" теперь находится в одном сегменте, а "В" и "Координатор" - в другом.

Различные усовершенствованные протоколы 3PC для решения этой проблемы обсуждаются (среди прочих мест) в статье Кемпстера, Стирлинга и Танниша.

8
ответ дан 7 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: