Трехфазное принятие - программирование
Подтвердить что ты не робот

Трехфазное принятие

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

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

4b9b3361

Ответ 1

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

Если ни одна из когорт не находится в состоянии предварительной фиксации, мы можем предположить, что координатор не отправил "фиксацию" в когорту, поэтому никаких побочных эффектов не произошло, и мы можем прервать.

Здесь хорошее объяснение: http://the-paper-trail.org/blog/consensus-protocols-three-phase-commit/