Как двухфазные фиксации предотвращают отказ в последнюю секунду?

63
задан 4 revs, 3 users 68% 28 October 2008 в 18:48
поделиться

5 ответов

Суммирование общих ответов:

  1. нельзя использовать нормальные базы данных с распределенными транзакциями. База данных должна явно поддерживать координатора транзакции.

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

22
ответ дан Oliv 7 November 2019 в 12:45
поделиться

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

, поскольку узел ответил положительно в "подготовить" фазе, он требуется, чтобы быть в состоянии "фиксировать", даже когда он возвращается из катастрофического отказа.

37
ответ дан Jason Kresowaty 7 November 2019 в 12:45
поделиться

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

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

17
ответ дан Jonathan Leffler 7 November 2019 в 12:45
поделиться

Существует много способов приняться за решение проблем с двухфазной фиксацией. Почти все они завершают как некоторый вариант Паксоса трехфазный алгоритм фиксации. Mike Burrows, который разработал Полный сервис блокировки в Google, который основан на Паксосе, сказал, что существует два типа распределенных алгоритмов фиксации - "Паксос и неправильные" - в лекции, которую я видел.

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

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

при использовании системы кворума для чтений базы данных несоответствие будет замаскировано (и сообщено самой базе данных).

7
ответ дан HenryR 7 November 2019 в 12:45
поделиться

Двухфазная фиксация не является надежной и просто разработана для работы в 99% случаев времени.

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

http://en.wikipedia.org/wiki/Two-phase_commit_protocol

11
ответ дан reno 7 November 2019 в 12:45
поделиться
Другие вопросы по тегам:

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