Sistemas Distribuídos e Redes de Sensores

Texto

(1)

Sistemas Distribu´ıdos e Redes de Sensores

Aula 6: Outros Padr˜oes – dissemina¸c˜ao e roteamento

abril de 2013

(2)

Padr˜ oes de programas distribu´ıdos

padr˜ao cliente-servidor exibe assimetria intr´ınseca padr˜oes envolvendo processospares: c´odigo idˆentico

G. Andrews. Paradigms for process interaction in distributed programs. ACM Computing Surveys, 23(1), march 1991, 49-90.

(3)

Nota¸c˜ ao Andrews

canais

desacoplamento em rela¸c˜ao a parceiros espec´ıficos tipagem

(4)

exemplos C/S

monoprocesso

“monitor”: aloca¸c˜ao de recursos de car´ater homogˆeneo controlador de disco

pr´e-aloca¸c˜ao

sess˜oes de uso (continuidade conversacional) e estado

(5)

Padr˜ oes p2p

simetria do c´odigo facilita entendimento do programa

algoritmos em execu¸c˜ao determinam padr˜oes de comunica¸c˜ao

rela¸c˜ao entre discuss˜ao no artigo Andrews e aplica¸c˜oes mais recentemente rotuladas como p2p

(6)

Dissemina¸c˜ ao de informa¸c˜ oes

Motiva¸c˜ao

Dissemina¸c˜ao de informa¸c˜oes de um n´o raiz para toda a rede Dissemina¸c˜ao de informa¸c˜oes de todos os n´os para todos os n´os da rede (ex., problema de descoberta de topologia da rede)

Coleta de dados de todos os n´os da rede Probe/echo e heartbeat

Padr˜oes de intera¸c˜ao adequados para dissemina¸c˜ao de informa¸c˜oes quando os n´os trocam mensagens apenas com seus vizinhos imediatos.

(7)

Algoritmos e padr˜ ao da aplica¸c˜ ao

possivel combina¸c˜ao de v´arios padr˜oes

algoritmo de dissemina¸c˜ao pode ser apenas pequena parte do que ´e computado na aplica¸c˜ao

(8)

Dissemina¸c˜ ao e roteamento

redes f´ısicas redes de overlay

(9)

Algoritmos heartbeat

Cada processo executa uma sequˆencia de itera¸c˜oes, onde cada itera¸c˜ao compreende:

1 enviar seu conhecimento local para todos os vizinhos (expans˜ao)

2 receber o conhecimento dos vizinhos (contra¸ao)

3 ... e combinar os dados gerando nova vers˜ao da informa¸ao global

(10)

problema exemplo: descoberta de topologia da rede

Cada n´o s´o se comunica com seus vizinhos;

Inicialmente cada n´o s´o conhece seus vizinhos imediatos;

A rede ´e conexa (todo n´o tem ao menos um vizinho);

Ao final queremos que cada n´o (processo) conhe¸ca a topologia inteira da rede (grafo de enlaces).

por exemplo, para tomar decis˜oes sobre roteamento de mensagens

problema representativo em SDs pois reaparece em v´arias formas

(11)

Algoritmo distribu´ıdo para descoberta de topologia

Cada n´o pergunta pela topologia de seus vizinhos (enviando e recebendo uma mensagem);

Depois de uma intera¸c˜ao (round), cada n´o conhece a topologia no raio de dois saltos;

Depois derintera¸c˜oes, o seguinte predicado ser´a verdadeiro em cada n´o p:

ROUND:∀q : 1≤q≤n: (dist(p,q)≤r ⇒top[q,∗] j´a preenchida)

(12)

Algoritmo heartbeat para descoberta de topologia

primeira solu¸c˜ao: diˆametro da rede (distˆancia em saltos entre os n´os mais distantes) conhecido:

(13)

Interface de comunica¸c˜ ao p2p

Interface do enlace Module:

Name: PerfectP2PLink Events:

Request: < Send | dest, msg >

Indication: < Deliver | src, msg >

Propriedades do enlace

mensagens s˜ao entregues em ordem, n˜ao h´a cria¸c˜ao de mensagens

(14)

Interface para componente de descoberta de topologia (v1)

(considerando que o diˆametro da rede seja conhecido) Module:

Name: Topologia-v1 Events:

Request: <DescobreTopologia | d, vizinhos[N]>

Indication: <TopologiaAtual | top[N][N]>

(15)

Liga¸c˜ ao entre componentes

(16)

Algoritmo heartbeat (parte 1)

Implements: Topologia-v1 Uses: PerfectP2PLink event <Init> do

global top[1:n][1:n] := false;

global r := 0; resp := 0; num_vizinhos := 0;

proc Expande() do

forall q in top[p] do trigger <Send | q, top>

resp := num_vizinhos;

end

event <DescobreTopologia | d, vizinhos[N]> do top[p][1:n] := vizinhos[1:n];

num_vizinhos := computa vizinhos;

call Expande()

(17)

Algoritmo heartbeat (parte 2)

event <Deliver | q, newtop> do top := top or newtop;

resp := resp - 1;

call Topo();

end

proc Topo() do

if (resp = 0) then r := r + 1;

if (r = d) then

trigger <TopologiaAtual | top>;

else

call Expande() end

(18)

Problemas da solu¸c˜ ao anterior

1 Conhecimento a priori do diˆametro D da rede

2 Troca excessiva de mensagens: n´os na regi˜ao central da rede continuar˜ao a ex ecutar as intera¸c˜oesmesmo depois de j´a terem terminado de computar a topologia

(19)

Algoritmo heartbeat refinado para descoberta de topologia

Depois derintera¸c˜oes, o n´o p conhecer´a a topologia dentro da distˆanciar: ∀q :dist(p,q)≤r, os vizinhos deq estar˜ao armazenados na linha q detop

Como a rede ´e conexa,cada n´o tem ao menos um vizinho, ent˜ao o n´o p ter´a executado um n´umero suficiente de intera¸c˜oes (rounds) para saber a topologia da rede assim que toda linha detoptiver ao menos um valor TRUE

Nesse ponto, q pode terminar ap´os compartilhar sua topologia final com seus vizinhos

(20)

Interface para descoberta de topologia (v2)

Module:

Name: Topologia-v2 Events:

Request: <DescobreTopologia | vizinhos[N]>

Indication: <TopologiaAtual | top[N][N]>

(21)

Algoritmo heartbeat (parte 1)

Implements: Topologia-v2 Uses: PerfectP2PLink event <Init> do

global top[1:n][1:n] := false;

global resp := 0; num_vizinhos_ativos := 0;

global ativos[1:n] := false; done := false;

(22)

Algoritmo heartbeat (parte 2)

proc Topo() do if (resp = 0) then

if (todas linhas de top tem uma entrada true) then done := true;

forall q in ativos do

trigger <Send | q, [done, top]>

if (done) then

trigger <TopologiaAtual | top>;

else

resp := num_vizinhos_ativos;

end end

(23)

Algoritmo heartbeat (parte 3)

event <DescobreTopologia | vizinhos[N]> do top[p][1:n] = vizinhos[1:n];

ativos[1:n] = vizinhos[1:n];

num_vizinhos_ativos := computa vizinhos;

forall q in ativos do

trigger <Send | q, [done, top]>

resp := num_vizinhos_ativos;

(24)

Algoritmo heartbeat (parte 4)

event <Deliver | q, [qdone, newtop]> do if (not done) then

top := top or newtop;

if (qdone) then ativos[q] := false;

num_vizinhos_ativos = num_vizinhos_ativos-1;

end

resp := resp - 1;

call Topo();

end

(25)

Observa¸c˜ oes sobre a solu¸c˜ ao anterior

O limite superior de mensagens trocadas ´e: n∗2∗m∗(D+ 1), onden ´e o n´umero de n´os na rede em ´e o n´umero m´aximo de vizinhos de um n´o

Cada n´o n executa no m´aximoD+ 1 rodadas nas quais troca 2 msgs com cada um dos seusmvizinhos

(26)

Observa¸c˜ oes sobre o padr˜ ao heartbeat

O loop principal dos algoritmos heartbeatsegue sempre a mesma estrutura b´asica (envia msgs para os vizinhos e espera pelas respostas);

O conte´udo das msgs e como elas s˜ao tratadas depende de cada aplica¸c˜ao;

O crit´erio de t´ermino e como ´e verificado depende de cada aplica¸c˜ao

no exemplo, cada n´o ´e capaz de identificar o t´ermino;

em outros casos, o n´o precisar´a:

interagir com um controlador central trocar informa¸oes adicionais

ou executar o pior caso de n´umero de rodadas

Imagem

Referências

temas relacionados :