Sistema Distribuidos- Aula4
-
Upload
neil-alexander -
Category
Documents
-
view
26 -
download
0
Transcript of Sistema Distribuidos- Aula4
![Page 2: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/2.jpg)
Sistema Distribuido
Invocação RemotaIntrodução
![Page 3: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/3.jpg)
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
![Page 4: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/4.jpg)
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
![Page 5: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/5.jpg)
Sistema Distribuido
Protocolo Pedido/RespostaPrimitivas de Comunicação
![Page 6: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/6.jpg)
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);
![Page 7: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/7.jpg)
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 ]
![Page 8: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/8.jpg)
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
![Page 9: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/9.jpg)
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. )
![Page 10: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/10.jpg)
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
![Page 11: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/11.jpg)
Sistema Distribuido
Chamada Remota de ProcedimentoQuestões de Projeto
•Estilo de programação (interfaces)
•Semântica das chamadas
•Transparência
![Page 12: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/12.jpg)
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
![Page 13: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/13.jpg)
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
![Page 14: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/14.jpg)
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
![Page 15: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/15.jpg)
Sistema Distribuido
IDLExemplo
![Page 16: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/16.jpg)
Sistema Distribuido
RPC – Como funciona?
![Page 17: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/17.jpg)
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
![Page 18: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/18.jpg)
Sistema Distribuido
CORBA e IDL
![Page 19: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/19.jpg)
Sistema Distribuido
Exemplo: Hello World - CORBAArquivo IDL
![Page 20: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/20.jpg)
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
![Page 21: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/21.jpg)
Sistema Distribuido
Exemplo: Hello World - CORBA
Servidor
![Page 22: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/22.jpg)
Sistema Distribuido
Exemplo: Hello World - CORBA
Cliente
![Page 23: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/23.jpg)
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
![Page 24: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/24.jpg)
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
![Page 25: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/25.jpg)
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
![Page 26: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/26.jpg)
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
![Page 27: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/27.jpg)
Sistema Distribuido
RMI
![Page 28: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/28.jpg)
Sistema Distribuido
Java RMI – Calculadora RemotaInterface Remota - Calculadora
![Page 29: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/29.jpg)
Sistema Distribuido
Java RMI – Calculadora RemotaImplementação da Interface - CalculadoraImpl
![Page 30: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/30.jpg)
Sistema Distribuido
Java RMI – Calculadora RemotaServidor
![Page 31: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/31.jpg)
Sistema Distribuido
Java RMI – Calculadora RemotaCliente
![Page 32: Sistema Distribuidos- Aula4](https://reader036.fdocuments.ec/reader036/viewer/2022062409/55cf97bc550346d033934c25/html5/thumbnails/32.jpg)
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