UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula 11: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI
Chamadas dinâmicas Proxy dinâmico genérico, independente de interface utiliza uma definição de interface acessível dinamicamente para formatar as requisições útil quando não se conhece a interface em tempo de programação Skeleton dinâmico permite receber chamadas destinadas a qualquer tipo de objeto/interface útil na construção de servidores genéricos
Programas: Servidor e Cliente Servidor: código para instanciação das implementações de objetos dá origem ao processo servidor que hospeda os objetos remotos Cliente: código que faz uso de objetos remotos não necessariamente composto de objetos
Serviços de suporte Binder mapeia nomes para referências de objetos Ex.: serviço de nomes de CORBA, Registry Serviço de localização mapeia referências de objetos para as respectivas (prováveis) localizações físicas dos objetos suporte para migração de objetos e redirecionamento elimina a necessidade de guardar endereço IP e porta na referência de objeto
Serviços de suporte (2) Threads cada requisição é servida com o uso de uma thread separada no processo servidor evita o bloqueio do servidor e permite que o mesmo processe várias requisições simultaneamente Ativação de objetos objetos podem ser salvos em disco quando não utilizados (estado serializado + meta-dados) economia de recursos (ex.: memória) ao ser necessário, um objeto pode ser reativado um novo servente é criado para materializar o objeto
Serviços de suporte (3) Armazenamento persistente de objetos serialização do estado dos objetos gerenciamento do armazenamento dos objetos estratégia para definir quando um objeto deve ser desativado (ir para o estado passivo ) quais partes do estado do objeto devem ser salvas persistência transparente para o implementador do objeto e para os clientes
Coleta de lixo distribuída Idéia geral: Um objeto existe enquanto houver alguma referência para ele no sistema distribuído Quando a última referência for removida, o objeto pode ser destruído Mecanismo: Interceptação de referências de objetos remotos passadas como parâmetros ou retorno de RMI Contagem de referências (no processo servidor) Contador incrementado/decrementado como resultado da criação/destruição de proxies nos clientes
Implementação de RPC client process server process Request client program client stub procedure Communication module Reply server stub procedure Communication module dispatcher service procedure Qual a diferença notável em relação a RMI?
Exemplo de definição de interface em Sun XDR const MAX = 1000; typedef int FileIdentifier; typedef int FilePointer; typedef int Length; struct Data { int length; char buffer[max]; }; struct writeargs { FileIdentifier f; FilePointer position; Data data; }; struct readargs { FileIdentifier f; FilePointer position; Length length; }; program FILEREADWRITE { version VERSION { void WRITE(writeargs)=1; 1 Data READ(readargs)=2; 2 }=2; } = 9999;
Eventos e notificações (aka: modelo Publish-Subscribe) Modelo de comunicação assíncrona entre gerador de eventos (objetos de interesse) e consumidores de eventos (assinantes) Eventos são comunicados via notificações Completo desacoplamento entre geradores e consumidores de eventos um gerador de eventos não sabe quais consumidores recebem suas notificações Tipos de eventos tipos de dados envolvidos em um evento
Eventos e notificações: Exemplo Dealer s computer External source Dealer s computer Dealer Dealer Information provider Dealer s computer Dealer s computer Dealer Information provider Dealer External source
Arquitetura distribuída para notificação de eventos object of interest Event service subscriber 1. notification object of interest observer subscriber 2. notification notification object of interest observer subscriber 3. notification
Papéis dos componentes de uma arquitetura de eventos Objeto de interesse gerador de eventos de algum tipo especificado Evento ocorrência em um objeto de interesse Notificação objeto que contém informação sobre um evento, utilizado para comunicá-lo aos interessados Assinante objeto que registra interesse por notificações de certo tipo de evento
Papéis dos componentes de uma arquitetura de eventos (2) Objeto observador intermediador entre objetos de interesse e assinantes implementa a lógica de notificação encaminhamento, filtragem, correlação de eventos para detectar padrões, caixa postal de eventos seu uso é opcional Publicador torna tipos de eventos conhecidos do público pode ser o objeto observador ou o próprio objeto de interesse que gera o evento
Exemplo de arquitetura de eventos: Jini Distributed Event Specificatoin Permite que assinantes em uma JVM recebam notificações de eventos gerados por objetos localizados em outras JVMs Exercício fazer um resumo (2 páginas) da arquitetura de eventos de Jini CDK4, seção 5.4.2 Especificação oficial: http://java.sun.com/products/jini/2.1/doc/specs/html/event-spec.html Entrega: 18/04/06 Primeiro seminário (20min), com slides