Двофазна транзакція — патерн проєктування, який дозволяє координувати транзакції здійснені до різних баз даних у вигляді однієї операції.
Проблема
Необхідно виконати декілька транзакцій до різних баз даних у вигляді єдиної операції.
Вирішення
Перевіряти стан кожної транзакцій допоки вони не будуть виконані.
Опис
Фаза підготовки
На цьому етапі вузол-координатор запитує всіх учасників, чи готові вони здійснити транзакцію. Учасники тоді відповідають так або ні.
- Координатор надсилає запит про можливість здійснення транзакції та очікує відповіді від кожного учасника.
- Учасники виконують операцію та зупиняються у точці здійснення транзакції.
- Учасники надсилають координатору повідомлення про можливість здійснити транзакцію або про помилку.
Фаза фіксації
На цьому етапі, якщо всі вузли відповіли про можливість здійснення транзакції, координато попросить їх зафіксуватись, в іншому випадку — скасувати операцію.
Успішне виконання
Якщо координатор отримав повідомлення від всіх вузлів про можливість здійснення транзакції, відбуваються наступні кроки:
- Координатор надсилає запит усім вузлам про здійснення транзакції.
- Усі вузли здійснюють транзакцію.
- Усі вузли надсилають повідомлення про успішність транзакції.
Невдале виконання
Якщо хоч один учасник надіслав повідомлення про неможливість здійснення транзакції (або час очікування координатора сплив):
- Координатор надсилає запит на скасування операції.
- Усі вузли скасовують свої дії.
- Усі вузли надсилають повідомлення про успішність скасування операції.
Недоліки
- Координатор є слабким місцем системи та при його несправності не можливо здійснити транзакції.
- Даний підхід блокує роботу системи. Кожному вузлу доводиться очікувати повідомлення від решти вузлів.
Див.також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Dvofazna tranzakciya patern proyektuvannya yakij dozvolyaye koordinuvati tranzakciyi zdijsneni do riznih baz danih u viglyadi odniyeyi operaciyi ProblemaNeobhidno vikonati dekilka tranzakcij do riznih baz danih u viglyadi yedinoyi operaciyi VirishennyaPereviryati stan kozhnoyi tranzakcij dopoki voni ne budut vikonani OpisDiagrama sho demonstruye vzayemodiyu komponentiv u dvofaznij tranzakciyi Faza pidgotovki Na comu etapi vuzol koordinator zapituye vsih uchasnikiv chi gotovi voni zdijsniti tranzakciyu Uchasniki todi vidpovidayut tak abo ni Koordinator nadsilaye zapit pro mozhlivist zdijsnennya tranzakciyi ta ochikuye vidpovidi vid kozhnogo uchasnika Uchasniki vikonuyut operaciyu ta zupinyayutsya u tochci zdijsnennya tranzakciyi Uchasniki nadsilayut koordinatoru povidomlennya pro mozhlivist zdijsniti tranzakciyu abo pro pomilku Faza fiksaciyi Na comu etapi yaksho vsi vuzli vidpovili pro mozhlivist zdijsnennya tranzakciyi koordinato poprosit yih zafiksuvatis v inshomu vipadku skasuvati operaciyu Uspishne vikonannya Yaksho koordinator otrimav povidomlennya vid vsih vuzliv pro mozhlivist zdijsnennya tranzakciyi vidbuvayutsya nastupni kroki Koordinator nadsilaye zapit usim vuzlam pro zdijsnennya tranzakciyi Usi vuzli zdijsnyuyut tranzakciyu Usi vuzli nadsilayut povidomlennya pro uspishnist tranzakciyi Nevdale vikonannya Yaksho hoch odin uchasnik nadislav povidomlennya pro nemozhlivist zdijsnennya tranzakciyi abo chas ochikuvannya koordinatora spliv Koordinator nadsilaye zapit na skasuvannya operaciyi Usi vuzli skasovuyut svoyi diyi Usi vuzli nadsilayut povidomlennya pro uspishnist skasuvannya operaciyi NedolikiKoordinator ye slabkim miscem sistemi ta pri jogo nespravnosti ne mozhlivo zdijsniti tranzakciyi Danij pidhid blokuye robotu sistemi Kozhnomu vuzlu dovoditsya ochikuvati povidomlennya vid reshti vuzliv Div takozhShabloni proyektuvannya programnogo zabezpechennya