Академический Документы
Профессиональный Документы
Культура Документы
Roteiro: Motivao e Principais Requisitos Algoritmos em Anel Algoritmo Bully Algoritmo do Convite Referncias: Livro do Chow/Johnson: seo 10.2 Livro do Colouris/Dollimore/Kindberg: seo 11.3 Livro do Michel Raynal: Distributed Algorithms and Protocols, Wiley & Sons, 1988 (seo 2.5) S. Sight & A. Kurose: Electing good leaders, Journal of Parallel and Distributed Computing Systems, 21: 194-201, 1994.
Markus Endler
Eleio Objetivo: obter um consenso em um grupo de processos sobre a escolha de um nico processo Aplicaes: Em muitos servios (ou aplicaes) distribudos um processo (arbitrrio) exerce um papel diferenciado (coordenador) Quando este falha, o grupo precisa re-eleger um novo coordenador Exemplos: Servidores replicados com com replicao passiva (primary-backup) Um processo sequenciador para comunicao multicast com ordenao total (exemplo: sistema Amoeba)
Markus Endler 2
Principais Requisitos
Definio: Durante uma eleio, cada processo pode estar engajado em uma eleio (participante) ou no (no participante) Safety/Segurana: deve-se garantir a unicidade do elemento escolhido Liveness/Progresso: em algum momento, define-se um coordenador
Considere N processos P1,..,PN, cada um com uma varivel Coord, incialmente indefinida (Coord = undef) As condies acima so formuladas como: Segurana: Um processo participante Pi tem Coord = undef ou Coord = P, onde P um processo correto (no faltoso) ao trmino do algoritmo. Liveness: Todos os processos Pi participam da eleio e em algum momento ou tem Coord undef, ou tero falhado. Geralmente, o problema reduzido ao de encontrar o maior/menor ID no grupo.
Markus Endler
Eleio em uma toplogia de Anel Assuma que cada processo tem um PID [1, MAX] E mensagens s circulam em um sentido
Como detectar o trmino do algoritmo (ter encontrado o manor/maior PID) ? Quantas rodadas so necessrias?
Markus Endler
p4
p1
Processos no falham Comunicao confivel e segura Sistema assncrono Todos os processos possuem PIDs distintos!
6
Complexidade de mensagens por requisio 2 N. No pior caso (todos comeando simultaneamente) O(N2)
7
[HS90] Hirschberg & Sinclair: Decentralized Extrema Finding in Circular Configurations of Processes. Communications of the ACM, 23 (11), Nov. 1980.
Markus Endler
repassam mensagens, ou iniciam nova eleio (caso seu PID > PIDCand)
Markus Endler
O Algoritmo de Hirschberg & Sinclair Exemplo para 7 processos: Algoritmo iniciado pelo P5
P4 P1 P3 P7
False
P5
P2
P0
P4
Os 3 tipos de mensagem: Cand (PID, d, dmax), onde: dmax: distncia mxima (# hops) a serem percorridos d: distnca (#hops) j percorridos pela mensagem Resp (bool, P), onde: Bool = TRUE indica que P permanece candidato P indica o processo ao qual a resposta destinada (o candidato)
10
Markus Endler
Elected(sender)
Left=0
Next[2]={1,0}
Right=1
12
13
A corretude do algoritmo deriva dos seguintes fatos: apenas o processo de maior ID (e.g. P.max) capaz de receber a sua prpria msg Cand. Qualquer outro processo com ID < max ter a sua msg Cand respondida negativamente por P.max. todos os processos ao longo dos caminhos (i-2j, i+2j) iro interferir na eleio (responder negativamente), caso tenham ID maior do que o do candidato
Markus Endler 14
Sugestes...?
p9
p8
p1 p3
p4
Markus Endler
p2
15
O Algoritmo Bully
Garcia-Molina[GM82] props um algoritmo para um sistema sncrono com falhas tipo fail-stop, baseado na difuso de mensagens (conectividade total). O algoritmo faz as seguintes suposies adicionais: Toda mensagem entregue em Tm unidades de tempo aps o seu envio; Todos os processos no falhos respondem a todas as mensagens recebidas em Tp unidades de tempo; Todos os processos tm acesso a uma memria no voltil (p.exemplo: disco local ou Sist. de Arquivos Distribudo NFS) Com as duas primeiras suposies, possvel definir um detector de falhas confivel: se um processo no responde em 2Tm+Tp unidades de tempo, ento tem-se certeza de que o mesmo falhou. A terceira suposio necessria para manter o registro de verses (instncias da eleio) em ordem estritamente crescente.
Markus Endler
[GM82] Garcia-Molina. Elections in a Distributed Computing System, IEEE Trans. On Computers, C-31(2),48-59, 1982.
16
17
grupo
Markus Endler
18
Segurana e Liveness
As propriedades de segurana (safety) e progresso (liveness) do algoritmo so as seguintes: Safety: Seja G um estado global consistente(*). Ento para quaisquer dois pares de processos Pi e Pj as seguintes condies so satisfeitas em G: Se Pi e Pj esto nos estados {Normal,Reorganizing}, ento Pi.Coord = Pj.Coord Se Pi e Pj esto no estado Normal, ento Pi.Definition = Pj.Definition (estados sincronizados) Liveness: Seja G um estado consistente(*). Ento as duas seguintes propriedades estaro satisfeitas em algum estado global de qualquer processamento a partir de G: Existe um Pi tal que Pi.State = Normal && Pi.Coord = Pi Para qualquer processo Pj no-falho, vale Pj.State = Normal && Pj.Coord = Pi
Markus Endler
(*) Uma coleo de estados locais dos processos e canais de comunicao, que de fato, poderia ter ocorrido em uma execuo do sistema.
19
Markus Endler
20
Part A
Part B
crash
Election()
AYNormal AYN_answer
Election()
Election()
AYUp
crash
Timer T
Markus Endler
Election()
21
P3
P2
P1
! P tq. P.ID > P3
C1 EnterElection
& P.State=Normal P tq. (P.ID < P3) : P.Coord P P P.StateNormal P UP: P.State=Reorg. P.Coord=P3 NewState
C2 SetCoord
C3
C4
Markus Endler
22
Procedimentos que iniciam uma Eleio Qualquer processo que deixa de receber msg do coordenador por um certo perodo suspeita de sua falha
Check_Coordinator () { if (State==Normal || State == Reorganizing) { send (coord,AYUp); set timer T; } received(coord, AYU_answer) => set timer T; timeout T => Election(); }
24
...
Markus Endler 25
Markus Endler
26
Thread Monitor
Loop { received(k, M) => { case M == AYUp: send(k,AYU_answer); case M == AYNormal: send(k,state); case M == EnterElection(k): { State = Election; suspend_normal_application processing if (k > self) // defines, in which Election will participate stop_election_procedure (if executing) halted = k; send(k,EE_answer); } case M == Set_Coord(newCoord): { if (State==Election && halted==newCoord) { Coord = newCoord; State = Reorganizing; } send(k, SC_answer); } case M == NewState (NewDefinition) : if (Coord == k && State = Reorganizing) { Definition = newDefinition; // updates state State = Normal; } } // endloop Markus Endler
27
Markus Endler
28
Algoritmo do Convite
Suposies do Modelo: Comunicao segura Falhas do tipo fail-stop Ns guardam o estado em memria persistente (aps se recuperar de uma falha, conseguem recuperar o estado anterior) Processos podem ficar temporariamente isolados uns dos outros (parties na rede) As mudanas de conectividade da rede ocorrem com baixa freqncia Caractersticas: Permite que existam mais de um grupo (com seu coordenador) isolados Mas se houver alguma possibilidade de comunicao entre estes grupos, eles iro se fundir
Markus Endler 29
Algoritmo do Convite
Adaptando as propriedades de segurana e progresso para o algoritmo do convite: Safety: Seja G um estado consistente. Ento para quaisquer dois pares de processos Pi e Pj as seguintes condies so satisfeitas em G: Se Pi e Pj esto nos estados {Normal,Reorganizing} e Pi.Group = Pj.Group, ento Pi.Coord = Pj.Coord Se Pi e Pj esto no estado Normal, e Pi.Group = Pj.Group ento Pi.Definition = Pj.Definition Liveness: Seja R o conjunto mximo de processos mutuamente comunicveis em um estado consistente G. Ento as duas seguintes propriedades sero em algum momento satisfeitas (para qualquer processamento a partir de G), contanto que o conjunto mximo de processos mutuamente comunicveis R permanea igual e no ocorram outras falhas: Existe um Pi R tal que Pi.State = Normal && Pi.Coord = Pi Para todos os processos Pj R no-falhos, vale Pj.State = Normal && Pj.Coord = Pi
Markus Endler 31
32
Funcionamento Bsico
Periodicamente, um coordenador difunde um AYCoord? tentando contactar outros coordenadores, armazena o ID destes na varivel Other e tenta juntar os grupos (procedimento Merge(Other)) atravs de mensagens Invitation. Ao receber uma Invitation de outro coordenador, NC, um coordenador C repassa esta mesagem para os participantes de seu grupo, que respondem diretamente a NC usando msg Accept. O prprio C tambm envia Accept para NC. O NC por sua vez confirma o seu papel de novo coordenador atravs de Accept_answer. Se esta mensagem no chegar a tempo, qualquer processo pode executar recovery(); A seguir, NC envia a mensagem Ready com seu estado Definition para todos os processos da unio dos grupos originais. Principais variveis em cada processo: State // {Normal, Election, Reorganizing} UpSet // conjunto dos membros do prprio grupo Up // conjunto dos membros da unio dos grupos Group // identificao do grupo (par [CoordID,count]) Others // conjunto de outros coordenadores descobertos Markus Endler
33
Execuo da Eleio
Merge(P2)
P4
P3
P2
Invitation P4 Accept
P1
Accept_answer
Up
Ready
Ready_answer
Grupo A
Markus Endler
Grupo B
34
Obs: Se um participante de outro grupo receber msg AYCoord, informa a identidade de seu atual coordenador (em AYC_answer).
Markus Endler
35
Tipos de Mensagem
origem destino AY_Coordinator AYC_answer (bool) AY_There (groupID) AYT_answer (bool) Invitation(newCoord, newGroup) Accept (newGroup) Accept_answer (bool) Ready (newGroup, newDefinition) Coord any Coord Coord Mem Coord Coord Mem C C, C Mem any Coord Coord any Coord any
Markus Endler
36
Markus Endler
37
O procedimento Merge
Merge(CoordSet) { if (Coord == self) && (State = Normal) { State = Election; suspend_processing_application; Counter++; Group = (self Counter); // creates a new group UpSet = Up; Up = ; set timer T1; foreach p (CoordSet UpSet) send(p, Invitation(self,Group)); // replies Accept collected in UP by monitor thread when timeout T1=> { // waits T1 for accept replies State= Reorganizing; Nr_answers=0; set timer T2; foreach p Up send(p, Ready(Group,Definition)); loop { when revd(Ready_answer(sender,inGroup, newGroup) => { if (inGroup==TRUE newGroup==Group) Nr_answers++; when timeout T2 => { // waits T2 for Ready_answers if (Nr_answers < | Up |) Recovery(); else state = Normal; } // endloop } Markus Endler }
38
39
Markus Endler
} } // endloop
O Modelo de Sistema
Markus Endler
41
Concluses sobre o Algoritmo do Convite Por no fazer qualquer suposio sobre o sincronismo do sistema, este algoritmo de utilidade prtica e at mais simples do que o Algoritmo Bully. A corretude do mesmo se baseia na idia de consistncia relativa, que muito usada em sistemas assncronos: aplica-se a exigncia de consistncia (concordncia sobre o Coord e lista de membros) somente para os atuais membros do grupo No h qualquer requisito sobre corretude/consistncia da viso do grupo total. Esta atualizada pela lei do melhor esforo (p.ex. incluso esponnea de novos membros, unificao de grupos quando h descoberta mtua, etc) Por exemplo: se existirem dois grupos a serem juntados, ento somente se no houver outras falhas durante o Merge (incluindo as falhas de comunicao), Markus Endler em algum momento futuro os grupos sero unificados;
42