A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa

Apresentações semelhantes


Apresentação em tema: "UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa"— Transcrição da apresentação:

1 UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/SD2006 Aula 17-18: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI

2 Instituto de Informática - UFG 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 ● repositório de interfaces – ú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”

3 Instituto de Informática - UFG Programas: Servidor e Cliente ● Servidor: – código para instanciação das implementações de objetos (instância da impl. de objeto = servente) – 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

4 Instituto de Informática - UFG Serviços de suporte ● Binder – mapeia nomes para referências de objetos – Ex.: serviço de nomes de CORBA, Registry de RMI ● Serviço de localização – mapeia referências de objetos para as respectivas (prováveis) localizações físicas dos objetos – provê suporte para migração de objetos e redirecionamento – elimina a necessidade de guardar endereço IP e porta na referência de objeto!

5 Instituto de Informática - UFG 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

6 Instituto de Informática - UFG 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 – o uso de persistência deve ser transparente para o implementador do objeto e para os clientes

7 Instituto de Informática - UFG 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

8 Instituto de Informática - UFG RPC Chamada de Procedimentos Remotos

9 Instituto de Informática - UFG Implementação de RPC client Request Reply Communication module dispatcher service client stub server stub procedure client processserver process procedure program Qual a diferença notável em relação a RMI?

10 Instituto de Informática - UFG 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;

11 Instituto de Informática - UFG Eventos e notificações (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

12 Instituto de Informática - UFG Eventos e notificações: Exemplo

13 Instituto de Informática - UFG Arquitetura distribuída para notificação de eventos subscriberobserverobject of interest Event service object of interest observer subscriber 3. 1. 2. notification

14 Instituto de Informática - UFG 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

15 Instituto de Informática - UFG 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

16 Instituto de Informática - UFG 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 http://java.sun.com/products/jini/2.1/doc/specs/html/event-spec.html – Entrega:

17 Instituto de Informática - UFG Exemplo de RMI: Java RMI ● Definição de interfaces ● Implementação do servidor ● Implementação de objeto ● Implementação do cliente

18 Instituto de Informática - UFG Java RMI: Exemplo de interface i mport java.rmi.*; import java.util.Vector; public interface Shape extends Remote { int getVersion() throws RemoteException; GraphicalObject getAllState() throws RemoteException;1 } public interface ShapeList extends Remote { Shape newShape(GraphicalObject g) throws RemoteException;2 Vector allShapes() throws RemoteException; int getVersion() throws RemoteException; }

19 Instituto de Informática - UFG Java RMI: a classe Naming do RMIregistry void rebind (String name, Remote obj) This method is used by a server to register the identifier of a remote object by name, as shown in Figure 15.13, line 3. void bind (String name, Remote obj) This method can alternatively be used by a server to register a remote object by name, but if the name is already bound to a remote object reference an exception is thrown. void unbind (String name, Remote obj) This method removes a binding. Remote lookup(String name) This method is used by clients to look up a remote object by name, as shown in Figure 15.15 line 1. A remote object reference is returned. String [] list() This method returns an array of Strings containing the names bound in the registry.

20 Instituto de Informática - UFG Java RMI: Implementação do servidor import java.rmi.*; public class ShapeListServer{ public static void main(String args[]){ System.setSecurityManager(new RMISecurityManager()); try{ ShapeList aShapeList = new ShapeListServant();1 Naming.rebind("Shape List", aShapeList );2 System.out.println("ShapeList server ready"); } catch(Exception e) { System.out.println("ShapeList server main " + e.getMessage());} }

21 Instituto de Informática - UFG Java RMI: Implementação de objeto (servant) import java.rmi.*; import java.rmi.server.UnicastRemoteObject; import java.util.Vector; public class ShapeListServant extends UnicastRemoteObject implements ShapeList { private Vector theList; // contains the list of Shapes1 private int version; public ShapeListServant()throws RemoteException{...} public Shape newShape(GraphicalObject g) throws RemoteException {2 version++; Shape s = new ShapeServant( g, version);3 theList.addElement(s); return s; } public Vector allShapes()throws RemoteException{...} public int getVersion() throws RemoteException {... } }

22 Instituto de Informática - UFG Java RMI: Cliente import java.rmi.*; import java.rmi.server.*; import java.util.Vector; public class ShapeListClient{ public static void main(String args[]){ System.setSecurityManager(new RMISecurityManager()); ShapeList aShapeList = null; try{ aShapeList = (ShapeList) Naming.lookup("//bruno.ShapeList");1 Vector sList = aShapeList.allShapes();2 } catch(RemoteException e) {System.out.println(e.getMessage()); }catch(Exception e) {System.out.println("Client: " + e.getMessage());} }

23 Instituto de Informática - UFG Classes que dão suporte a Java RMI RemoteServer UnicastRemoteObject Activatable RemoteObject


Carregar ppt "UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa"

Apresentações semelhantes


Anúncios Google