Вы находитесь на странице: 1из 18

Sistemas Distribudos

Comunicao Remota

Gustavo Reis
gustavo.reis@ifsudestemg.edu.br

1
- Comunicao Remota
Comunicao entre processos est no corao de todo sistema distribudo.
No tem sentido estudar sistemas distribudos sem examinar cuidadosamente os modos pelos
quais processos em mquinas diferentes podem trocar informaes.
A comunicao em sistemas distribudos sempre baseada em troca de mensagens de baixo
nvel como a oferecida pela rede subjacente.
Sistemas distribudos modernos frequentemente consistem em milhares ou at milhes de
processos espalhados por uma rede cuja comunicao no confivel, como a Internet.
Existem trs modelos de comunicao de ampla utilizao:
Chamada de procedimento remoto (Remote Procedure Call - RPC)
Middleware orientado a mensagem (Message-Oriented Middleware - MOM)
Fluxo de dados.

2
- Comunicao Remota
Chamada de procedimento remoto
Muitos sistemas so baseados em troca explcita de
mensagens entre processos.
Contudo, os procedimentos send e receive no
escondem absolutamente nada da comunicao, o
que importante para obter transparncia de acesso
em sistemas distribudos.
Proposta diferente de manipular comunicao por
Birrell e Nelson (1984).

3
- Comunicao Remota
Chamada de procedimento remoto
A sugesto permitir que programas chamassem
procedimentos localizados em outras mquinas.
Quando um processo na mquina A chama um procedimento na
mquina B, o processo chamador A suspenso, e a execuo
do procedimento chamado ocorre em B.
Informaes podem ser transportadas do chamador para quem
foi chamado nos parmetros e podem voltar no resultado do
procedimento (a semntica de uma chamada remota deve ser
idntica de uma chamada local: passa parmetros e retorna
resultados).

4
- Comunicao Remota
Chamada de procedimento remoto
A sugesto permitir que programas chamassem
procedimentos localizados em outras mquinas.
Quando um processo na mquina A chama um procedimento na
mquina B, o processo chamador A suspenso, e a execuo
do procedimento chamado ocorre em B.
Informaes podem ser transportadas do chamador para quem
foi chamado nos parmetros e podem voltar no resultado do
procedimento (a semntica de uma chamada remota deve ser
idntica de uma chamada local: passa parmetros e retorna
resultados).

5
- Comunicao Remota
Chamada de procedimento remoto

6
- Comunicao Remota
Chamada de procedimento remoto
O cliente que acessa um servio inclui um
procedimento stub para cada procedimento da
interface de servio.
A funo de um procedimento stub semelhante de
um mtodo proxy. Ele se comporta como um
procedimento local para o cliente, mas em vez de
executar a chamada, ela empacota o identificador de
procedimento e os argumentos em uma mensagem de
requisio e a envia para o servidor por meio de seu
mdulo de comunicao.
7
- Comunicao Remota
Chamada de procedimento remoto
Quando a mensagem de resposta chega, ela
desempacota os resultados.
O processo servidor contm um despachante junto
com um procedimento stub de servidor e um
procedimento de servio, para cada procedimento
na interface de servio.
O despachante seleciona um dos procedimentos stub
de servidor, de acordo com o identificador de
procedimento presente na mensagem de requisio.

8
- Comunicao Remota
Chamada de procedimento remoto
Um procedimento stub de servidor como um
mtodo esqueleto, pois ele desempacota os
argumentos presentes na mensagem de requisio,
chama o procedimento de servio correspondente
e empacota os valores de retorno para a mensagem
de resposta.
Os procedimentos de servio implementam os
procedimentos da interface de servio.

9
- Comunicao Remota
RMI Java
A RMI Java estende o modelo de objeto Java para dar suporte
para objetos distribudos na linguagem Java.
Em particular, ela permite que os objetos invoquem mtodos em
objetos remotos usando a mesma sintaxe das invocaes locais.
Alm disso, a verificao de tipo se aplica igualmente s
invocaes remotas e s locais.
Entretanto, um objeto que faz uma invocao remota sabe que
seu destino remoto, pois precisa tratar excees
RemoteException; e o implementador de um objeto remoto sabe
que remoto porque precisa implementar a interface Remote.

10
- Comunicao Remota
RMI Java
Interface remota

11
- Comunicao Remota
RMI Java
Implementao
da Interface

12
- Comunicao Remota
RMI Java
Passagem de parmetros e resultados
Na RMI Java, supe-se que os parmetros de um mtodo so
parmetros de entrada e o resultado de um mtodo um nico
parmetro de sada.
Qualquer objeto que seja serializvel isto , que implemente a
interface Serializable pode ser passado como argumento ou ser
resultado na RMI Java.
Todos os tipos primitivos e objetos remotos so serializveis.
As classes de argumentos e valores de resultado so carregadas
por download no destino pelo sistem RMI, quando necessrio.

13
- Comunicao Remota
RMI Java
Classe serializada

14
- Comunicao Remota
RMI Java
Download de classes
A linguagem Java projetada para permitir que as
classes sejam carregadas por download de uma
mquina virtual a outra.
Isso particularmente relevante para objetos
distribudos que se comunicam por meio de
invocao remota.
Se o destino ainda no possuir a classe de um
objeto passado por valor, seu cdigo ser carregado
por download automaticamente.
15
- Comunicao Remota
RMI Java
RMIregistry
O RMIregistry o vinculador da RMI Java.
Uma instncia de RMIregistry deve ser executada em cada
computador servidor que contenha objetos remotos.
Ele mantm uma tabela mapeando nomes textuais no
estilo dos URLs, em referncias para objetos remotos
contidos nesse computador.
Ele acessado por mtodos da classe Naming, cujos
mtodos recebem como argumento uma string no formato
como URL, na forma:
//nomeComputador:porta/nomeObjeto
16
- Comunicao Remota
RMI Java
Classe Naming

17
- Comunicao Remota
RMI Java
Classe serializada

18

Вам также может понравиться