Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Distribuídos
Agenda
• Introdução
• Protocolos de requisição-resposta
• Chamada de procedimento remoto
• Invocação a método remoto
• Estudo de caso: RMI Java
3
Introdução
• Esta aula trata de como os processos (ou entidades,
em um nível de abstração mais alto, como objetos ou
serviços) se comunicam em um sistema distribuído,
examinando, em particular, os paradigmas de
invocação remota.
▫ Os protocolos de requisição-resposta: troca bilateral de mensagens,
ex: cliente-servidor.
Protocolos de requisição-resposta
• Projetada para suportar as funções e as trocas de
mensagens em interações cliente e servidor
típicas.
• Normalmente é síncrona, pois o processo cliente é
bloqueado até que a resposta do servidor chegue.
• Mas pode ser assíncrona em alguns casos.
▫ útil em situações em que os clientes podem
recuperar as respostas posteriormente.
6
O protocolo de requisição-resposta
IMPLEMENTAÇÃO RMI
• Modulo de comunicação:
▫ Cooperam para executar o protocolo requisição-
resposta, que tramite mensagens de requisição e
resposta entre o cliente e servidor.
• Modulo de referencia remota:
▫ Responsável pela transformação entre referencias
de objeto local e remoto e pela criação de
referencias de objeto remoto.
• Serventes:
▫ Uma instancia de uma classe que fornece o corpo
do objeto remoto. É o servente que trata as
requisições remotas repassadas pelo
correspondente.
Comunicação entre objetos distribuídos
IMPLEMENTAÇÃO RMI
• Programas clientes e servidores:
▫ Contem as classes para os despachantes, junto com as
implementações das classes de todos os serventes.
• Vinculador:
▫ É um serviço separado que mantem uma tabela contendo
mapeamentos dos nomes textuais para referencias de um
objeto remoto.
• Threads no servidor:
▫ Evitam a execução de uma invocação remota que atrase
uma outra, geralmente os servidores criam uma thread para
cada invocação remota.
• Invocação de objetos remotos:
▫ Para evitar desperdício de recursos e execução, os
servidores de objetos remotos serão iniciados somente
quando necessários ao cliente.
Chamada de procedimento remoto(RPC)
RMI em Java
Mecanismo RMI
• Quando pensamos em uma aplicação cliente-servidor, é
comum que no programa servidor haja objetos receptores.
Entretanto, é possível que haja uma situação em que objetos
do programa cliente também sejam receptores; ou seja, que
recebam mensagens vindas do programa servidor.
• Assim, a especificação destes passos se refere aos objetos que
recebem as mensagens remotas; estes podem estar no
programa servidor ou no programa cliente.
• Para cada objeto que receber mensagens remotas (receptor),
deve-se criar uma interface que contenha a especificação
destes métodos.
• A interface deverá ser especialização da interface Remote.
• Os métodos deverão indicar que throws
RemoteException (ou seja, podem disparar a
exceçãoRemoteException)
36
Aplicação Servidor
38
Aplicação Servidor
Logo após criar a classe com a implementação dos métodos de nossa
aplicação servidora, a classe de Implementação dos métodos deve
estender UnicastRemoteObject e implementar a interface do Servidor.
39
Aplicação Servidor
40
Aplicação Cliente
41
Aplicação Cliente
42
Resumo
• Vimos três paradigmas da programação distribuída –
protocolos de requisição-resposta, chamadas de procedimento
remoto e invocação a método remoto.
• Os programas de requisição-resposta fornecem suporte leve e
mínimo para a computação cliente-servidor. Sua função mais
comum é dar suporte para RPC ou RMI.
• A "chamada de procedimento remoto" é um avanço para
programação distribuída, mas, possuir restrições
(falhas,desempenho, acesso concorrente) que limitam o seu
uso. Fornecem diversidade nas semânticas de invocação.
• O modelo de objeto distribuído é uma ampliação do modelo
de objeto local usado nas linguagens de programação
baseadas em objetos.
• As implementações de middleware da RMI fornecem
componentes (incluindo proxies, esqueletos e despachantes)
que ocultam aos programadores do cliente e do servidor os
detalhes do empacotamento, da passagem de mensagem e da
localização de objetos remotos.
Referências