2 фазы фиксации — сбой на этапе фиксации

В двухфазной фиксации после того, как все компоненты, участвующие в транзакции, проголосовали «Да», координатор транзакции выдает команду «Подтвердить». А затем каждый участник совершает свою транзакцию.

Что произойдет, если кто-то из участников потерпит неудачу на шаге «Зафиксировать»? Хотя этот компонент вышел из строя, другие, возможно, уже зафиксировали свои транзакции. Может ли координатор транзакций выдать команду отката всем участникам, если это произойдет.

Спасибо.


person Eranga Dissanayaka    schedule 22.07.2012    source источник


Ответы (1)


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

Все участвующие системы должны договориться о том или ином способе разрешения ситуации.

1. Автоматическая фиксация. Если координатор явно не вызывает откат (в течение заданного времени), транзакция будет считаться зафиксированной соответствующей участвующей системой.

2. Координатор транзакций повторяет попытку для каждого отказавшего компонента. В случае сбоя сети повторная попытка все еще может работать.

3.Компенсация. После определенного количества попыток координатор транзакции предполагает, что транзакция завершилась в несогласованном состоянии. Затем он может попытаться компенсировать. (примечание: это не обязательно откат, это похоже на действия, которые необходимо предпринять в случае сбоя транзакции).

Теперь подумайте об этом. Компенсация сама по себе не может быть успешной для всех менеджеров ресурсов.

Некоторым бизнес-процессам может потребоваться ручная компенсация! ПОЭТОМУ вам необходимо записывать в журнал, поднимать предупреждения, и может потребоваться ручная компенсация, чтобы вернуть систему в исходное состояние.

person Santanu Dey    schedule 03.12.2012