You are on page 1of 32

Sistema Distribuido

Prof: Carlos Alberto Pereira Costa Email:carlos.costa83@yahoo.com.br

Sistema Distribuido

Invocao Remota Introduo

Sistema Distribuido

Invocao Remota Introduo


Como processos, objetos e servios se comunicam em um ambiente distribudo?
Paradigmas de Invocao Remota Modelos de programao para aplicativos distribudos Protocolos de Pedido/Resposta Chamada Remota de Procedimento Invocao Remota de Mtodo

Sistema Distribuido

Protocolo Pedido/Resposta
Projetado para suportar a troca de mensagem tpica do modelo Cliente/Servidor Comunicao sncrona

Primitivas doOperation getRequest sendReply

Sistema Distribuido

Protocolo Pedido/Resposta Primitivas de Comunicao

Sistema Distribuido

Protocolo Pedido/Resposta Primitivas de Comunicao


public byte[] doOperation (RemoteRef s, int operationId, byte[]arguments) public byte[] getRequest (); public void sendReply (byte[] reply, InetAddress clientHost, int clientPort);

Sistema Distribuido

Protocolo Pedido/Resposta Modelo de Falha


Se implementado sobre UDP Falhas de Omisso No h garantia de entrega e de ordem da entrega Adicionalmente: falha do processo (crash) Contingncia: timeouts Retorno imediado com indicao de falha Reenvio de requisio Lidar com mensagens duplicadas [ servidor ] Reenvio de resposta [ servidor ]

Sistema Distribuido

Protocolo Pedido/Resposta Hypertext Transfer Protocol - HTTP


Utilizado por navegadores web (clientes) para requisitar servios a / e receber dados de servidores web (servidor)

Servidores web manipulam Dados: pginas, arquivos, imagens, applets Programas: servlets, ASP, PHP, Python Requisio do Cliente DNS hostname Porta Identificador do recurso

Sistema Distribuido

Protocolo Pedido/Resposta Hypertext Transfer Protocol - HTTP Negociao de contedo e autenticao Implementado sobre TCP Conexo entre cliente e servidor Cliente envia pedido Servidor processa e envia resposta Conexo encerrada Representao Externa de Dados e Empacotamento Atravs de ASCII Alguns recursos podem ser enviados em formato binrio Utilizao de estruturas MIME (text/plain, text/html, image/gif or image/jpeg. )

Sistema Distribuido

Chamada Remota de Procedimento


RPC representa o maior avano em computao distribuda (surgiu em 1984) Programao de sistemas distribudos tornou-se similar (ou at idntica) a sistemas centralizados Alto nvel de transparncia Procedimentos em mquinas remotas so chamados como se estivessem no espao de enderaamento loca

Sistema Distribuido

Chamada Remota de Procedimento Questes de Projeto


Estilo de programao (interfaces) Semntica das chamadas Transparncia

Sistema Distribuido

Chamada Remota de Procedimento Questes de Projeto - Interfaces


Define um contrato entre seus utilizadores Permite modificaes de implementao sem afetar os clientes do procedimento Interfaces de Servio Especificao das procedures ofertadas pelo servidor Definio dos tipos de entrada e retorno de cada procedimento Benefcios Abstrao de detalhes de implementao Permite implementao em diferentes linguagens Permite manuteno evolutiva sem afetar seus utilizadores

Sistema Distribuido

Chamada Remota de Procedimento Questes de Projeto - Interfaces


Impacto da natureza distribuda das aplicaes

Mdulo cliente no acessa espao de variveis do mdulo remoto


Passagem de parmetro por referncia no existe Parmetros de entrada e retorno so, na verdade, transmitidos entre mquinas na rede

Parmetros de entrada e retorno so mapeados para variveis ou pontos do retorno aps transmisso

Sistema Distribuido

Chamada Remota de Procedimento IDL Linguagem de Definio de Interfaces


Um mecanismo RPC pode ser integrado a uma particular linguagem de programao til quando todas as partes do SD so implementadas em uma mesma linguagem Exemplo: Java para cliente e objeto remoto
IDLs

Permite que procedures de diferentes linguagens se conectem remotamente

Sistema Distribuido

IDL Exemplo

Sistema Distribuido

RPC Como funciona?

Sistema Distribuido

CORBA, IDL, ORBs e IIOP


CORBA - padro da indstria para objetos distribudos IDL - Interface Definition Language Object Request Broker ORB, suporta a interao entre os processos IIOP - Internet Inter-ORB Protocol, padro sobre TCP-IP

Modelo Servidor define uma interface remota de servios Cliente invoca servios da interface remota Stub empacota a chamada ORB envia a chamada Skeleton recebe, trata e responde

Sistema Distribuido

CORBA e IDL

Sistema Distribuido

Exemplo: Hello World - CORBA Arquivo IDL

Sistema Distribuido Exemplo: Hello World - CORBA Arquivo IDL - Compilao

idlj -fall Hello.idl (http://www.jacorb.org/download.html) Resultado HelloPOA.java (stub) HelloStub.java (stub) Hello.java (interface) HelloHelper.java HelloHolder.java HelloOperations.java

Sistema Distribuido

Exemplo: Hello World - CORBA

Servidor

Sistema Distribuido

Exemplo: Hello World - CORBA

Cliente

Sistema Distribuido

Rodando o exemplo 1 idlj -fall Hello.idl 2 javac *.java HelloApp/*.java 3 orbd -ORBInitialPort 1050& 4 java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost& 5 java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost

Sistema Distribuido

RMI - Invocao Remota de Mtodos

Conceito prximo a RPC, extendido para objetos Um objeto pode chamar um mtodo (no apenas um procedimento) em um objeto remoto Como em RPC, detalhes so escondidos do programador

Sistema Distribuido

RPC versus RMI Semelhanas Ambos os paradigmas suportam programao com interfaces Construdos sobre o protocolo pedido/resposta (request/response) Nvel similar de transparncia

Sistema Distribuido

RPC versus RMI Diferenas Sistemas distribudos orientados a objetos (expressividade e poder do paradigma) Modelo mais sofisticado de passagem de parmetros Passagem de parmetro por valor Passagem de parmetro por referncia

Sistema Distribuido

RMI

Sistema Distribuido

Java RMI Calculadora Remota Interface Remota - Calculadora

Sistema Distribuido

Java RMI Calculadora Remota Implementao da Interface - CalculadoraImpl

Sistema Distribuido

Java RMI Calculadora Remota Servidor

Sistema Distribuido

Java RMI Calculadora Remota Cliente

Sistema Distribuido

Rodando o exemplo 1 javac *.java 2 rmic CalculatorImpl (cria o Stub) 3 rmiregistry & (levanta o servidor de nomes RMI) 4 java CalculatorServer & 5 java CalculatorClient

You might also like