sd07 (si) eleição
TRANSCRIPT
Sistemas Distribuídos II
Parte 04Eleição
Conteúdo adaptado a partir do material do professor Edmar Rezende (PUC-Campinas)
Introdução
• Por que sistemas distribuídos precisam de soluções de eleição?
– Muitos algoritmos distribuídos necessitam de um processo coordenador (Exemplo: Algoritmo Centralizado para Exclusão Mútua)
– Grupos igualitários de processos podem necessitar escolher um de seus integrantes para desempenhar determinada tarefa
– 2 –
Introdução
• Objetivo:– Assegurar que todos os processos do sistema saibam quem é o novo
coordenador após a realização de uma eleição
• Requisitos:– Cada processo convoca apenas uma eleição por vez para cada caso,
mas “N” processos podem convocar “N” eleições concorrentes para a mesma coisa
– O processo eleito deve ser único para um objetivo
– Mesmo que várias eleições sejam convocadas concorrentemente para ocupar o “cargo” o resultado de todas deve ser idêntico
– 3 –
Introdução
• Eleições, em geral, possuem as seguintes características:
– Não importa qual processo do sistema será o coordenador, contanto que um deles faça o trabalho
– Cada processo é identificado por um número único
• Este número não precisa ser necessariamente o número de criação do processo, mas sim um identificador único que pode ser gerado a partir de outros critérios (por exemplo: índice de carga computacional)
• O os algoritmos tendem a designar como coordenador o processo com número mais alto (é uma tendência e não uma garantia)
– 4 –
Introdução
• Outras características importantes de eleições:– O resultado da eleição não precisa ser perpétuo
• Um processo pode ser eleito para coordenar determinada exclusão mútua e deixar o posto de coordenador assim que não for mais necessário (isso cria a necessidade de nova eleição)
• Um processo pode ser eleito coordenador e permanecer assim até que deixe de existir
– A entrada de um novo processo no grupo pode ou não ocasionar uma nova eleição• Tudo depende das regras de funcionamento do
grupo– 5 –
Algorítmo do Ditador
• Garcia-Molina (1982)– Também conhecido como “algoritmo bully” ou “algotritmo do valentão”
• Funcionamento do Algoritmo:– Quando um processo “P” nota que não existe um coordenador ou que
o coordenador não está respondendo, o mesmo convoca uma eleição– “P” envia uma mensagem indicativa de ELEIÇÃO a todos os processos
com ID maior que o seu• Se nenhum processo responder: P ganha a eleição, tornando-se o
coordenador (e avisa o grupo)• Se algum dos processos consultados responder: este processo passa a
controlar a eleição e P desiste de se tornar o coordenador
– Quando um processo recebe uma mensagem convocando eleição e possui um ID maior que o remetente, envia de volta uma mensagem de OK em seguida inicia uma eleição
– 6 –
Algorítmo do Ditador (cont.)
• O algoritmo exige que cada processo conheça os IDs dos demais processos
– 7 –
Algoritmo em Anel
• Funcionamento do algoritmo:– Quando um processo desconfia que o coordenador está inativo:
• Monta uma mensagem indicativa de ELEIÇÃO contendo seu próprio ID e envia a mensagem para o vizinho
– Se o vizinho estiver inativo:• O emissor envia a mensagem ao próximo processo ativo no anel
– Cada processo que recebe a mensagem de leição:• Acrescenta seu próprio ID na lista da mensagem
– Quando a mensagem retorna ao processo que a enviou:• O emissor reconhece a mensagem com seu próprio ID• Identifica quem venceu a eleição (o maior id existente na mensagem)• Envia uma mensagem indicando a existência de um novo COORDENADOR para os
demais processos, cuja identificação vai na mensagem
– Quando a mensagem termina de circular:• É descartada (retirada da rede) e todos voltam ao trabalho
– 8 –
Algoritmo em Anel (cont.)
• Chang-Roberts (1979)
• Inspirado no algoritmo de exclusão mútua em anel, mas com as seguintes características:
– Os processos estão logicamente ordenados de alguma maneira para formar o anel
– Não usa o “token” para funcionar e sim uma mensagem que contém os votos
– 9 –
Algoritmo em Anel (cont.)
• Funcionamento:– O grupo se organiza em um anel e cada integrante possui um número
identificador– Quem começa a eleição é o processo que primeiro sentir falta de um
coordenador– Este processo manda uma mensagem ao seu vizinho convocando a eleição e
informa seu ID na mensagem– O vizinho acrescenta seu próprio ID na mensagem e encaminha para o vizinho
seguinte– A mensagem segue circulando no anel até retornar ao processo que iniciou a
eleição– Ao reconhecer seu próprio ID na mensagem, o processo entende que a
mesma já passou por todos os demais integrantes, então este verifica qual o maior ID contido na mensagem e informa aos demais que este é o ID vencedor da eleição
– 10 –
Algoritmo em Anel (cont.)
• Funcionamento:
– 11 –
Algoritmo em Anel (cont.)
• Variação do algoritmo em anel:– A mensagem de eleição passa a transportar apenas um ID (o do candidato
com maior ID até o momento)– Cada processo que recebe a mensagem de eleição compara seu ID com o ID
recebido na mensagem:• Se o ID da mensagem é maior que o ID do processo, então o processo passa a
mensagem para o próximo integrante do anel sem alteração nenhuma• Se o ID da mensagem é menor que o ID do processo, então o processo altera a
mensagem, substituindo o ID da mensagem pelo seu próprio ID (ou seja: o ID anterior perdeu a eleição) e passa a mensagem para o próximo integrante do anel
• Se o ID da mensagem é igual ao ID do processo, então o processo se considera o vencedor da eleição (pois isso significa que sua mensagem percorreu todo o anel e retornou intacta) e passa a mensagem indicando a existência de um novo coordenador para o próximo integrante do anel
– Um processo que está participando de uma eleição não aceita participar de outra para o mesmo “cargo”
– 12 –