Sistemas Distribuídos - Comunicação Distribuída – RPC
-
Upload
adriano-teixeira-de-souza -
Category
Technology
-
view
3.608 -
download
1
description
Transcript of Sistemas Distribuídos - Comunicação Distribuída – RPC
Comunicação Distribuída – RPC
Prof. Adriano Teixeira de Souza
Estratégias diferentes que permitem a comunicação entre aplicações distribuídas.
Tipos distintos de comunicação em um sistema distribuído:
◦ Sockets
◦ RPC – Remote Procedure Call
◦ RMI - Remote Method Invocation
◦ CORBA – Commom Object Request Broker Architecture ◦ EJB – Enterprise Java Bean
◦ Web Services
Prof. Adriano Teixeira de Souza
Motivação:
◦ Dificuldade em programar para Ambientes
distribuídos ◦ Desvantagem do socket
◦ Foco na aplicação
Prof. Adriano Teixeira de Souza
Objetivo
◦ Tornar fácil a implementação de aplicações
distribuídas
◦ Permitir chamada de procedimento remoto como se fosse local
Prof. Adriano Teixeira de Souza
Um processo A chama um procedimento p de um processo B, entrando em estado de espera
O processo B passa a executar o procedimento p, e ao seu término faz um reply para o processo A
O processo A volta à sua execução normal após ter recebido o reply
Prof. Adriano Teixeira de Souza
Marshalling:
◦ Linearização de uma coleção de itens de dados estruturados
◦ Tradução dos dados em formato externo
Unmarshalling:
◦ Tradução do formato externo para o local
◦ Restauração dos itens de dados de acordo com sua estrutura
Prof. Adriano Teixeira de Souza
Esconde o código das chamadas a rede em procedimentos chamados stubs.
◦ Stubs – procedimentos que contem código de
chamadas de rede
◦ Esconde detalhes como socket.
Prof. Adriano Teixeira de Souza
1. Criar aplicação convencional
2. Dividir o programa em duas partes
3. Criar uma especificação rpcgen
4. Executar o rpcgen
5. Criar servidor
6. Criar cliente
7. Compilar cliente
8. Compilar servidor
9. Executar servidor e cliente
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Client stub
◦ intercepta a chamada
◦ empacota os parâmetros (marshalling)
◦ envia mensagem de request ao servidor
Server stub
◦ recebe a mensagem de request
◦ desempacota os parâmetros (unmarshalling)
◦ chama o procedimento, passando os parâmetros
◦ empacota o resultado
◦ envia mensagem de reply ao cliente
Client stub
◦ recebe a mensagem de reply
◦ desempacota o resultado
◦ passa o resultado para o cliente
Prof. Adriano Teixeira de Souza
Máquina do Cliente Máquina do Servidor
Kernel Kernel
cliente servidor
empacota
parâmetros
desempacota
resultados
desempacota
parâmetros
empacota
resultados
transporte de mensagens
via rede
1 2
3
4
0 5 6
7
8
9
10 11
Prof. Adriano Teixeira de Souza
Uma maneira de fazer comunicação em sistemas distribuídos de uma forma transparente.
Proposta por Birrel e Nelson em 1984. ◦ Birrell & Nelson 1984: A. D. Birrell and B. J. Nelson. ``Implementing
remote procedure calls.'' ACM Transactions on Computer Systems, 2(1):39-59
Um procedimento numa máquina A chama um procedimento numa máquina B.
Para o programador, tudo se parece como se os dois procedimentos fizessem parte do mesmo programa.
Prof. Adriano Teixeira de Souza
O sistema (middleware) se encarrega da comunicação entre as máquinas.
Implementação popular: Sun rpcgen desenvolvido no final dos anos 80.
Desenvolvimentos da idéia de RPC: ◦ CORBA - Common Object Request Broker Architecture
◦ Java RMI - Remote Method Invocation
◦ DCOM - Distributed Component Object Model
Prof. Adriano Teixeira de Souza