14/09/2011
1
SISTEMAS DISTRIBUÍDOS
BASEADOS EM
COORDENAÇÃO
Livro do Tanembaum, cap 13
Aula de 14/09/2011
14/09/2011
2
Introdução
• Separação clara entre computação e coordenação
• Considere um SD como um conjunto de processos
• A parte da computação é formada pelos processos, que executam
tarefas de maneira independente.
• A parte da coordenação manipula os mecanismos necessários
para comunicação e cooperação entre os processos.
• Nos SD baseados em coordenação o foco está no modo
como ocorre a coordenação entre os processos.
14/09/2011
3
• Modelos de Coordenação
• Acoplamento
• Referencial
• Comunicação explícita entre os processos
• Por exemplo, um processo só pode se comunicar se souber os nomes
ou identificadores dos outros processos com os quais quer trocar
informações.
• Temporal
• Significa que ambos os processos em comunicação tem de estar
ligados e em funcionamento.
14/09/2011
4
• Modelos de Coordenação (cont.)
• Coordenação Direta
• Quando o acoplamento de processos é temporal e referencial
• Caixa Postal
• Quando os processos são desacoplados temporalmente.
• Nesse caso, não é necessário que os dois processos
comunicantes estejam executando ao mesmo tempo para que a
comunicação ocorra.
• Em vez disso, a comunicação é efetuada por meio da colocação de
mensagens em uma caixa postal.
• Como o acoplamento deste tipo de comunicação é referencial, é
necessário endereçar explicitamente a caixa postal que conterá as
mensagens que deverão ser trocadas.
5
14/09/2011
• Modelos de Coordenação (cont.)
• Coordenação Orientada a Reunião
• Combinação de sistemas de desacoplamento referencial e sistemas de
acoplamento temporal
• Em sistemas de desacoplamento referencial, os processos não conhecem uns aos
outros explicitamente. Em outras palavras, quando um processo quer coordenar
suas atividades com outros processos, ele não pode referenciar explicitamente
outro processo. Em vez disso, há o conceito de uma reunião na qual os processos se
agrupam temporariamente para coordenar suas atividades.
• O modelo prescreve que os processos que se reúnem sejam executados
simultaneamente.
• Sistemas baseados em reunião costumam ser implementados por meio de
eventos, como os suportados por sistemas distribuídos baseados em objetos.
Uma abordagem utiliza um mecanismo denominado sistemas publicar/subescrever:
• Nesses sistemas, os processos podem subescrever mensagens – isto é, concordar
em receber mensagens – que contém informações sobre objetos específicos,
enquanto outros processo produzem – isto é – publicam tais mensagens.
• A maioria dos sistemas publicar/subescrever exige que os processos comunicantes
estejam ativos ao mesmo tempo (temporal).
6
14/09/2011
• Modelos de Coordenação (cont.)
• Comunicação Geradora
• Modelo de coordenação mais conhecido que combina processos
desacoplados tanto referencial quanto temporalmente
• A ideia fundamental é que um conjunto de processos
independentes utilize um espaço persistente e independente de
dados de tuplas.
• Tuplas são dados rotulados que consistem em uma quantidade de
campos tipados.
• Os processos podem colocar qualquer tipo de registro no espaço
de dados compartilhado – isto é, eles geram registros de comunicação.
• O interessante é que os espaços de dados compartilhados
implementam um mecanismo de busca para as tuplas. Assim, quando um
processo quer extrair um tupla do espaço de dados, ele especifica os
valores dos campos em que está interessado. Então, qualquer tupla
que combinar com essa especificação é removida do espaço de dados e
passada para o processo.
14/09/2011
7
Arquitetura
• Um aspecto importante de sistemas baseados em
coordenação é que a comunicação ocorre pela descrição
das características de itens de dados que devem ser
trocados.
• Abordagem Global
• Vamos considerar que itens de dados são descritos por uma série
de atributos.
• Um tipo de dados é publicado quando é oferecido para outros
processos para leitura. Para isso, é preciso passar para o
middleware uma subscrição que contenha uma descrição dos
itens de dados nos quais o subscritor está interessado.
• Essa descrição normalmente é composta por alguns pares (atributo,
valor). .
14/09/2011
8
• Abordagem Global (cont.)
• O próximo desafio é associar subscrições com itens de dados.
Quando a associação for bem-sucedida há dois cenários
possíveis.
• No primeiro caso, o middleware pode decidir repassar os dados
publicados para seu conjunto de subscritores existentes no momento
em questão, isto é, processos que possuem uma subscrição
compatível.
• Como alternativa, o middleware também pode repassar uma
notificação, quando então os subscritores podem executar uma
operação read para recuperar o item de dados publicado.
14/09/2011
9
14/09/2011
10
• Arquiteturas Tradicionais
• A solução mais simples para comparar itens de dados
com subscrições é ter uma arquitetura cliente/servidor
centralizada. Essa é uma solução adota atualmente por
muitos sistemas publicar/subscrever, como por exemplo:
• WebSphere da IBM
• JMS da SUN
• JINI/JavaSpaces
14/09/2011
11
Exemplo: JINI e JavaSpaces
• JINI é um sistema distribuído que consiste em uma
•
•
•
•
mistura de elementos diferentes, embora relacionados.
Ele guarda uma forte relação com a linguagem de
programação Java, embora muitos de seus princípios possam
ser implementado igualmente em outras linguagens.
Uma parte importante do sistema é formada por um
modelo de coordenação para comunicação geradora.
JINI oferece desacoplamento temporal e referencial de
processos por meio de um sistema de coordenação
denominado JavaSpaces.
Um JavaSpace é um espaço de dados compartilhado que
armazena tuplas representantes de um conjunto tipado de
referencias a objetos Java. Vários JavaSpaces podem coexistir
em um único sistema Jini.
14/09/2011
12
• Tuplas são armazenadas em forma serializada. Em outras
palavras, sempre que um processo quiser armazenar uma
tupla, em primeiro lugar essa tupla é construída, o que
implica que todos os seus campos também sejam
construídos. Em decorrência, se uma tupla contiver dois
campos diferentes que se referem ao mesmo objeto, quando
armazenada em uma implementação de JavaSpace, conterá
duas cópias embutidas daquele objeto.
• Uma tupla é colocada no JavaSpace por meio de uma
operação write, que primeiro constrói a tupla e só depois
armazena.
• Toda vez que a operação write é chamada em uma
tupla, outra cópia construída dessa tupla é armazenada no
JavaSpace. Essa cópia construída é chamada instância de
tupla.
14/09/2011
13
14/09/2011
14
• O aspecto interessante da comunicação gerado em Jini é
•
•
•
•
o modo como as instâncias de tupla são lidas de um
JavaSpace.
Para ler uma instância de tupla, um processo fornece uma
outra tupla que ele usa como gabarito para comparar
instâncias de tuplas armazenadas no JavaSpace.
Como qualquer outra tupla, uma tupla de gabarito é um
conjunto tipado de referências de objetos.
Somente instâncias de tupla do mesmo tipo que o gabarito
podem ser lidas de um JavaSpace.
Um campo na tupla de gabarito ou contém uma
referencia a um objeto ou contém o valor NULL. Por
exemplo, considere a seguinte classe:
14/09/2011
15
public class Tupla{
public Integer id;
public Integer valor;
public Tupla(Integer id, Integer valor){
this.id = id;
this.valor = valor;
}
}
14/09/2011
16
• Depois um gabarito declarado como:
Tupla gabarito = new Tupla(null,new Integer(36));
• Combinará com a tupla:
Tupla item = new Tupla("MinhaTupla",new Integer(36));
• Para associar uma instância de tupla em um
JavaSpace com uma tupla de gabarito, esta última é
construída como sempre, incluindo seus campos NULL.
• Para cada instância de tupla do mesmo tipo que a tupla
de gabarito é feita uma comparação campo por campo
como a tupla de gabarito.
14/09/2011
17
• Dois campos combinam se ambos tiverem uma cópia
da mesma referência ou se o campo na tupla de
gabarito for NULL.
• Uma instância de tupla combina com uma tupla de
gabarito se houver uma combinação dos seus
respectivos campos dois a dois.
• Quando se verifica que uma instância da tupla combina
com a tupla de gabarito fornecida como parte de uma
operação read, essa instância de tupla é desmontada e
retornada ao processo leitor.
• Também há uma operação take que adicionalmente remove a
instância da tupla do JavaSpace.
14/09/2011
18
Exercícios
• 1. Explique porque sistemas descentralizados baseados
em coordenação têm problemas inerentes de
escalabilidade.
• 2. Um período de leasing em JINI é sempre especificado
como duração e não como um horário absoluto no qual
leasing expira. Por quê?
• 3. Quais são os mais importantes problemas de
escalabilidade em JINI?
• 4. Suponha que um cliente JINI coloca em cache a tupla
que obteve de um JavaSpace de modo a evitar ter de
consultar o JavaSpace da próxima vez. Essa cache faz
algum sentido? Explique.
14/09/2011
19
• 5. Responda à pergunta anterior, mas agora para o caso
em que um cliente armazena os resultados retornados
por um serviço de consulta.
• 6. Em alguns sistemas publicar/subscrever baseados em
assunto, procuram-se soluções seguras com criptografia
fim-a-fim entre publicadores e subscritores. Entretanto,
essa abordagem pode violar as metas iniciais de projeto
de sistemas baseados em coordenação. Como?
Download

Sistemas Distribuídos Baseados em Coordenação