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?