O documento discute estratégias de comunicação em sistemas distribuídos, incluindo RPC. RPC permite que um processo chame um procedimento remoto de forma transparente, como se fosse local. Isso é feito através de stubs que empacotam parâmetros e retornos para comunicação entre máquinas via rede.
2. 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
3. Motivação:
◦ Dificuldade em programar para Ambientes
distribuídos
◦ Desvantagem do socket
◦ Foco na aplicação
Prof. Adriano Teixeira de Souza
4. 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
5. 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
6. 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
7. 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
8. 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
11. 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
12. Máquina do Cliente Máquina do Servidor
2 4
1 empacota desempacota 5
0 6
parâmetros parâmetros
cliente servidor
desempacota empacota
11 7
resultados resultados
10 8
Kernel Kernel
3
transporte de mensagens
9 via rede
Prof. Adriano Teixeira de Souza
13. 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
14. 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