Zatwierdzanie transakcji rozproszonych
Transkrypt
Zatwierdzanie transakcji rozproszonych
Zatwierdzanie ¾ Ogólne zasady zatwierdzania transakcji rozproszonych Zatwierdzanie transakcji rozproszonych T – transakcja rozproszona to transakcja, w której wykonywanie zaangażowanych są węzły S1, S2, …, Sn, n > 1. Przez węzeł rozumiemy bazę danych i związanego z nią menedżera danych MD. K – koordynator, tj. MT (menedżer transakcji), który zarządza wykonywaniem transakcji T. Zanim K wyśle operację commit do S1, …, Sn, musi się upewnić, że MD (menedżer danych) w każdym z tych węzłów jest gotów do zatwierdzenia operacji transakcji T wykonywanych na tym węźle. Nie może być tak, że T zatwierdzona jest na jednym, a odrzucona na innym węźle. W procesie zatwierdzania stosowany jest protokół zatwierdzania dwufazowego (Z2F), ang. Two-Phase Commit (2PC). Tadeusz Pankowski www.put.poznan.pl/~pankowsk T. Pankowski, Zatwierdzanie transakcji T. Pankowski, Zatwierdzanie transakcji 1 Przetwarzanie transakcji Protokół 2PC T Menadżer Transakcji MT Menadżer Transakcji MT Menadżer Transakcji MT Planista Planista Planista Menadżer Danych MD Menadżer Danych MD Menadżer Danych MD Serwer bazy danych (SZBD) Serwer bazy danych (SZBD) Serwer bazy danych (SZBD) S2 • • • S1 – koordynator transakcji T 2 ¾ Protokół 2PC ma dwie fazy: 1. 2. S3 Menadżer transakcji (koordynator) koordynuje wykonywaniem i zatwierdzaniem transakcji. Transakcja jest albo zatwierdzana na każdym węźle, albo odrzucana na każdym węźle. Stosowany jest protokół zatwierdzania dwufazowego (Z2F), ang. TwoPhase Commit (2PC). 3 Faza głosowania – koordynator inicjuje głosowanie dotyczące możliwości zatwierdzenia transakcji przez poszczególnych uczestników, uczestnicy głosują, a koordynator zbiera wyniki tego głosowania. Faza podejmowania decyzji – na podstawie wyniku głosowania koordynator podejmuje decyzję o zatwierdzaniu (COMMIT) lub odrzuceniu (wycofaniu) transakcji (ABORT); decyzję ABORT może podjąć samodzielnie uczestnik, jeśli głosował na NIE lub utracił łączność z koordynatorem i innymi uczestnikami. T. Pankowski, Zatwierdzanie transakcji 4 Protokół 2PC – faza 1 Protokół 2PC – faza 2 2. 1. Faza głosowania: Koordynator wysyła żądanie głosowania do wszystkich uczestników. Głosowanie dotyczy gotowości do zatwierdzania transakcji T. Każdy uczestnik głosuje TAK (gotowy do zatwierdzania) lub NIE (jest przeciw zatwierdzianiu). Koordynator zbiera głosy od wszystkich uczestników • Brak odpowiedzi po upływie założonego czasu TIMEOUT traktowany jest jako głos NIE. T. Pankowski, Zatwierdzanie transakcji Koordynator podejmuje decyzję na podstawie wyniku głosowania. • • 5 1. W różnych punktach protokołu procesy muszą czekać na wiadomość: koordynator od uczestników, uczestnicy od koordynatora. 2. Taka wiadomość może nie nadejść – w ten sposób procesy mogą czekać bez końca. Powodem mogą być: awaria węzła – problem trudny, awaria łącza – można wykorzystać łącze alternatywne. 3. Aby uniknąć niekończących się oczekiwań, stosowany jest mechanizm TIMEOUT (czas przedawnienia, upływu). 4. Po upływie czasu określonego przez TIMEOUT realizowana jest akcja zastępcza TIMEOUT ACTION. 7 Jeśli wszyscy (łącznie z koordynatorem) głosują na TAK, to koordynator podejmuje decyzję o zatwierdzeniu transakcji. Do wszystkich uczestników wysyła polecenie COMMIT. Jeśli co najmniej jeden głos jest na NIE, to koordynator wysyła polecenie ABORT wszystkim uczestnikom głosującym TAK. Ci, którzy głosowali NIE sami podejmują decyzję ABORT. Każdy uczestnik głosujący na TAK czeka na polecenie COMMIT lub ABORT. • • Postępowanie w sytuacjach awaryjnych: TIMEOUT T. Pankowski, Zatwierdzanie transakcji Faza decydowania: Po odbiorze polecenia wykonuje je i kończy pracę. Jeśli w odpowiednim czasie nie uzyska polecenia, wówczas może zainicjować konsultacje z pozostałymi uczestnikami: TERMINATION PROTOKOL. T. Pankowski, Zatwierdzanie transakcji 6 Postępowanie w sytuacjach awaryjnych: protokół konsultacji (TERMINATION PROTOCOL) 1. Przy utracie kontaktu z koordynatorem, gdy nie wiadomo jakie polecenie wysłał koordynator (COMMIT czy ABORT), uczestnik może skontaktować się z dowolnym innym uczestnikiem. 2. Wszyscy uczestnicy otrzymują to samo polecenie, więc zainteresowany uczestnik może przyjąć, że do niego zostało wysłane to samo polecenie, które dotarło do dowolnego innego uczestnika. 3. Aby taka procedura była możliwa, to koordynator musi do każdego uczestnika, wraz z zapytaniem o sposób głosowania, wysłać listę wszystkich uczestników biorących udział w procesie zatwierdzania transakcji. T. Pankowski, Zatwierdzanie transakcji 8 TIMEOUT ACTIONS 1: K wysyła żądanie głosowania U nie doczeka się pytania w czasie określonym przez TIMEOUT. 2: U oczekuje na żądanie głosowania 3: K oczekuje na odpowiedź 4: U oczekuje na decyzję U podejmuje akcję ABORT i STOP K nie doczeka się wszystkich odpowiedzi (TAK, NIE) w czasie określonym przez TIMEOUT. K podejmuje decyzję ABORT i wysyła ją wszystkim głosującym TAK U nie doczeka się decyzji (ABORT, COMMIT) w czasie TIMEOUT, gdy głosował TAK U konsultuje z innym uczestnikiem 9