Sistema Distribuidos- Aula4

Post on 20-Jan-2016

24 views 0 download

Transcript of Sistema Distribuidos- Aula4

Sistema Distribuido

Prof: Carlos Alberto Pereira Costa

Email:carlos.costa83@yahoo.com.br

Sistema Distribuido

Invocação RemotaIntrodução

Sistema Distribuido

Invocação RemotaIntrodução

•Como processos, objetos e serviços se comunicam emum ambiente distribuído?

•Paradigmas de Invocação Remota

•Modelos de programação para aplicativos distribuídos

• Protocolos de Pedido/Resposta• Chamada Remota de Procedimento• Invocação Remota de Método

Sistema Distribuido

Protocolo Pedido/Resposta

•Projetado para suportar a troca de mensagem típica domodelo Cliente/Servidor

•Comunicação síncrona

•Primitivas• doOperation• getRequest• sendReply

Sistema Distribuido

Protocolo Pedido/RespostaPrimitivas de Comunicação

Sistema Distribuido

Protocolo Pedido/RespostaPrimitivas de Comunicação

•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/RespostaModelo de Falha

•Se implementado sobre UDP• Falhas de Omissão• Não há garantia de entrega e de ordem da entrega

•Adicionalmente: falha do processo (crash)

•Contingência: timeouts• Retorno imediado com indicação de falha• Reenvio de requisição• Lidar com mensagens duplicadas [ servidor ]• Reenvio de resposta [ servidor ]

Sistema Distribuido

Protocolo Pedido/RespostaHypertext Transfer Protocol - HTTP

•Utilizado por navegadores web (clientes) para requisitar serviços a / e receber dados de servidores web (servidor)

•Servidores web manipulam• Dados: páginas, arquivos, imagens, applets• Programas: servlets, ASP, PHP, Python

•Requisição do Cliente• DNS hostname• Porta• Identificador do recurso

Sistema Distribuido

Protocolo Pedido/RespostaHypertext Transfer Protocol - HTTP

•Negociação de conteúdo e autenticação

•Implementado sobre TCP• Conexão entre cliente e servidor• Cliente envia pedido• Servidor processa e envia resposta• Conexão é encerrada

•Representação Externa de Dados e Empacotamento• Através de ASCII• Alguns recursos podem ser enviados em formato binário• Utilização de estruturas MIME (text/plain, text/html,

image/gif or image/jpeg. )

Sistema Distribuido

Chamada Remota de Procedimento

•RPC representa o maior avanço em computaçãodistribuída (surgiu em 1984)

•Programação de sistemas distribuídos tornou-sesimilar (ou até idêntica) a sistemas centralizados

•Alto nível de transparência

•Procedimentos em máquinas remotas são chamadoscomo se estivessem no espaço de enderaçamento loca

Sistema Distribuido

Chamada Remota de ProcedimentoQuestões de Projeto

•Estilo de programação (interfaces)

•Semântica das chamadas

•Transparência

Sistema Distribuido

Chamada Remota de ProcedimentoQuestões de Projeto - Interfaces

•Define um contrato entre seus utilizadores

•Permite modificações de implementação sem afetar osclientes do procedimento•Interfaces de Serviço• Especificação das procedures ofertadas pelo servidor• Definição dos tipos de entrada e retorno de cada

procedimento

•Benefícios• Abstração de detalhes de implementação• Permite implementação em diferentes linguagens• Permite manutenção evolutiva sem afetar seus utilizadores

Sistema Distribuido

Chamada Remota de ProcedimentoQuestões de Projeto - Interfaces

•Impacto da natureza distribuída das aplicações

• Módulo cliente não acessa espaço de variáveis domódulo remoto

• Passagem de parâmetro por referência não existe

• Parâmetros de entrada e retorno são, na verdade, transmitidos entre máquinas na rede

• Parâmetros de entrada e retorno são mapeados paravariáveis ou pontos do retorno após transmissão

Sistema Distribuido

Chamada Remota de ProcedimentoIDL – Linguagem de Definição de Interfaces

•Um mecanismo RPC pode ser integrado a umaparticular linguagem de programação• Útil quando todas as partes do SD são implementadas

em uma mesma linguagem• Exemplo: Java para cliente e objeto remoto

•IDL’s

• Permite que procedures de diferentes linguagens seconectem remotamente

Sistema Distribuido

IDLExemplo

Sistema Distribuido

RPC – Como funciona?

Sistema Distribuido

CORBA, IDL, ORB’s e IIOP•CORBA - padrão da indústria para objetos distribuídos

• IDL - Interface Definition Language

•Object Request Broker – ORB, suporta a interação entre os processos

•IIOP - Internet Inter-ORB Protocol, padrão sobre TCP-IP

•Modelo• Servidor define uma interface remota de serviços• Cliente invoca serviços 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 - CORBAArquivo IDL

Sistema Distribuido

Exemplo: Hello World - CORBAArquivo IDL - Compilação

•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 - Invocação Remota de Métodos

•Conceito próximo a RPC, extendido para objetos

•Um objeto pode chamar um método (não apenas umprocedimento) em um objeto remoto

•Como em RPC, detalhes são escondidos doprogramador

Sistema Distribuido

RPC versus RMISemelhanças

•Ambos os paradigmas suportam programação cominterfaces

•Construídos sobre o protocolo pedido/resposta(request/response)

•Nível similar de transparência

Sistema Distribuido

RPC versus RMIDiferenças

•Sistemas distribuídos orientados a objetos(expressividade e poder do paradigma)

•Modelo mais sofisticado de passagem de parâmetros• Passagem de parâmetro por valor• Passagem de parâmetro por referência

Sistema Distribuido

RMI

Sistema Distribuido

Java RMI – Calculadora RemotaInterface Remota - Calculadora

Sistema Distribuido

Java RMI – Calculadora RemotaImplementação da Interface - CalculadoraImpl

Sistema Distribuido

Java RMI – Calculadora RemotaServidor

Sistema Distribuido

Java RMI – Calculadora RemotaCliente

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