Transcript
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
top related