Você está na página 1de 46

Sistemas Distribudos RPC x RMI

Edeyson Andrade Gomes www.edeyson.com.br

Roteiro da Aula

Chamada Remota a Procedimento


Definio Passagem de Parmetros STUBS Semntica de Falhas

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Chamada Remota a Procedimento

RPC
Encapsula a troca de mensagens em um conceito usual da programao centralizada Conceito simples
Problemas:
Passagem de parmetros e resultados entre espaos de endereamento de memria diferentes Formato dos dados em diferentes plataformas Falhas nas mquinas e na comunicao

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
uma tcnica muito usada na implementao de sistemas operacionais distribudos Funcionamento de uma chamada de procedimento convencional (local): read(fd, buffer, nbytes) Ordem inversa dos parmetros na pilha.

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Variveis locais de main SP Variveis locais de main nbytes buffer fd endereo retorno Variveis locais de read Variveis locais de main SP

SP

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Funcionamento de RPC
Como fazer uma RPC transparente? Marshaling
Empacotamento de Parmetros

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Stub do cliente
empacota desempacota

Stub do servidor
chamada

chamada

Cliente
retorno desempacota empacota

Servidor

retorno

Kernel

Kernel

Mquina do cliente
8

Transmisso de mensagens na rede

Mquina do servidor
www.edeyson.com.br

Sistemas Distribudos - RPC e RMI

RPC

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC

10

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC Passagem de Parmetros


Na chamada de procedimento convencional, 3 formas:
Por Valor Referncia Cpia

11

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC

Stub do cliente sum N=sum(4,7) 4 7

Stub do servidor sum 4 7


sum(i,j) int i , j; { return (i + j); }

Ncleo

Ncleo

Mquina do cliente

Mquina do servidor

12

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC

Passagem de Parmetros
Stubs fazem o marshaling de parmetros
Empacotamento Converso de formatos

Representao de Dados
Arquiteturas diferentes:
Cdigos de caracteres
ASCII, EBCDIC

Tamanho e representao dos dados


ordem dos bytes (Alta ou Baixa Ordem) nmeros em complemento de 1 ou 2

13

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC Solues:
Usar um formato intermedirio (forma cannica)

Pode provocar converses desnecessrias


Soluo: Indicar o formato usado no incio da mensagem
Flag

14

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC

Passagem de Parmetros por Referncia (Ponteiros)


Uso de Cpia e Restaurao
O Stub do cliente copia a varivel apontada pelo parmetro para a mensagem local O Stub do servidor recebe e desempacota a mensagem

15

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Passagem de Parmetros por Referncia (Ponteiros)
Uso de Cpia e Restaurao
O Stub do servidor recebe e desempacota a mensagem
Cria uma rplica da varivel em seu espao de endereamento Chama o servidor, passando como parmetro um ponteiro para sua varivel Empacota o valor de sua varivel e envia ao Stub do cliente Ao receber a mensagem de resposta com a varivel modificada, o Stub do cliente a restitui ao cliente

16

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RPC
Passagem de Parmetros por Referncia (Ponteiros)
Uso de Cpia e Restaurao
Uma das cpias pode ser economizada quando o parmetro apenas uma entrada, ou apenas uma sada para o servidor

Resoluo remota de ponteiros

17

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

STUBs
Os Stubs (do cliente e do servidor) so cdigos que encapsulam a comunicao entre processos e so gerados automaticamente a partir de uma especificao
IDL
Linguagem de Definio de Interface Independe de plataforma ou linguagem

18

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

STUBs
[ uuid (12345678-1234-1234-1234-123456789ABC), version(1.0) ] interface OperacoesH { long soma([in] int a, [in] int b); long mult([in] int a, [in] int b); void maiuscula([in, out, string] char * s); }

19

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

MIDL

20

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

MIDL

21

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

MIDL

22

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Localizao do Servidor RPC


Endereo explcito no cdigo
Unicast

Ligao Dinmica
Um processo BINDER responsvel pela ligao O servidor RPC exporta a sua interface para o BINDER O cliente importa a verso do servidor atravs do BINDER Bastante flexvel

23

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Localizao do Servidor RPC


Desvantagens da Ligao Dinmica
Overhead extra para importar e exportar interfaces BINDER pode se tornar um gargalo (componente centralizado) ou ponto de falha Replicao do BINDER gera problemas de consistncia

24

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Localizao do Servidor RPC

25

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC Semntica parecida com as LPCs quando no h falhas


Tipos de Falhas
O cliente no consegue localizar o servidor A mensagem de request perdida A mensagem de reply perdida O servidor falha depois de receber um request O cliente falha depois de enviar um request

26

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC

Deteco de falha RPC


Exceo no sistema
Perda de transparncia Diferente de procedimento centralizado

27

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


O cliente no consegue localizar o servidor
O servidor pode ter falhado
0x6ba

O cliente pode estar usando uma verso antiga da Interface, no disponvel no servidor
UUID do cliente diferente da UUID do servidor 0x6b5 Erro no BINDER

28

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC A mensagem de REQUEST perdida


Kernel usa timeout e retransmite a mensagem Aps um certo nmero de retransmisses mal sucedidas, o cliente assume que o servidor falhou, podendo tentar um outro servidor

29

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC A mensagem de REPLY perdida


Kernel usa timeout Quando o timeout expira, como o Cliente sabe o que aconteceu?
O REQUEST foi perdido? O REPLY foi perdido? O Servidor est lento?

30

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC A mensagem de REPLY perdida


Request no Idempotente
Ex.: Transferncia monetria

Criar Idempotncia aos Requests


Nmeros de seqncia na mensagem Controle de retransmisses Indicador de retransmisso no cabealho

31

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC O Servidor Falha


Como saber se o servidor falhou antes ou depois de executar um REQUEST?
Recebe, Executa e FALHA Recebe e Falha Para o cliente o problema no receber o REPLY

32

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


Existem 3 abordagens que levam a 3 semnticas diferentes:
At Least Once
Tentar at receber um REPLY

At Most Once
Termina indicando falha

Nenhuma Garantia Nenhuma delas muito atrativa


Exactly Once normalmente impossvel

33

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC O cliente falha depois de enviar um REQUEST


Pode gerar computaes rfs no servidor rfos podem trazer problemas
Gasto desnecessrio de CPU A execuo do REQUEST aps a recuperao do cliente pode gerar problemas de inconsistncia

34

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


O cliente falha depois de enviar um REQUEST
Soluo por extermnio
O cliente mantm um log de requests enviados Ao retornar de uma falha, elimina os rfos Os rfos podem ter gerado mais rfos em outras mquinas Os rfos podem ter bloqueado registros

35

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


O cliente falha depois de enviar um REQUEST
Soluo por reencarnao
O cliente faz um broadcast com seu nmero atual de encarnao, toda vez que reinicia aps uma falha. Os servidores eliminam os rfos Um particionamento na rede durante o broadcast pode gerar rfos sobreviventes O cliente descarta as respostas provenientes desses rfos

36

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


O cliente falha depois de enviar um REQUEST
Soluo por reencarnao branda
Ao chegar uma mensagem de nova encarnao, um servidor tenta localizar o proprietrio de cada processamento remoto Se no conseguir, o servidor elimina o processo em questo

37

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Falhas com RPC


O cliente falha depois de enviar um REQUEST
Soluo por expirao
Um tempo de validade T associado aos processamentos remotos, em cada servidor Quando o tempo expira, uma nova fatia de tempo deve ser requisitado para que o processo possa continuar a executar Ao reiniciar de uma falha, o cliente espera por T, antes de ficar operacional

38

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Problemas com RPC


Problemas com RPCs
Comunicao envolve apenas dois participantes (ponto-a-ponto) Resolve muitos problemas, mas no todos:
Servidor pode estar replicado em vrias mquinas Muitas vezes, para tolerar falhas, conveniente que o cliente envie a mensagem de request para todos os servidores Necessita de mltiplos RPCs

39

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI

Remote Method Invocation

RMI
Aplicao RMI
Servidor Cliente

Requisitos das Aplicaes:


Localizar Objetos Remotos
Referncias Registro de Objetos Remotos
RMI's simple naming facility rmiregistry Ferramenta de registro e resoluo de nomes Referncias remotas via parmetro

41

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI
Requisitos das Aplicaes:
Localizar Objetos Remotos Comunicao com objetos remotos
Encapsulamento de detalhes Comunicao remota Similar a chamada padro do Java

Carregar bytecodes de classes para objetos passados remotamente


Mecanismo de carga de cdigo e transmisso de dados

42

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI
Referncia remota via Registry. Servidor chama o registry para associar (bind) um nome ao objeto remoto. Cliente procura o objeto remoto por nome no registry do servidor e invoca um mtodo. Um servidor Web pode ser usado para transferncia de bytecodes entre o cliente e o servidor.

43

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI
Vantagens da Carga Dinmica de Cdigo
Download de bytecodes
Classe no definida na VM do receptor. RMI passa objetos por tipo real Mantm comportamento Introduo de tipos dinamicamente numa VM remota

44

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI Interfaces, Mtodos e Objetos


Objeto Remoto
Mtodos invocados entre VM Implementam interface Remote Remote Stub

45

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

RMI
Execuo de Mtodo Remoto

46

Sistemas Distribudos - RPC e RMI

www.edeyson.com.br

Você também pode gostar