2 Phase Commit — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «'''Алгоритм двухфазного коммита''' — классический централизованный оптимистичный алгори…»)
 
Строка 5: Строка 5:
 
Алгоритм работает в две фазы:
 
Алгоритм работает в две фазы:
  
1. '''Запрос (request)''': координатор спрашивает каждого участника: "готов ли ты ''очень быстро'' завершить транзакцию?". Если кто-нибудь ответил "нет", то отменяем транзакцию. Если кто-то отвечает "да", то он должен уметь обеспечить завершение транзакции даже если упадёт и поднимается (например, все данные уже в журнале).
+
# '''Запрос (request)''': координатор спрашивает каждого участника: "готов ли ты ''очень быстро'' завершить транзакцию?". Если кто-нибудь ответил "нет", то отменяем транзакцию. Если кто-то отвечает "да", то он должен уметь обеспечить завершение транзакции даже если упадёт и поднимается (например, все данные уже в журнале).
2. '''Завершение''': координатор принимает решение о закреплении (commit) или отмене (rollback) транзакции и записывает его в свою надёжную память, после чего рассылает всем решение. После этого можно сообщить о фиксации транзакции.
+
# '''Завершение''': координатор принимает решение о закреплении (commit) или отмене (rollback) транзакции и записывает его в свою надёжную память, после чего рассылает всем решение. После этого можно сообщить о фиксации транзакции.
  
 
== Ограничения ==
 
== Ограничения ==

Версия 20:49, 3 июня 2019

Алгоритм двухфазного коммита — классический централизованный оптимистичный алгоритм распределённого консенсуса из баз данных для подтверждения распределённых транзакций.

После того, как мы завершили транзакцию, её надо атомарно подтвердить на всех участниках. У каждой транзакции есть выделенный координатор (transaction coordinator). Алгоритм работает в две фазы:

  1. Запрос (request): координатор спрашивает каждого участника: "готов ли ты очень быстро завершить транзакцию?". Если кто-нибудь ответил "нет", то отменяем транзакцию. Если кто-то отвечает "да", то он должен уметь обеспечить завершение транзакции даже если упадёт и поднимается (например, все данные уже в журнале).
  2. Завершение: координатор принимает решение о закреплении (commit) или отмене (rollback) транзакции и записывает его в свою надёжную память, после чего рассылает всем решение. После этого можно сообщить о фиксации транзакции.

Ограничения