30
Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Embed Size (px)

Citation preview

Page 1: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Objetos Distribuídos e invocação remota

Kades Pinto 16628

Pedro Vinicius Machado 16640

Matheus Dobrowolsky 19308

Page 2: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Introdução

Programação para aplicativos distribuidos: Aplicativos compostos de programas que estão em coperação, executados em diferentes processos os quais executam (invocam) operações de outros processos

Adaptações foram feitas para que isso acontecesse, estenendo-se modelos de programações ja existentes.

Chamada de procedimentos convencional -> chamada de procedimento remoto

Programação baseada em objetos (invoçação local) -> utilização de invocação a metodo remoto(RMI – Remote method invocation)

Programação baseada em processos: permite objetos a serem notificados de eventos que ocorrem em outros objetos, os quais o interessam.

Page 3: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Interfaces

Sua comunicação é feita através de chamadas de procedimentos ou por acesso direto às variaveis feitas, controladas por uma interface explicita feita para cada módulo o qual define os procedimentos e variaveis que podem ser acessados pelos outros modulos, ocultando suas informações, só deixando presente as que são vistas pela interface.

Page 4: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Interface em sistemas distribuidos

Interfaces remotas: Uma interface remota especifica métodos disponiveis de um objeto passíveis de invocações para que seja feita por outros processos.

Define quais serão os tipos de argumentos entradas e saídas

Os metodos das interfaces remotas podem passar objetos como argumentos e resultados de metodos, ou referencias para os mesmos.

Page 5: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Linguagens de definição de interface

O Mecanismo de RMI pode ser integrado a linguagens de programação particulares caso inclua notações adequadas para definir interfaces, permitindo que os parâmetros de entrada e saída sejam mapeados no uso normal de parâmetros da linguagem.

As linguagens de definição de interface (IDLs) são projetadas para permitir que objetos implementados em diferentes linguages invoquem uns aos outros.

Page 6: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Linguages de definição de interface

- PersonList especifica métodos disponíveis para RMI em um objeto remoto.

- addPerson especifica seu argumento como de entrada (in)

- getPerson recupera uma instância de Person pelo nome e define seu segundo argumento como de saída (out)

- (CORBA (abreviado de Common Object Request Broker Architecture))

Page 7: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos MODELO DE OBJETO

Programas orientados a objetos consistem em conjuntos de objetos que interagem entre si.

Os objetos podem ser acessados por meio de referências.

Uma interface fornece a definição das assinaturas de um conjunto de métodos.

Uma ação é iniciada por um objeto invocando um método de outro objeto.

Os programas podem encontrar muitos tipos de erros e condições inesperadas, de diversos graus de gravidade.

É necessário fornecer uma maneira de liberar espaço ocupado pelos objetos, quando eles não são mais necessários

Page 8: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos OBJETOS DISTRIBUIDOS

O estado de um objeto consiste nos valores de suas variáveis de instância.

Podem adotar arquitetura cliente-servidor. Os objetos são gerenciados pelos servidores e seus clientes invocam seus métodos usando invocação a método remoto, RMI.

Podem adotar outros modelos para usufruir de vantagens.

Objetos clientes e servidores em diferentes processos impõe encapsulamento.

Page 9: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos

MODELO DE OBJETO DSTRIBUIDO

Cada processo contem um conjunto de objetos, que podem receber invocações locais e remotas, e outros podem receber apenas invocações locais.

COULOURIS (2007).

Page 10: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos MODELO DE OBJETO DSTRIBUIDO

Uma referencia de objeto remoto é um identificador que pode ser usado por todo um sistema distribuído para se referir a um único objeto remoto.

Interface remotas: A classe de um objeto remoto implementa os métodos de sua interface remota.

COULOURIS (2007).

Page 11: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos MODELO DE OBJETO DSTRIBUIDO

Ações em um sistema distribuído: Em sistemas não distribuídos, uma ação é inicia da por uma invocação ao método. No caso distribuído os objetos envolvidos podem ser localizados em diferentes processos ou computadores.

Os aplicativos distribuídos podem fornecer objetos remotos com métodos para instanciar objetos que podem ser acessados pela RMI.

COULOURIS (2007).

Page 12: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos PROBLEMAS DE PROJETO PARA RMI

Escolha da semântica de aplicação:

Invocação Talvez:

Falhas por omissão, se a mensagem de invocação ou resultado for perdida;

Falhas por colapso, quando o servidor que contem o objeto falha.

Invocação pelo menos uma vez:

Falhas por colapso, quando o servidor que contem o objeto falha.

Falhas arbitrarias. Múltipla execução do mesmo método criando valores errados.

Invocação máximo uma vez:

O ativador recebe um resultado quando o método foi executado exatamente uma vez.

Page 13: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos IMPLEMENTAÇÃO RMI

Modulo de comunicação:

Cooperam para executar o protocolo requisição-resposta, que tramite mensagens de requisição e resposta entre o cliente e servidor.

Modulo de referencia remota:

Responsável pela transformação entre referencias de objeto local e remoto e pela criação de referencias de objeto remoto.

Serventes:

Uma instancia de uma classe que fornece o corpo do objeto remoto. É o servente que trata as requisições remotas repassadas pelo correspondente.

Page 14: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Comunicação entre objetos distribuídos IMPLEMENTAÇÃO RMI

Programas clientes e servidores:

Contem as classes para os despachantes, junto com as implementações das classes de todos os serventes.

Vinculador:

É um serviço separado que mantem uma tabela contendo mapeamentos dos nomes textuais para referencias de um objeto remoto.

Threads no servidor:

Evitam a execução de uma invocação remota que atrase uma outra, geralmente os servidores criam uma thread para cada invocação remota.

Invocação de objetos remotos:

Para evitar desperdício de recursos e execução, os servidores de objetos remotos serão iniciados somente quando necessários ao cliente.

Page 15: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Chamada de procedimento remoto(RPC)

Processo cliente chama um procedimento que está sendo executado em um processo servidor.

Não suporta referências de objeto remoto.

Implantado sobre o protocolo requisição-resposta.

Page 16: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308
Page 17: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: RPC da Sun

RPC Sun – Projetado para comunicação cliente-servidor no sistema de arquivos de rede NFS.

Opção de chamada de procedimento remoto sobre UDP ou TCP.

RPC Sun – Fornece uma linguagem de interface XDR e um compilador de interface rpcgen.

Page 18: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: RPC da Sun

XDR – Linguagem de definição de interface. (Notação primitiva)

Não permite a especificação de nomes de interface.

Definição de procedimento especifica a assinatura e o número identificador de procedimento.

Apenas um parâmetro de entrada.

Parâmetro de saída retornado em apenas um resultado.

Assinatura de saída consiste no tipo de resultado, no nome do procedimento e no tipo de parâmetro de entrada.

Page 19: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

const MAX = 1000;

typedef int FileIdentifier;

typedef int FilePointer;

typedef int Lenght;

struct Data{

int length;

char buffer[MAX];

};

struct writeargs{

FileIdentifier f;

FilePointer position;

Data data;

};

struct readargs{FileIndentifier f;FilePointer position;Length length;

};

Program FILEREADWRITE{version Version{

void WRITE(writeargs) =1;

Data READ(readargs) = 2;

} = 2;} = 9999;

Page 20: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: RPC da Sun

Notação para definir constantes, typedefs, estruturas, tipos enumerados, uniões e programas, são fornecidos pela linguagem de definição de interface.

Compilador de interface rpcgen gera:

Procedimento stub no cliente;

Procedimento main, despachante e procedimento stub no servidor.

Procedimentos de empacotamento e desempacotamento de XDR no servidor.

Page 21: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: RPC da Sun

Vinculação (binding) – Serviço de vinculação local chamado de mapeador de porta (port mapper), executado em cada computador.

Autenticação – Campos adicionais nas mensagens de requisição e resposta para autenticação das informações passadas entre cliente e servidor. Suporta protocolos de autenticação diferentes.

Nenhum.

Estilo UNIX.

Baseado em uma chave de compartilhada para assinar as mensagens RPC.

Autenticação Kerberos.

Page 22: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Eventos e notificações

Objeto reage a uma interação ocorrida em outro objeto.

Notificações de eventos são basicamente assíncronas e determinadas pelos receptores.

Paradigma publicar-assinar(publish-subscriber).

Características principais dos sistemas distribuídos em eventos:

Heterogêneos – notificações de evento são usadas como meio de comunicação entre objetos distribuídos.

Assíncronos – as notificações são enviadas de forma assíncrona pelos objetos geradores de eventos, para todos os objetos que fizeram uma assinatura deles.

Page 23: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Eventos e notificações

Uma fonte de evento pode gerar um ou mais tipos diferentes de eventos.

Cada evento tem atributos que especificam informações sobre este evento. Tipos e atributos são utilizados na inscrição dos eventos e notificações.

Page 24: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Eventos e notificações: Participantes da notificação de eventos distribuída Arquitetura projetada de modo a desvincular os geradores de publicação dos

assinantes.

Funções dos objetos participantes : Objeto de interesse: é o objeto que sofre mudanças de estado, como resultado da

invocação de seus métodos.

Evento: o evento ocorre em um objeto de interesse como resultado da conclusão da execução de um método.

Notificação: é um objeto que contém informações sobre um evento.

Assinante: é um objeto que se inscreveu em algum tipo de evento ou em outro objeto.

Objetos observadores: desvincula um objeto de interesse de seus assinantes.

Gerador de eventos (Publisher): objeto que declara que vai gerar notificações de tipos de eventos em particular. Pode ser um objeto de interesse ou um observador.

Page 25: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308
Page 26: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Eventos e notificações: Participantes da notificação de eventos distribuída Semântica de entrega de notificações – várias garantias de entrega

podem ser fornecidas para as notificações.

Função dos observadores – Processa as notificações desempenhando diferentes funções.

Encaminhamento: envia as notificações para os assinantes em nome de um ou mais objetos de interesse.

Filtragem de notificações: adiciona filtros para reduzir o número de notificações recebidas.

Padrões de eventos: o objeto que se inscreve especifica os padrões de evento que são de seu interesse. O padrão especifica um relacionamento entre vários eventos.

Caixas de correio de notificação: guarda as notificações até que o assinante esteja pronto para recebê-las.

Page 27: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: especificação de eventos distribuídos Jini

Permite que objetos em diferentes máquinas virtuais Java (JVM) se inscreva e receba notificações sobre eventos em outras máquinas virtuais.

Principais objetos envolvidos na especificação de eventos distribuídos Jini: Geradores de evento: permite que outros objetos se inscreverem em seus

eventos e que gera notificações.

Escutador de evento remoto: objeto que pode receber notificações, assinante.

Eventos remotos: objeto que é passado por valor para os escutadores de eventos remoto.

Agentes intermediários: podem ser colocados entre um objeto de interesse e um assinante.

Page 28: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: especificação de eventos distribuídos Jini

Eventos Jini são fornecidos através das seguintes interfaces e classes: RemoteEventListener: fornece um método chamado notify.

Remote Event: esta classe tem variáveis de instância que contêm:

Uma referência para o gerador de eventos no qual o evento ocorreu.

Um identificador de evento, que especifica o tipo de evento nesse gerador de eventos.

Um número de sequência, que se aplica aos eventos de um determinado tipo.

Um objeto empacotado.

EventGenerator: fornece um método chamado register. Os argumentos passados para este método são:

Identificador de evento, que especifica o tipo de evento.

Objeto empacotado a ser enviado de volta com cada notificação.

Referência remota para um objeto escutador de evento.

Período de arrendamento (leasing) que especifica a duração do arredondamento exigida pelo assinante.

Page 29: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Estudo de caso: especificação de eventos distribuídos Jini

Agentes intermediários: são interpostos entre um gerador de eventos e um assinante, podem executar diversas funções úteis.

Page 30: Objetos Distribuídos e invocação remota Kades Pinto 16628 Pedro Vinicius Machado 16640 Matheus Dobrowolsky 19308

Referências

Sistemas Distribuícos: Conceitos e Projetos (Coulouris, Dollimore, Kindberg)

http://www.eg.bucknell.edu/~cs379/DistributedSystems/rmi_tut.html