Baixe o app para aproveitar ainda mais
Prévia do material em texto
Objetos Distribuídos Sistemas Distribuídos Bacharelado em Sistemas de Informação UENP – CLM 1 Prof. MSc. Bruno Miguel – brunomiguel@uenp.edu.br Roteiro 1. Introdução 2. Modelo de Objetos X Modelo de Objetos Distribuídos 3. Problemas de Projeto para RMI 4. Implementação do RMI 5. Comunicação em grupo 2 Evolução dos sistemas cliente-servidor • O modelo clássico (pedido-resposta) começou por ser implementado por instruções de baixo nível • Ex. Sockets 3 Evolução dos sistemas cliente-servidor • Linguagens procedurais -> modelo RPC (Remote Procedure Calling). • Linguagens OO motivou o aparecimento dos sistemas de Objetos Distribuídos -> RMI (Remote Method Invocation) 4 Modelo de Objetos x Modelo de Objetos Distribuídos • Referências para objetos locais X referências para objetos remotos. • Em um sistema OO os objeto são acessados por referências . • Para invocar um método -> referência do objeto, nome do método e argumentos correspondentes. • Referências, podem ser atribuídas a variáveis, passadas como argumentos e devolvidas como resultado de métodos 5 Modelo de Objetos x Modelo de Objetos Distribuídos • Referência remota – Identificador que pode ser usado no âmbito de um SD para se referir a um objeto remoto único; – Referências remotas são idênticas a referências locais, nos seguintes aspectos: 1. o objeto que recebe a invocação do método é especificado como o objeto local 2. referências remotas podem ser passadas como argumentos e resultados de invocação de métodos remotos 6 Modelo de Objetos x Modelo de Objetos Distribuídos • Passagem de parâmetros(entre processos diferentes) cópia versus referência(tipos primitivos são passados por cópia) • Passagem de objetos remotos – por referência (são objetos de acesso global) na prática uma referência remota “aponta” para um objeto local que funciona como um proxy do objeto remoto – Na passagem de um objeto remoto, é passado um proxy que é guardado na maquina receptora, e para o qual vão ser passadas as futuras invocações ao objeto 7 Modelo de Objetos x Modelo de Objetos Distribuídos • Passagem de objetos locais - por cópia (a referência não faz sentido na máquina remota) • Do lado do receptor é criado um novo objeto que pode ser guardado localmente 8 Modelo de Objetos x Modelo de Objetos Distribuídos • Interface Especificação sintática de um conjunto de métodos. Uma classe que implemente a interface terá obrigatoriamente que implementar todos os métodos da interface • Interface remota - Cada objeto remoto tem uma interface remota que especifica quais dos seus métodos podem ser invocados remotamente. Remota (IR) Invocação IR IL IL ILA B C D E F 9 Interface remota m1 m2 m3 m4 m5 m6 Dados Implementação Objeto remoto { dos métodos 10 Modelo de Objetos x Modelo de Objetos Distribuídos • Métodos locais - A invocação de um método local resulta na execução do código correspondente no objeto receptor. No final o controle de execução retorna ao objeto invocador. A invocação de um método pode resultar em: – o estado do objeto é alterado – outras invocações, de objetos em outro lugar; 11 Modelo de Objetos x Modelo de Objetos Distribuídos • Método remotos – A invocação de um método remoto pode resultar na invocação de outros objetos tal como numa invocação local. – Eventualmente os objeto envolvidos podem existir em máquinas diferentes. – Quando uma invocação atravessa a barreira de um processo ou computador, tem lugar uma invocação de um procedimento remoto (Remote Method Invocation –RMI) – Para um objeto fazer uma invocação remota sobre um objeto tem que possuir a sua referência remota 12 Modelo de Objetos x Modelo de Objetos Distribuídos • Exceções locais - Quando ocorre uma situação de erro (recuperável) é gerada uma exceção (pelo sistema de execução ou pelo próprio código do programador) – É possível capturar uma exceção e transferir o controle de execução para um bloco de código que tratará a condição de erro . 13 Modelo de Objetos x Modelo de Objetos Distribuídos • Exceções remotas – Uma invocação remota além das exceções ocorridas no processo receptor, pode também gerar exceções devido a: • erro na transmissão dos argumentos, • o processo que contém o objeto remoto “falhou” (crashed) está tão ocupado que não consegue responder, • o resultado da invocação perdeu-se. 14 Modelo de Objetos x Modelo de Objetos Distribuídos • Reciclagem (Garbage Collection-GC) – Java detecta automaticamente os objetos que já não são acessíveis. Em C++ o programador é o responsável por liberar esse espaço de memória; • Reciclagem de Objetos Distribuídos -Extensão do GC tradicional – Geralmente baseada em contagem de referências; 15 Problemas de projeto para RMI • Falhas na comunicação são tratadas com três mecanismos: – Re-tentativa de mensagem de requisição: retransmitir a mensagem até que uma resposta seja recebida ou que se presuma que o servidor falhou – Filtragem de duplicatas: necessária para eliminar execução replicada de requisições no servidor – Retransmissão de resultados: manter histórico de resultados enviados para evitar que o servidor tenha que re-executar operações no caso de perda de uma resposta. • Semântica de invocação 16 Problemas de projeto para RMI Talvez método remoto pode ser executado uma vez ou não executado. Sujeito à falha por omissão ou por colapso. Não é possível determinar se o método foi executado ou não. Muitas coisas podem ter acontecido, incluindo um timeout se o sistema é assíncrono. Corba Pelo- menosuma- vez invocador recebe um resultado quando o método foi executado pelo menos uma vez, ou uma exceção quando não se obtém um resultado. Para lidar com as omissões, se retransmite as mensagens de requisição e resposta. SUN RPC No- máximouma- vez o invocador recebe um resultado quando o método foi executado exatamente uma vez ou recebe uma exceção, mas método nunca será executado mais de uma vez. RMI Java e Corba •Três semânticas de invocação possíveis 17 Problemas de projeto para RMI • Transparência: – A idéia é que, assim como RPC, a RMI fosse o mais similar possível a uma invocação local – Entretanto, invocações remotas são mais suscetíveis a falhas, pois envolvem a rede, outros computadores e outros processos – Independente da semântica escolhida, existe sempre a possibilidade de falhas – Necessário lidar com essas situações – Desempenho de chamadas remotas é muito inferior às locais 18 Implementação do RMI Um objeto A invoca um método no objeto remoto B Módulo de Comunicação Implementa o protocolo pedido-resposta Módulo de Referência remota Mantém uma tabela de referências remotas, que contém a correspondência entre referências locais e remotas. A tabela do servidor conterá uma entrada para o objeto B A tabela do cliente conterá uma entrada para o proxy de B objeto A skeleton Requisição proxy de B Resposta Modulo de comunicaçãoModulo de Ref. Remota Módulo de Referência RemotaMódulo de Comunicação Para classes B & dispatcher Objeto Remoto B cliente Servidor 19 Implementação do RMI • O software RMI – Camada de software entre a aplicação e os módulos de comunicação e referência • Proxy – Torna transparente a invocação do método remoto – Recebe a invocação, serializa os argumentos e envia a invocação através do módulo de comunicação;Quando recebe o resultado, desserializa-o e envia-o ao cliente. • Dispatcher – Recebe o pedido do módulo de comunicaçãoe encaminha-o para um skeleton. • Skeleton – Desserializa os argumentos, invoca o método no objeto local, recebe o resultado e encaminha-o no sentido inverso. 20 Exemplo: sistema de corretora de ações • Sistema para corretora cujo objetivo é permitir que os operadores tenham acesso aos valores correntes de mercado das ações de interesse • Ações de uma empresa são representadas por um objeto contendo variáveis, refletindo seu valor • Informações chegam de diferentes fontes atualizando uma ou mais variáveis de um objeto representando as ações de uma empresa 21 Exemplo: sistema de corretora de ações • Uma modelagem possível com processos com dois tipos de tarefas: – provedor de informação: recebe as atualizações de uma única fonte externa e aplica alterações nos objetos interessados (existe um para cada fonte externa) – Processo operador: objeto criado para representar uma ação que foi solicitada pelo usuário; tal objeto se inscreve (assina) no objeto provedor de informação relevante 22 Exemplo: sistema de corretora de ações Dealer’s computer Information provider Dealer External source External source Information provider Dealer Dealer Dealer Notification Notification Notification Notification Notification Notification Notification Notification Dealer’s computer Dealer’s computerDealer’s computer Notification Notification 23 Sistema de corretora de ações - Arquitetura • Objeto de interesse: trata-se do objeto que sofre mudanças de estado e que estas podem ser de interesse de outros participantes • Evento: ocorre em um objeto de interesse (em função da execução de um método) • Notificação: objeto que contém informações sobre um evento, como por exemplo objeto de interesse, método invocado e horário da ocorrência • Assinante: objeto que se inscreveu em algum tipo de evento em outro objeto • Objetos observadores: seu principal objetivo é desvincular os assinantes dos objetos de interesse, para não sobrecarregar estes últimos 24 Sistema de corretora de ações - Arquitetura subscriberobserverobject of interest Event service object of interest object of interest observer subscriber subscriber 3. 1. 2. notification notification notification notification 25 Estudo de caso: RMI Java • RMI Java estende o modelo de objetos do Java para sistemas distribuídos • Permite que objetos invoquem métodos em objetos remotos com a mesma sintaxe de invocação local • Programação distribuída simplificada pela transparência e pelo uso de uma única linguagem (Java) 26 RMI Java - Transparência • Objeto invocador sabe que o objeto é remoto, pois precisa tratar exceções remotas (RemoteException) • Objeto invocado sabe que poderá ser acessado por um objeto remoto, pois precisa implementar a interface Remote • Diferenças na semântica da passagem de parâmetros • Objetos acessíveis externamente devem considerar possíveis invocações concorrentes 27 RMI Java – Interfaces Remotas •GraphicalObject é um objeto que representa um elemento gráfico, com atributos posição, tamanho, etc. Sua classe deve implementar a interface Serializable • Em Shape, um método retorna inteiro e o outro, um objeto •Em ShapeList, método newShape() recebe um objeto e retorna um objeto que é acessível remotamente import 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; } 28 RMI Java - Passagem de Parâmetro • Todos os parâmetros de um método são de entrada, e o retorno do método é o único parâmetro de saída • Qualquer parâmetro que corresponda a um objeto de classe serializável pode ser parâmetro de entrada ou saída • Quando um objeto com Remote é serializado, a referência ao mesmo é serializada e não seu conteúdo, anotando-se nome da classe • Informações de classe são registradas com URL de forma a permitir que o cliente que acessa o objeto remoto possa carregar a definição da classe 29 RMI Java - Passagem de Parâmetro • Passagem de objetos Remote: quando tipo de parâmetro ou retorno corresponde a objeto com interface Remote, então é enviada uma referência ao objeto - como o Shape retornado por newShape() • Passagem de objetos não Remote: todos objetos não remotos (serializáveis) são copiados e passados por valor -caso do GraphicalObject em getAllState() e newShape() import 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; } 30 RMI Java - Download de classes • Download de classes em Java permite que classes sejam carregadas dinamicamente de uma JVM para outra, sob • Demanda RMIregistry: – Vinculador do RMI Java: mapeia nomes textuais em referências a objetos acessíveis – Deve rodar uma instância em cada máquina que tenha objetos que podem ser acessados por clientes remotos (responsável pelos objetos locais) – Objetos são identificados por //host:porta/nomeObjeto onde host e porta se referem ao registry (host também é o local do objeto) 31
Compartilhar