O documento descreve algoritmos de eleição para sistemas distribuídos, incluindo o algoritmo do ditador, onde o processo com maior ID se torna coordenador, e variações do algoritmo em anel, onde uma mensagem circular o anel para eleger o processo com maior ID.
1. Sistemas Distribuídos II
Parte 04
Eleição
Conteúdo adaptado a partir do material do professor Edmar Rezende (PUC-Campinas)
2. 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 –
3. 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 –
4. 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 –
5. 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 –
6. 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 –
7. Algorítmo do Ditador (cont.)
• O algoritmo exige que cada processo conheça os IDs dos
demais processos
– 7 –
8. 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 –
9. 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 –
10. 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 –
12. 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 –