Почему двухфазная фиксация (2PC) блокируется?

Может ли кто-нибудь сообщить мне, почему 2PC блокируется при сбое координатора? Это потому, что когорты не используют концепцию тайм-аута в 2PC?

Хорошая ссылка: Анализ и проверка двухфазной фиксации и трехфазной фиксации. Phase Commit Protocols, Мухаммад Атиф,


person KGhatak    schedule 01.06.2017    source источник


Ответы (2)


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

Я понимаю, что вы сравниваете 3PC с 2PC. Таким образом, протокол 3PC (как я его понимаю) представляет собой семейство протоколов, где их немного. 3PC решает проблему блокирующего характера 2PC. Суть в том, чтобы последовательно завершать транзакцию (коммит или откат) только со знанием «среды». Ожидается, что будет запущен новый координатор (резервный) (вероятно, выбранный из числа участников) и транзакция может быть завершена. Существует способ включить тайм-ауты, чтобы прервать участника через некоторое время. Даже то, что только что запущенный координатор должен иметь возможность последовательно завершить всю транзакцию (возможно, в этом случае путем отката).

person chalda    schedule 19.06.2017
comment
@ chalda : В случае 2PC, почему когорты не могут прерваться по тайм-ауту? Таким образом, они не будут заблокированы. - person KGhatak; 22.06.2017
comment
@KGhatak да, может, и на практике он используется - спецификация X / Open (XA) учитывается, - но если подготовленная когорта прерывается по тайм-ауту, протокол не может гарантировать атомарный результат. XA использует хорошо известное эвристическое состояние, которое объявляет, что вмешательство человека необходимо, поскольку фиксация завершилась недетерминированным образом. Протокол 3PC ожидает, что произойдет тайм-аут, и должен быть в состоянии обработать его автоматически. - person chalda; 26.06.2017
comment
@ chalda: теперь я понимаю, что теоретически когорта не может применить прерывание / фиксацию по тайм-ауту, поскольку это не гарантирует согласованности (как вы упомянули в своем ответе), и поэтому, когда координатор терпит неудачу, когорты застревают навсегда . По этой причине 2PC помечен как блокирующий. Однако я могу представить, что на практике может потребоваться эвристическое или ручное вмешательство для восстановления. - person KGhatak; 26.06.2017
comment
@KGhatak да, я об этом и говорю. Для дальнейшего чтения, я думаю, это хорошо - microsoft. com/en-us/research/publication/ . Речь идет не о 3PC, а о контексте. - person chalda; 26.06.2017

2PC не всегда блокируется при сбое координатора, система, использующая 2PC, блокируется только при сбое координатора всякий раз, когда кто-либо считывает подготовленный (сомнительный) ресурс.

Если сообщение фиксации (этапа 2) для Участника потеряно, ресурс Участника остается в подготовленном состоянии, он должен обратиться к Координатору, чтобы проверить, в каком именно состоянии находится ресурс. Участник не мог сам определить точное состояние подготовленного ресурса.

person ideawu    schedule 08.12.2020