Protocol de comitere în două faze

arhitectură Comunăedit

în multe cazuri, protocolul 2pc este distribuit într-o rețea de calculatoare. Este ușor de distribuit prin implementarea mai multor componente dedicate 2pc similare între ele, denumite în mod obișnuit manageri de tranzacții (TMs; denumit și agenți 2PC sau monitoare de procesare a tranzacțiilor), care efectuează execuția protocolului pentru fiecare tranzacție (de exemplu, grupul deschis X/Open Xa). Bazele de date implicate într-o tranzacție distribuită, participanții, atât coordonatorul, cât și participanții, se înregistrează pentru a închide TMs (care de obicei locuiesc pe aceleași noduri de rețea ca și participanții) pentru a încheia acea tranzacție folosind 2PC. Fiecare tranzacție distribuită are un set ad hoc de TMs, TMs la care se înregistrează participanții la tranzacție. Un lider, coordonatorul TM, există pentru fiecare tranzacție pentru a coordona 2PC pentru aceasta, de obicei TM a bazei de date a coordonatorului. Cu toate acestea, rolul de coordonator poate fi transferat unui alt Mt din motive de performanță sau fiabilitate. În loc să schimbe mesaje 2PC între ei, participanții schimbă mesajele cu TMs-ul respectiv. TMs-urile relevante comunică între ele pentru a executa schema protocolului 2pc de mai sus, „reprezentând” participanții respectivi, pentru încheierea tranzacției respective. Cu această arhitectură protocolul este complet distribuit (nu are nevoie de nici o componentă centrală de procesare sau structura de date), și scalează cu numărul de noduri de rețea (dimensiunea rețelei) în mod eficient.

această arhitectură comună este, de asemenea, eficientă pentru distribuirea altor protocoale de angajament atomic în afară de 2PC, deoarece toate aceste protocoale utilizează același mecanism de vot și propagarea rezultatelor participanților la protocol.

Protocol optimizationsEdit

cercetarea bazei de date a fost făcută cu privire la modalitățile de a obține cele mai multe dintre beneficiile Protocolului de comitere în două faze, reducând în același timp costurile prin optimizări de protocol și salvarea operațiunilor de protocol sub anumite ipoteze de comportament ale sistemului.

avort prezumat și comitere prezumtivă

avort prezumtiv sau comitere prezumtivă sunt astfel de optimizări comune. O presupunere cu privire la rezultatul tranzacțiilor, fie comite, fie abandona, poate salva atât mesajele și operațiunile de logare de către participanți în timpul executării protocolului 2pc. De exemplu, atunci când se presupune că se anulează, dacă în timpul recuperării sistemului de la eșec nu se găsesc dovezi înregistrate pentru comiterea unei tranzacții prin procedura de recuperare, atunci se presupune că tranzacția a fost anulată și acționează în consecință. Aceasta înseamnă că nu contează dacă avorturile sunt înregistrate deloc și o astfel de înregistrare poate fi salvată sub această ipoteză. De obicei, o penalizare a operațiunilor suplimentare este plătită în timpul recuperării după eșec, în funcție de tipul de optimizare. Astfel, cea mai bună variantă de optimizare, dacă există, este aleasă în funcție de statisticile privind eșecul și rezultatul tranzacțiilor.

protocol de comitere în două faze a arborelui

Protocolul Tree 2pc (numit și 2pc imbricat sau 2pc recursiv) este o variantă comună a 2PC într-o rețea de calculatoare, care utilizează mai bine infrastructura de comunicații subiacentă. Participanții la o tranzacție distribuită sunt de obicei invocați într-o ordine care definește o structură arborescentă, arborele de invocare, unde participanții sunt nodurile și marginile sunt invocațiile (legături de comunicare). Același arbore este utilizat în mod obișnuit pentru a finaliza tranzacția printr-un protocol 2pc, dar, de asemenea, un alt arbore de comunicare poate fi utilizat pentru aceasta, în principiu. Într-un copac 2pc coordonatorul este considerat rădăcina („partea de sus”) a unui arbore de comunicare (copac inversat), în timp ce participanții sunt celelalte noduri. Coordonatorul poate fi nodul care a generat tranzacția (invocat recursiv (tranzitiv) ceilalți participanți), dar și un alt nod din același arbore poate lua rolul de coordonator. Mesajele 2pc de la coordonator sunt propagate „în jos „arborele, în timp ce mesajele către coordonator sunt” colectate „de către un participant de la toți participanții de sub el, înainte de a trimite mesajul corespunzător” în sus „arborele (cu excepția unui mesaj de avort, care este propagat” în sus ” imediat după primirea acestuia sau dacă participantul actual inițiază avortul).

protocolul dynamic two-phase commit (angajament dinamic în două faze, D2PC) este o variantă a arborelui 2pc fără coordonator predeterminat. Acesta subsumează mai multe optimizări care au fost propuse mai devreme. Mesajele de acord (da voturi) încep să se propage din toate frunzele, fiecare frunză la finalizarea sarcinilor sale în numele tranzacției (devenind gata). Un nod intermediar (fără frunze) trimite gata atunci când un mesaj de acord către ultimul nod vecin (unic) de la care mesajul de acord nu a fost încă primit. Coordonatorul este determinat dinamic prin mesaje de acord de curse peste arborele tranzacției, la locul unde se ciocnesc. Ei se ciocnesc fie la un nod copac tranzacție, pentru a fi coordonator, sau pe o margine de copac. În ultimul caz, unul dintre cele două noduri edge este ales coordonator (orice nod). D2PC este timpul optim (dintre toate instanțele unui arbore de tranzacție specific și orice implementare specifică a protocolului Tree 2pc; toate instanțele au același arbore; fiecare instanță are un nod diferit ca coordonator): Prin alegerea unui coordonator optim, D2PC angajează atât coordonatorul, cât și fiecare participant în timp minim posibil, permițând eliberarea cât mai rapidă a resurselor blocate în fiecare participant la tranzacție (nod arbore).

Lasă un răspuns

Adresa ta de email nu va fi publicată.