You are on page 1of 3

1.

Descrierea problemei In sistemele distribuite, alegerea liderului este procedeul prin care se asigneaza unui singur proces rolul de coordonator pentru procesele vecine ( direct sau indirect ). Aplicatiile unui astfel de algoritm sunt diverse : Lema : Intr-o retea este simetrica ( un inel ) si necunoscuta ( ecare proces isi cunoaste doar IDul propriu ) este imposibil sa alegem un lider prin algoritmi deterministi ( algoritmii deterministi produc mereu aceleasi iesiri pentru un anumit set de date de intrare ) - Angluin (1980) Pentru a sparge simetria, sunt folositi algoritmi ce au la baza metode probabilistice. Un astfel de algoritm este "Itai & Rodeh" 2. Idei de rezolvare Inainte de inceperea procesului de alegere a liderului, ecare masina/proces nu are nici o cunostinta despre vreun lider curent sau cine ar putea ales drept lider in viitor. Pentru a stabili cine va in nal coordonatoul intregului grup de procese/masini, ecare dintre acestea va trebui sa comunice cu celelalte printr-un set de mesaje. 3.Algoritm 3.1 Descriere Algoritmul Itai & Rodeh plecam de la ideea ca avem de ales un lider pe un numar de n procese" algoritmul se desfasoara in faze, iar ecare dintre acestea se desfasoara in n runde. in ecare faza, un numar a de procese ( a < n ) sunt active ( initial toate procesele sunt considerate active). In timpul ecarei faze, ecare dintre acestea ar putea deveni inactive. la inceputul ecarei faze, ecare proces activ decide cu o probabilitate de a^-1 daca va candida pentru a lider. Pentru acesta, alege la intamplare un numar r (0 < r < 1), iar daca r < a^-1 devine candidat si trimite o sonda pentru a traversa inelul. Pentru a calcula numarul de candidati c", ecare proces numara cate sonde au ajuns la el pana isi intalneste propria sonda. (Numarul de probe = numar de candidati ) La sfarsitul fazei, ecare proces cunoaste numar total de candidati. In continuare avem 3 cazuri: 1. c = 1, atunci singurul candidat devine lider; 2. c > 1, o noua faza incepe cu procesele ramase active din faza anterioara; 3. c = 0, se considera ca faza fost inutila, urmand a se incepe una noua; Cand c = 1, se considera ca liderul a fost ales, acesta din urma trimitand un mesaj care sa inconjoare inelul cu scopul de a anunta restul proceselor cine este liderul. 3.2 Pseudocod
toate procesele devin active daca ( proces = activ ) { voteaza daca procesul candideaza la alegerea liderului. daca indeplineste conditia {

trimite ID-ul propriu sa inconjoare inelul; } else { proces = releu; } numara cate sonde primeste pana isi primeste propria sonda daca ( numar de sonde = 1) { procesul devine lider anunta restul proceselor } else { incepe o noua faza cu procesele ramase active; } }

3.3 Exemplu de aplicare depasirea blocajului cauzat de o defectiune ( Ex: alegerea unui nou server pentru buna functionare a unei comunicatii ); excluderea mutuala in sistemele ce au la baza comunicarea prin mesaje; retele mobile ( alegerea unui nou lider cand liderul cunoscut iese in afara retelei ); 3.4 Corectitudine 3.5 Analiza complexit!"ii Din punct de vedere al complexitatii, avem 3 cazuri : cazul cel mai favorabil, in care liderul este ales inca din prima faza. Aceasta este situatia in care prin inel se plimba un numar de n mesaje (n = numarul total de procese). cazul cel mai nefavorabil: algoritmul poate rula la innit daca nu este indeplinita conditia cazul mediu : 2* n (O(2n)) 3.6 Implementare
anexa

3.7 Testare
pentru valori ale pragului sun 0.1, algoritmul ruleaza foarte mult, uneori > 1 minut valoarea optima (conform statisticilor) a pragului este de 0.5;

4. Concluzii

Alegerea liderului este o problema fundamentala in sistemele distribuite deoarece in cazul in care un nod(process) se defecteaza trebuie sa se stabileasca un nou lider intre cele ramase functionale si care sa fie cunoscut de toate procesele. Problema poate fi abordata in multe moduri si pentru topologii diverse. In acest proiect am abordat topologia inel si modalitatea probabilistica de alegere a unui lider.

You might also like