Protocol de actualizare în două faze

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În rețele de calculatoare și baze de date, cele două faze de comite protocol (cunoscut sub numele de 2PC - Comiterea în două faze protocol) este un algoritm distribuit , care include toate nodurile dintr - un sistem distribuit pentru validarea unei tranzacții.

Protocolul derivă din toate nodurile care validează tranzacția sau o fac să se anuleze, chiar și în cazul erorilor de rețea sau datorate nodurilor.
Oricum ar fi, pe baza muncii făcute de Skeen și Stonebraker, protocolul nu va gestiona mai multe erori la un moment dat.
Cele două faze ale algoritmului sunt faza cererii de validare, în care coordonatorul se ocupă de pregătirea tuturor grupurilor și solicitarea unei validări, și faza de validare, în care coordonatorul finalizează tranzacția către toate grupurile. Din anii 1980, tehnologia de actualizare în două faze a fost utilizată pentru verificarea automată, monitorizarea validărilor și / sau recuperarea activităților tranzacționale într-un sistem de baze de date distribuite. Tehnologia de actualizare în două faze este utilizată atunci când actualizările de date trebuie să aibă loc simultan în mai multe baze de date dintr-un sistem distribuit. În sistemele de baze de date distribuite, actualizările în două faze sunt concepute pentru a asigura integritatea și acuratețea datelor prin blocarea sincronizată a fiecărei părți a unei tranzacții. Actualizarea în două faze s-a dovedit a fi o soluție atunci când este necesară integritatea datelor într-un sistem distribuit. Tehnologia de actualizare în doi pași este utilizată în principal pentru rezervări de hoteluri și companii aeriene, tranzacții de marfă, tranzacții bancare și pentru carduri de credit.

Ipoteze

Protocolul funcționează după cum urmează: un nod este desemnat ca coordonator , care este site-ul principal, în timp ce restul nodurilor de rețea sunt desemnate ca grupuri . Protocolul presupune că există stocare stabilă la fiecare nod cu un jurnal de scriere înainte, că niciun nod nu este corupt sistematic, că datele din jurnalul de scriere înainte nu sunt niciodată pierdute sau corupte și că fiecare pereche de noduri poate comunica între ele . Această din urmă ipoteză nu este foarte restrictivă, deoarece comunicația în rețea poate fi de obicei deviată. Primele două ipoteze, pe de altă parte, sunt mai puternice, deoarece dacă un nod este distrus în totalitate, datele pot fi pierdute. Protocolul este inițiat de coordonator după ce a fost atins ultimul punct al tranzacției. Grupurile răspund apoi cu un mesaj de acord sau cu un mesaj de avort în funcție de succes.

Faza de pregătire / solicitare

  1. Coordonatorul trimite un mesaj de solicitare de validare tuturor grupurilor.
  2. Grupurile execută tranzacția până la punctul în care a fost solicitată validarea. Fiecare scrie o notă în jurnalul de anulare și una în jurnalul de refacere .
  3. Fiecare grup răspunde cu un mesaj de acord dacă tranzacția a avut succes sau cu un mesaj de avort dacă tranzacția a eșuat.
  4. Coordonatorul se așteaptă să primească un mesaj de la fiecare grup individual.

Faza de validare

Succes

Dacă coordonatorul primește un mesaj de acord de la toate grupurile în timpul fazei cererii de validare:

  1. Coordonatorul trimite un mesaj de validare tuturor grupurilor.
  2. Fiecare grup își finalizează operațiunile și eliberează toate blocurile și resursele aplicate în timpul tranzacției.
  3. Fiecare grup trimite feedback către coordonator.
  4. Coordonatorul finalizează tranzacția în momentul primirii confirmării.

Eșec

Dacă cel puțin un grup trimite un mesaj de avort în timpul fazei cererii de validare:

  1. Coordonatorul trimite fiecărui grup un mesaj de izolare.
  2. Fiecare grup nu finalizează tranzacția folosind jurnalul de anulare și eliberează resursele și blocările aplicate în timpul tranzacției.
  3. Fiecare grup trimite feedback către coordonator.
  4. Coordonatorul finalizează tranzacția în momentul primirii confirmării.

Dezavantaje

Cel mai mare dezavantaj al protocolului de actualizare în două faze este că este un protocol de blocare. Un protocol va fi blocat în timp ce așteaptă un mesaj. Aceasta înseamnă că celelalte procese care concurează pentru resursele blocate aplicate de procesele de blocare vor trebui să aștepte până la eliberarea blocărilor. Nodul unic va continua să aștepte până când celelalte site-uri au eșuat. Dacă coordonatorul eșuează definitiv, unele grupuri nu își vor rezolva niciodată tranzacția. Rezultă că resursele sunt legate pentru totdeauna. Algoritmul poate fi blocat la nesfârșit în felul următor: dacă un grup a trimis un mesaj de acord coordonatorului, acesta va fi blocat până la primirea unei validări sau a unei confinări. Dacă coordonatorul este în permanență defect, grupul va fi blocat pe termen nelimitat, cu excepția cazului în care va primi o decizie globală de validare / avort de la un alt grup. Atunci când coordonatorul trimite „cererea de validare” către grupuri, aceasta va fi blocată până când toate grupurile își vor trimite decizia locală. Mai mult, dacă un grup este permanent defect, coordonatorul nu va fi blocat la nesfârșit: deoarece coordonatorul este singurul care decide dacă decizia este validă sau avortată, blocarea permanentă poate fi evitată prin introducerea unei pauze: dacă coordonatorul nu a primit toate mesajele așteptate la sfârșitul pauzei, va opta pentru avort. Acest comportament conservator din partea protocolului are un alt dezavantaj: este influențat mai mult de cazul avortului decât de cazul finalizării. Multe căutări în baza de date au fost făcute pentru a beneficia de beneficii maxime din protocolul de actualizare în doi pași, fără costuri.

Protocol de actualizare în două faze (copac)

O variantă obișnuită a 2PC într-un sistem distribuit este protocolul Tree 2PC . În această variantă, coordonatorul este rădăcina unui arbore de comunicare, în timp ce grupurile sunt celelalte noduri. Mesajele de la coordonator sunt propagate în arborele „de jos”, în timp ce mesajele către coordonator sunt „colectate” de un grup din toate grupurile de sub acesta, înainte ca acesta să trimită mesajul corespunzător deasupra arborelui. se propagă în sus imediat după primire sau dacă acest grup decide să avorteze).

Protocolul cu două faze de actualizare dinamică (Dynamic two-phase engagement, D2PC) este o variantă de protocol Tree 2PC fără un coordonator predeterminat. D2PC are un timp optim (între instanțele unei tranzacții specifice arborelui și fiecare implementare specifică a protocolului Tree 2PC; toate instanțele au același arbore; fiecare instanță are un nod diferit ca coordonator): angajează coordonatorul și fiecare într-un grup în cel mai scurt timp posibil, permițând scurte eliberări de resurse blocate.

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT