Sunteți pe pagina 1din 31

Sistemas Distribudos Baseados em

Coordenao

Roteiro

Introduo

Arquitetura

Arquitetura Publisher / Subscribe

Arquitetura Espao de Tuplas

Mobilidade e coordenao

Comunicao

Comunicao Simples

Roteamento baseado em Contedo

Introduo

O que coordenao ?
A coordenao quem manipula a comunicao e
a cooperao entre processos de um sistema.

Introduo
Processo 1

Comunicao

Processo 4

Processo 2

Processo 5

Processo 3

Processo 6

Computador

Imaginar:

Um computador com multithreads (vrios processos);

Cada processo independente de outro;

Mas pode haver a comunicao entre processos;

Introduo
Servio 1

Comunicao

Servio 4

Servio 2

Servio 5

Servio 3

Servio 6

Sistema
Distribudo

Relacionar:

O computador o nosso Sistema Distribudo;

Cada processo representa um servio (ou um objeto);

A comunicao entre eles feita atravs de um protocolo;

A coordenao manipula a comunicao e a cooperao entre processos;

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Temporal

Acoplado: ambos os processos devem estar ativo


Desacoplado: ambos os processos no
necessariamente devem est ativo

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Referencial

Acoplado: a comunicao entre processo feita


atravs de referncia explcita (ex. IP e nome)
Desacoplado: para haver comunicao, no h a
necessidade de saber quem o outro processo

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Referencial: acoplado

Temporal: acoplado

Denominado Coordenao Direta

Quando ambos processos devem estar ativos

Um dos processos necessitar ter informaes do outro

Exemplo: Web Service e RMI

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Referencial: acoplado

Temporal: desacoplado

Denominado Coordenao de Caixa Postal

No h a necessidade de ambos os processos estarem ativos

No entanto, continua precisando ter a informao do outro processo

Exemplo: Correio Eletrnico (e-mail)

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Referencial: desacoplado

Denominado Coordenao Orientada a Reunio

Cria-se um grupo (reunio)


Processos se associam neste grupo temporariamente
Outros processos podem gerenciar os participantes deste grupo

Quando ambos processos devem estar ativos

No tem informaes dos outros processos (apenas do grupo)

Exemplo: Publisher/Subscribe (1 modelo)

Temporal: acoplado

Introduo
Modelos
Temporal
Acoplado
Acoplado

Desacoplado

Direto

Caixa Postal

Orientado
a reunio

Comunicao
Geradora

Referencial
Desacoplado

Referencial: desacoplado

Temporal: desacoplado

Denominado Coordenao Comunicao Geradora

Cria-se um espao;
Em que todos os processos podem salvar e recuperar dados;
Sem ter a necessidade de se identificar;

No h a necessidade de todos os processos estarem ativos

E nem deles saberem que so os outros processos (so annimos)

Exemplo: Publisher/Subscribe (2 modelo) e Espao de Tupla ( JavaSpaces )

A seguir, sero apresentados duas arquiteturas: o


Publisher/Subscribe e o Espao de Tuplas

Arquitetura
Publisher / Subscribe (1 modelo)
Associa

Publisher

Recebe o dado

Adiciona
um dado

Tpico
A
Recebe o dado

O Publisher cria um tpico A;

Os subscribers associam-se ao tpico A;

Associa

Quando o Publisher adicionar algum dado nesse tpico, todos os subscribers


cadastrados iro receber;
O dado no armazenado e apagado logo em seguida;
Como o dado no armazenado, todos os processos (computadores) necessitam
estar ligados (e funcionando) para receb-lo (acoplamento temporal);

Arquitetura
Publisher / Subscribe (2 modelo)
Associa

Publisher

Recebe o dado

Adiciona
um dado

Tpico
A
Recebe o dado

O Publisher cria um tpico A;

Os subscribers associam-se ao tpico A;

Associa

Quando o Publisher adicionar algum dado nesse tpico, todos os subscribers cadastrados
iro receber;
O dado armazenado durante um determinado tempo e apagado logo em seguida que
esse tempo for expirado;
Como o dado armazenado, caso um processo no esteja ativo, poder receber este dado
quando conectar ao tpico (desacoplamento temporal);

Arquitetura
Publisher / Subscribe (Comparao)
Publisher

Gerenciador de Tpicos

Associa

Recebe o dado

Adiciona
um dado

Tpico
A
Recebe o dado
Associa

Em ambos os modelos, permitido a comunicao de N N (vrios Publisher para vrios Subscribe);

Uma arquitetura flexvel e escalvel;

Geralmente, h um computador responsvel por gerenciar os tpicos;

Permitindo, deste modo, que os processos nem sempre estejam ativos para haver uma comunicao com
outros processos;
A comunicao entre processos feita atravs de tpicos, no havendo indico de identificao dos
processos participantes e ativos;
Este modelo tambm pode representar uma arquitetura baseada em eventos;

Arquitetura
Publisher / Subscribe (Exemplo de Cdigo)

Publisher

Subscribe

public void iniciar(){


Gerenciador.criarTopico(A);
Gerenciador.addDado( A , inicio , 20 );
}

public void iniciar(){


Gerenciador.associarAoTopico(A);
}
Public void notificacaoDeDado(String dado){
ImprimirNaTela( Recebeu o dado: + dado );
}

Arquitetura
Espao de Tupla
B
A

write
write
A
A

C
B
Espao de Tupla

read

Em ambos os modelos, permitido a comunicao de N N (vrios


Publisher para vrios Subscribe);

Uma arquitetura flexvel e escalvel;

Geralmente, h um computador responsvel por gerenciar as tuplas;

Arquitetura
Espao de Tupla
B
A

write( New Tupla(A,10) )

write( new Tupla(B,20) )

C
A

Espao de Tupla
public class Tupla implements Entry {
public String id;
public Integer valor;
public Tupla(String i, Integer v){ this.id = i; this.valor = v; }
}

Read

Arquitetura
Espao de Tupla
B
A

write( New Tupla(A,10) )

write( new Tupla(B,20) )

C
A

Espao de Tupla

Disponibilizar uma tupla: write( new Tupla( A , 20 ) );

Campos com os mesmos atributos nunca so substitudos

L uma tupla: read ( new Tupla( null , 30 ) );

Sero procurados tuplas com valores similares ao passados no comando read

Quando no deseja especificar um valor, coloca-se NULL no campo

Deletar uma tupla: take( new Tupla( null , 30 ) );

?
Read( new Tupla( null , 30 ) )

No ltimos anos, houvem uma considervel


ateno na rea de sistemas mveis com
coordenao

Arquitetura para Ambiente Mvel


Publisher / Subscribe
Subscribe

Gerenciadores
de Tpicos

considerado que haja pontos fixos na rede;


Esses pontos sero responsveis por gerenciar os
tpicos;
Um dispositivo mvel pode ser um subscribe ou um
publisher;

Arquitetura para Ambiente Mvel


Publisher / Subscribe
Subscribe

Gerenciadores
de Tpicos

Problema: Como no repassar o mesmo dado para o mesmo subscribe quando ele mudar de
rea?
Solues:
1) o subscribe pode controlar os dados que recebe, rejeitando um dado repetido, ou;
2) os gerenciadores de tpicos podem controlar (e compartilhar isso) a quem j entregou um dado;

Arquitetura para Ambiente Mvel


Espao de Tupla

Armazenamento
Local

Armazenamento
Local

Armazenamento
Local

Armazenamento Distribudo

Cada dispositivo mvel possui um armazenamento interno de tuplas;


Quando h uma aproximao de um outro dispositivo mvel, pode haver
um compartilhamento de tuplas;
Todos os dispositivos tem acesso as tuplas dos demais;

Comunicao

Esta descrio est relacionada a sistemas Publisher/Subscribe;

Comunicao Simples

Tanto o Publishers quanto o Subscribes tem acesso direto ao


Gerenciador de Tpicos;
Deste modo, pode-se utilizar o modelo clssico (apresentado
anteriormente);

Comunicao entre entidades distncias

Necessita de roteamento [vrios saltos]

Alternativa um sistema com roteamento baseado em contedo

Comunicao
Comunicao Simples (relembrando)

Associa

Publisher

Recebe o dado

Adiciona
um dado

Tpico
A
Recebe o dado
Associa

Comunicao
Roteamento baseado em Contedo
S2

S3
S4

S1

R1
R3
R2
S8

S* = so servidores (gerenciadores de tpicos);

R* = roteadores de contedo;

S5
S6

S7

Tem a capacidade de ler e repassar uma mensagem baseada no seu contedo


Os roteadores constroem uma tabela com os tipos de dados que os servidores conectados a ele
desejam receber;
Ao receber uma mensagem, podem descartar ou repassar para o servidor que deseja aquele dado;

Comunicao
Roteamento baseado em Contedo
S2

S3
S4

S1

R1
R3
R2
S8

S5
S6

S7

S1 informa que h um dado novo, ento, envia-o para o R1;

R1 verifica se um dos seus servidores deseja aqueles dados;

R1 tambm tem que repassar o dado para os demais roteadores;

Ele pode escolher um desses dois modos de roteamento:

1) envia em broadcast (para todos os roteadores), ou

2) envia dado de acordo com uma tabela de roteamento.

Comunicao
Roteamento baseado em Contedo
S2

S3
S4

S1

R1
R3
R2
S8

S5
S6

S7

1) Enviar em Broadcast

Ao receber uma mensagem, os roteadores envia o dado para todos os outros


roteadores;
Pode ocupar a rede com mensagens desnecessrias;
Relembrando: o roteador consulta sua tabela e relaciona a mensagem com algum
servidor. Se algum tiver o interesse na mensagem, ele repassa. Caso no, o
roteador descarta a mensagem.

Comunicao
Roteamento baseado em Contedo
S2

S3
S4

S1

R1
R3
R2
S8

S5
S6

S7

2) envia dado de acordo com uma tabela de roteamento

Relembrando: os roteadores constroem uma tabela com os tipos de dados que os servidores
conectados a eles desejam receber;

Ao montar essa tabela, compartilham com os demais roteadores;

At quando, todos tem uma viso geral da rede, sabendo quem deseja o qu;

Comunicao
Roteamento baseado em Contedo
S2

S3
S4

S1

R1
R3
R2
S8

S5
S6

S7

2) envia dado de acordo com uma tabela de roteamento

Resolve o problema de ocupa a rede com mensagens desnecessrias;

No entanto, pode ocasionar em um processamento extra nos roteados;

Devido a analise do contedo e consulta a tabela de roteamento;

Referncia

Tanenbaum, Maarten V., Sistemas Distribudos:


Princpios e Paradigmas, 2 edio, Pearson, ISBN:
9788576051428, 2007
Oracle - Java Message Space, disponvel em:
http://java.sun.com/products/jms/
Oracle, JavaSpaces Principles, Patterns, and
Practice, disponvel em:
http://java.sun.com/developer/Books/JavaSpaces/

S-ar putea să vă placă și