Sistemas Distribuídos - Comunicação Distribuída – RPC

14
Comunicação Distribuída – RPC Prof. Adriano Teixeira de Souza

description

 

Transcript of Sistemas Distribuídos - Comunicação Distribuída – RPC

Page 1: Sistemas Distribuídos - Comunicação Distribuída – RPC

Comunicação Distribuída – RPC

Prof. Adriano Teixeira de Souza

Page 2: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 3: Sistemas Distribuídos - Comunicação Distribuída – RPC

Motivação:

◦ Dificuldade em programar para Ambientes

distribuídos ◦ Desvantagem do socket

◦ Foco na aplicação

Prof. Adriano Teixeira de Souza

Page 4: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 5: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 6: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 7: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 8: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 9: Sistemas Distribuídos - Comunicação Distribuída – RPC

Prof. Adriano Teixeira de Souza

Page 10: Sistemas Distribuídos - Comunicação Distribuída – RPC

Prof. Adriano Teixeira de Souza

Page 11: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 12: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 13: Sistemas Distribuídos - Comunicação Distribuída – RPC

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

Page 14: Sistemas Distribuídos - Comunicação Distribuída – RPC

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