Buscar

ad3-TecnicasBasicas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos Distribuídos
Técnicas Básicas
Antonio Alfredo Ferreira Loureiro
loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro
UFMG/ICEx/DCC 1
loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro
Eleição de Líder
UFMG/ICEx/DCC 2
Eleição de Líder
• Líder:
– Nó ni ∈ N
– ∀nk ∈ N, k 6= i, nk reconhece que ni executa uma tarefa especial
– ni pode ser qualquer nó de N , ou seja, qualquer nó candidato pode as-
sumir o papel de líder
• Problema de eleição de líder:
– Escolher um líder de um conjunto de nós candidatos
UFMG/ICEx/DCC 3
Eleição de líder: Suposições
• Nó ni só conhece sua própria identificação id i
• Não faz sentido no contexto de sistemas anônimos
• Cada identificador é único em G e existe uma ordem total < entre os identifi-
cadores
• Cada identificador pode ser expresso em dlogne bits
• G é um grafo não dirigido
UFMG/ICEx/DCC 4
Eleição de líder: Observações
• Conseqüências de existir uma ordem total < entre os identificadores:
– Permite definir uma estratégia onde o candidato escolhido é aquele com o
menor/maior identificador
– É possível definir uma forma de desempate se outro critério é usado
– Se não houvesse identificadores únicos, poderia haver um deadlock em
função do critério escolhido
UFMG/ICEx/DCC 5
Eleição de líder: Motivação
• Deve haver algum tipo de coordenação centralizada em G e:
– não existe uma solução distribuída, ou
– a solução centralizada tem um desempenho melhor
• Exemplos onde não há uma solução distribuída:
– Processo de recuperação de um sistema depois que G sofre uma falha
(representada genericamente por uma mudança topológica)
– Papel do líder: coordena as funções de alocação e roteamento
• Exemplo onde a solução centralizada tem um desempenho melhor:
– Problemas em grafo como árvore geradora mínima e fluxo máximo em re-
des
UFMG/ICEx/DCC 6
Árvore geradora × Eleição de líder
• Problemas relacionados
• Suposições:
– líder é o nó com o maior identificador
– canais são FIFO
UFMG/ICEx/DCC 7
Árvore geradora × Eleição de líder
• Se existe uma árvore geradora em G, um líder pode ser eleito da seguinte
forma
– Cada nó executa o algoritmo PIF
– se o nó é candidato
então propaga seu identificador
senão propaga uma “msg nula”
– Antes de propagar uma informação de qualquer outro nó, propaga a sua
própria informação
– Um nó, ao receber a realimentação de seus vizinhos, escolhe o líder
• Complexidade:
– Mensagem: O(n2) ou O(n2 logn) bits
– Tempo: O(n)
UFMG/ICEx/DCC 8
Algoritmo baseado em árvore geradora (PIF)
• É possível um nó ni receber inf i de todos os seus vizinhos e não ter recebido
ainda a identificação de um nó candidato?
– Não. Prova por contradição.
– Suponha que exista um nó ni que tenha recebido a confirmação de todos
os seus vizinhos e ainda exista pelo menos uma identificação idk do nó
candidato nk que não foi recebida.
– Para ni ter recebido a realimentação de seus vizinhos, uma onda de propa-
gação para ni deve ter sido iniciada em nk (ou porque nk é um nó folha ou
porque nk recebeu a realimentação de todos os seus vizinhos).
– Não é possível ni ter recebido inf i sem ter recebido infk já que pelo princí-
pio do algoritmo, nk envia primeiro infk antes de enviar inf i.
– Como os canais são FIFO, o nó ni irá receber primeiro infk.
– Logo, não existe um nó nk tal que ni não tenha recebido a sua infk.
UFMG/ICEx/DCC 9
Comentários sobre o algoritmo
• Permite eleger um líder num grafo genérico com arestas FIFO
• Este é o algoritmo A Test Connectivity, onde N0 = {conjunto de nós can-
didatos} e inf i é o idi ou uma mensagem nula, dependendo se o nó é can-
didato ou não, respectivamente
• Complexidade:
– Mensagem: O(nm)
– Tempo: O(n)
UFMG/ICEx/DCC 10
Comentários sobre o algoritmo
• O que acontece se somente os nós candidatos executam o algoritmo PIF?
– Todos os nós candidatos irão saber quem é o líder, pois ao final da exe-
cução, todos os identificadores dos líderes serão conhecidos
– Os nós não candidatos, por sua vez, não sabem se existe algum identifi-
cador não recebido ainda, já que não participam do PIF
– Logo, eles não poderão decidir, com certeza, o líder baseado nos identifi-
cadores recebidos até o momento
Ü Na versão proposta, cada nó, ao final da execução, sabe quem é o líder
Ü A execução, por cada nó, cria uma “barreira de sincronização”
UFMG/ICEx/DCC 11
Comentários sobre o algoritmo
• Como ficam estas complexidades se G tem uma topologia específica?
• Caso 1: G é um Anel
Complexidade:
– Mensagem: O(n2)
UFMG/ICEx/DCC 12
Comentários sobre o algoritmo
• Como ficam estas complexidades se G tem uma topologia específica?
• Caso 2: G é um grafo completo
Complexidade:
– Mensagem: O(n3)
UFMG/ICEx/DCC 13
Estratégia para eleger um líder num grafo completo
• Algoritmo síncrono:
– s = 0, todo nó candidato envia sua identificação para todos os outros nós
– s = 1, cada nó recebe a identificação dos nós candidatos e pode decidir
quem é o líder
• Complexidade:
– Mensagem: O(n2)
– Tempo: O(1) + O(n) (custo para fazer uma pesquisa seqüencial)
• É possível melhorar? Sim
Complexidade:
– Mensagem: O(n logn)
– Tempo: O(logn)
UFMG/ICEx/DCC 14
Estratégia para eleger um líder num grafo completo
• Pulsos pares:
– Um nó candidato tenta “capturar” seus vizinhos enviando uma mensagem
de captura
– A quantidade de mensagens de captura é dependente do pulso
• Pulsos ímpares:
– Nós que receberam mensagens de captura decidem se vão ser capturados
ou não
• A mensagem de captura contém o identificador do nó candidato
UFMG/ICEx/DCC 15
Estratégia para eleger um líder num grafo completo
Número de mensagens envi-
adas em pulsos pares:
Nós (n) 0 2 4 6
2 1
3 1 1
4 1 2
5 1 2 1
6 1 2 2
7 1 2 3
8 1 2 4
9 1 2 4 1
10 1 2 4 2
...
• Por exemplo, numa rede com 10 nós,
um candidato envia primeiro 1, depois
2, depois 4, e finalmente 2 msgs
• O nó candidato só continua enviando
mensagens de captura caso não seja
capturado
UFMG/ICEx/DCC 16
Estratégia para eleger um líder num grafo completo
Número de mensagens envi-
adas em pulsos pares:
Nós (n) 0 2 4 6
2 1
3 1 1
4 1 2
5 1 2 1
6 1 2 2
7 1 2 3
8 1 2 4
9 1 2 4 1
10 1 2 4 2
...
• O último pulso ímpar é 2dlogne − 1,
onde os nós que receberam msgs (do
pulso anterior) enviam ou não acks
• O último pulso par é 2dlogne, onde os
acks são contabilizados, mas
nenhuma outra msg é enviada
• Exemplo: n = 10
– dlog 10e = 4
– Último pulso ímpar = 7
– Último pulso par = 8
UFMG/ICEx/DCC 17
Algoritmo S Elect Leader C
. Variables:
candidatei = false; {Indica se o nó é candidato ou não}
tried ji = false ∀nj ∈ Neigi; {Nó nj que já tentou capturar}
owner id i = nil. {Líder corrente}
. Input:
{No pulso s = 0, apenas os nós candidatos executam estes comandos}
s = 0, MSGi(0) = ∅.
Action if ni ∈ N0: (1)
candidatei ← true; {Marca que o nó ni é candidato}
owner id i ← idi; {O líder de ni até o momento é o próprio nó}
Let nj be a node ∈ Neigi; {Escolhe um nó nj dentre os n− 1 para tentar capturar}
tried ji ← true; {Marca que tentou capturar o nó nj}
Send capture(id i) to nj. {Envia msg de captura para o nó nj}
UFMG/ICEx/DCC 18
Algoritmo S Elect Leader C
. Input:
s odd | 0 < s ≤ 2dlogne − 1, {Pulso é ímpar e condição de parada é satisfeita}
MSGi(s) | origini(capture(id i)) = (ni, nj) for capture(id j) ∈ MSGi(s).
Action: (2)
{Seja nk o maior identificador recebido dentre as msgs de captura}
Let nk ∈ Neigi be | idk ≥ id j ∀ capture(id j) ∈ MSGi(s);
{Se o identificador do líder corrente é menor que nk então o líder deve mudar}
{Caso contrário, ni continua sendo o líder}
if owner id i < idk
then begin
if candidatei {Se ni é candidato então deixa de ser}
then candidatei ← false;
owner id i ← idk; {Marca nk como novo líder}
Send ack to nk {Envia ack para nk, o novo líder}
end.
UFMG/ICEx/DCC 19
Algoritmo S Elect Leader C
. Input:
s even | 0 < s ≤ 2dlogne, {Pulso é par e condição de parada é satisfeita}
MSGi(s).
Action: (3)
{Para um nó continuar a ser candidato a líder, ele deve receber um ack para cada msg
enviada no último pulso par (s − 2). Essaquantidade é dada pelo menor valor entre
2(s−2)/2 e n − 2(s−2)/2 já que no último pulso podem haver menos msgs enviadas (veja
tabela).}
if candidatei
then if |MSGi(s)| < min(2(s−2)/2, n− 2(s−2)/2) {acks em s = msgs env. em (s− 2)?}
then candidatei ← false {Não, nó deixa de ser candidato}
else if s < 2dlogne {Sim e ainda há pulsos a serem executados?}
then begin
{S é o conjunto de nós que tentarão ser capturados neste pulso.}
Let S ⊂ Neigi be | |S| = min(2s/2, n− 2s/2) ∧ tried ji = false ∀nj ∈ S;
{Marca que tentou capturar o nó nj}
tried ji = true ∀nj ∈ S;
{Envia msg de captura para o nó nj}
Send capture(id i) ∀nj ∈ S
end.
UFMG/ICEx/DCC 20
Comentários sobre o algoritmo S Elect Leader C
• Nó candidato ni tem oportunidade para capturar os nós no pulso s = 0 (1) e
nos outros pulsos pares (3)
• A captura de mais nós em (3) depende se um ack foi recebido para cada msg
enviada no pulso par anterior:
– Essa quantidade é dada pelo menor valor entre 2(s−2)/2 e n − 2(s−2)/2
já que no último pulso podem haver menos msgs enviadas (veja tabela)
– Para n = 10, o nó candidato que vai se tornar líder, envia/recebe a
seguinte quantidade de mensagens/acks em cada pulso par:
Msgs enviadas Acks recebidos
Pulso (s) 2s/2 n− 2s/2 Min 2(s−2)/2 n− 2(s−2)/2 Min
0 – – 1 – – –
2 2 8 2 1 9 1
4 4 6 4 2 8 2
6 8 2 2 4 6 4
8 – – – 8 2 2
UFMG/ICEx/DCC 21
Comentários sobre o algoritmo S Elect Leader C
• Em (2), o nó decide se muda o seu owner id ou não
• Informações sobre os pulsos, sendo n = 10:
– dlog 10e = 4
– Último pulso ímpar = 2dlogne − 1 = 7
– Último pulso par = 2dlogne = 8
• Complexidade de Tempo: O(logn)
UFMG/ICEx/DCC 22
Algoritmo S Elect Leader C:
Complexidade de mensagem
Para 1 ≤ k ≤ dlogne − 1, o número máximo de nós a chegar no pulso s = 2k
como candidato é:
# Max de Msgs Acks
k s = 2k candidatos enviadas enviados
b n
2k−1
c
1 2 10
Para n = 10, temos 1 ≤ k ≤ dlog 10e − 1, ou seja, 1 ≤ k ≤ 3:
Max de Msgs Acks
k s = 2k No pulso Total candidatos enviadas enviados
0 0 0 10 10 0
1 2 0 0 10 10 0
UFMG/ICEx/DCC 23
Snapshot Distribuído
UFMG/ICEx/DCC 24
Evento
• Computação distribuída:
– Conjunto de eventos, representado por Ξ
• Um evento ξ é uma 6-tupla:
ξ = 〈ni, t, ϕ, σ, σ′,Φ〉
onde,
– ni é o nó no qual o evento ocorre
– t é o instante do tempo, de acordo com o relógio local de ni, em que o
evento ocorreu
– ϕ é a mensagem, se existir, que disparou o evento, quando de sua re-
cepção, em ni
– σ é o estado de ni antes da ocorrência do evento
– σ′ é o estado de ni depois da ocorrência do evento
– Φ é o conjunto de mensagens, se existir, enviado por ni como conseqüên-
cia da ocorrência do evento
UFMG/ICEx/DCC 25
Evento
-ni
tempo
σ σ′
t
Parte da CEFSM executada pelo nó ni
e e-
σ σ′
+ϕ|ei
−Φ|ai
onde
– ei é um evento interno
– ai é uma ação interna
UFMG/ICEx/DCC 26
Estado × Evento
-
-
. . .
ni
σ0i σ
1
i . . .
nj
Σi
Σj
σ2i
σ0j σ
1
j σ
2
j
...
 Ξ
Ü Os dois conceitos são duais
UFMG/ICEx/DCC 27
Estado global
• Estado global consistente ou snapshot :
– Estado que pode estar presente no Diagrama de Hasse correspondente à
execução dessa computação
Exemplo: figura 3.3, página 78 do livro texto
UFMG/ICEx/DCC 28
Snapshot Distribuído
• Técnica para registrar estados globais durante a execução de um algoritmo
assíncrono
– Informação registrada fica espalhada pelos nós de G
• A partir desses estados, propriedades globais podem ser analisadas
• Aplicações:
– Verificação de propriedades estáveis
– Questões relacionadas com o tempo durante uma simulação distribuída
UFMG/ICEx/DCC 29
Snapshot Distribuído
• Existem casos (e.g., simulação distribuída) em que é desejável o registro do
estado global com alguma propriedade específica
– Pode ser mais eficiente usar um líder para fazer o registro do estado global
de forma centralizada
• G é um grafo dirigido mas solução pode ser estendida para o caso do grafo
não ser dirigido
UFMG/ICEx/DCC 30
Snapshot Distribuído
• Existem duas computações distribuídas:
– Substrato: computação que se deseja registrar o estado global
– Superimposição: computação responsável por registrar o estado global
!!
!!
!
!!
!!
!
!!
!!
!
!!
!!
!
A
AAK
!!
!!
!
!!
!!
!
!! !! !! !! !! !!?? ?
!! !!
......
......
.....
......
......
.....
......
......
.....!! !!!! !!
�
���...
...
Algoritmo de
Algoritmo
Distribuído
Plano de Superimposição
Plano do Substrato
Snapshot Distribuído
UFMG/ICEx/DCC 31
Snapshot Distribuído
• Os dois algoritmos executam em G
• Cada nó é responsável por executar cada computação
• As duas computações são totalmente independentes:
– Não existe relações de causalidade entre elas
• Interação entre as duas computações:
– Superimposição é capaz de “observar”as variáveis e mensagens com a
finalidade de registrar o estado global
• A execução das duas computações ocorre de forma interleaved (“intercalada”
ou “entrelaçada”)
• Registrar um estado global do substrato é tirar um instantâneo (snapshot) do
nó sem ter que pará-lo
UFMG/ICEx/DCC 32
Snapshot Distribuído:
Algoritmo Síncrono
• Suposição:
– Mensagens enviadas no pulso s− 1 chegam ao seu destino no pulso s
• Princípio:
– Em cada pulso s ≥ 0, os estados de todos os nós e as mensagens envi-
adas no pulso s− 1 (s > 0) constituem um estado global
• Estado global pode ser armazenado em G de forma distribuída
• Nó armazena seu próprio estado e o estado de todas as arestas em que
recebe mensagens
UFMG/ICEx/DCC 33
Snapshot Distribuído:
Algoritmo Assíncrono
• Nós trocam uma mensagem especial chamada marker
• Nó ni ∈ N0, que participa do algoritmo A Record Global State (superim-
posição), registra o estado local do substrato σi
• Mensagem de marker é enviada em todos os canais de saída de ni
s s s -
A
A
A
A
AU
A
A
A
A
AU
-
6
Superimposição
ni
. . .
Substrato
enviadas neste período
Msgs do substrado não podem ser
t
t
σ
UFMG/ICEx/DCC 34
Snapshot Distribuído:
Algoritmo Assíncrono
s
s��
�
�
�
�
���
s
s��
�
�
�
�
���
s
s��
�
�
�
�
���
sAAAU
-
- t
t
ni
nj
marker
Φji
. . .
(1a vez)
Marker de njMsgs do
Substrato
• Conjunto Φji:
– Estado da aresta nj → ni
• Estado da aresta na qual marker foi recebido pela primeira vez =
Ü Registro está completo quando o nó recebe marker em todas as suas
arestas de entrada
– Similar ao algoritmo de PI
UFMG/ICEx/DCC 35
Snapshot Distribuído:
Algoritmo Assíncrono
• G é um grafo dirigido:
– Podem haver nós que nunca irão receber a mensagem de marker
• Não é o caso de G é fortemente conectado:
– Existe um caminho entre um par qualquer de vértices
• Complexidades:
– Mensagem: O(m), já que em cada aresta passa uma msg de marker
– Tempo: O(n), para uma msg de marker alcançar um nó que não esteja em
N0
UFMG/ICEx/DCC 36
Algoritmo A Record Global State
. Variables:
node statei = nil; {Estado local do substrato}
edge stateji = ∀ nj ∈ Neigi; {Estado da aresta (nj → ni)}
recorded i = false; {Indica se o estado local já foi registrado}
received ji = false ∀ nj ∈ I Neigi. {Indica se marker já foi recebido de nj}
. Input:
msgi = nil.
Action if ni ∈ N0: (1)
{Estado do substrato é registrado}
node statei ← σi
{Marca que registrou o estado local}
recorded i ← true;
{Envia marker, com o estado local, em todas as arestas de saída}
Send marker to all nj ∈ O Neigi.
UFMG/ICEx/DCC 37
Algoritmo A Record Global State
. Input:
msgi = marker | origini(msgi) = (nj → nj).
Action: (2)
{Indica que recebeu marker de nj}
received ji → true;
{Faz o registro do estado local como descrito na ação (1), se ainda não fez}
if not recorded i
then begin
node statei ← σi
recorded i ← true;
Send marker to all nk ∈ O Neigi.
end
UFMG/ICEx/DCC 38
Algoritmo A Record Global State
. Input:
msgi = sub msg | origini(msgi) = (ni → nj).
Action: (3)
{O susbtrato recebeu uma msg de nj que deve ser registrada na variável edge stateji .
Essa msg não é “consumida” pelo algoritmo de Superimposição.}
if recorded i
then if not received ji
then edge stateji ← edge state
j
i
⋃
{msgi}.
UFMG/ICEx/DCC39
Observações sobre o
algoritmo A Record Global State
• As ações executadas pelo algoritmo são atômicas
– Isto evita que o nó execute a computação do substrato entre o registro do
estado local e o envio de markers pelo algoritmo de superimposição (ações
1 e 2 no algoritmo)
• A ação 3 indica apenas a observação de uma msg que deve ser tratada pelo
substrato
– Essa msg não é consumida pelo algoritmo de superimposição nem implica
em qualquer relação de causalidade entre as duas computações
• Se G é fortemente conectado e todas as arestas são FIFO, então o algoritmo
A Record Global State registra um estado global
UFMG/ICEx/DCC 40
Coleta de estados globais de forma centralizada:
Caso 1
• Seja um estado global definido pela união de cada k-ésimo estado local na
seqüência Σi de cada nó ni participante da computação do substrato
• Neste cenário, seja uma função f(k) que deve ser aplicada ao estado global
coletado em k com o valor obtido em k − 1 para k > 1
– Neste caso, o estado das arestas não é importante, ou seja, não estamos
interessados se existem mensagens em trânsito nas arestas
– Exemplo: simulação dirigida pelo tempo (seção 10.2)
• Solução simples:
– Cada nó ni envia o seu estado local para um líder
– O líder calcula a função assim que tem o estado de todos os nós
UFMG/ICEx/DCC 41
Coleta de estados globais de forma centralizada:
Caso 2
• Seja um estado global a ser registrado onde o estado de cada aresta deve
ser o conjunto vazio
• Solução centralizada pode verificar facilmente se o estado de cada aresta é
vazio ou não
– Cada nó envia para o líder o seu estado local com o número de mensagens
recebidas e enviadas até o momento em cada aresta Ini e Outi respectiva-
mente
– Líder verifica para cada aresta e se o número de mensagens enviadas em
e é igual ao número de mensagens recebidas por e
– Neste caso, um estado do sistema onde todas as arestas têm um conjunto
vazio é um estado global
UFMG/ICEx/DCC 42

Continue navegando