Escolar Documentos
Profissional Documentos
Cultura Documentos
br
SISTEMAS DISTRIBUÍDOS
CHAMADA REMOTA DE
MÉTODO (RMI) APLICADA
NA PRÁTICA
Autor: Dr. Sidartha Azevedo Lobo de Carvalho
Revisor: Lizandro de Souza
INICIAR
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 1/30
11/20/22, 1:11 PM Ead.br
introdução
Introdução
Nesta unidade você vai aprender sobre as chamadas remotas de métodos a
partir do protocolo RMI Java. Vai entender como funciona o protocolo RMI e as
similaridades com a chamada remota de procedimento (RPC). Além disso, vai
aprender sobre as arquiteturas de sistemas distribuídos não centralizadas,
como a peer-to-peer. Em complemento, vai entender como funciona a
comunicação dos grupos que não possuem entidade centralizada. Por fim, você
vai praticar com a implementação de um sistema de somar dois números a
partir de uma interface remota, entendendo todos os passos da implementação
até a execução do cliente e do servidor em uma máquina local. Na sequência,
vamos implementar uma calculadora remota, onde os métodos serão
implementados para serem acessados de forma remota por outra entidade.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 2/30
11/20/22, 1:11 PM Ead.br
Chamada de
Método Remota
RMI
A
Remote Method Invocation
(RMI), também chamada de invocação remota de
método é semelhante à chamada remota de procedimento. A principal
diferença é que na chamada remota de procedimento é necessário estabelecer
a comunicação com troca de mensagens de forma direta, enquanto na RMI é
possível usar os conceitos de orientação a objetos, podendo usar os recursos
como herança, polimorfismo, dentre outros de forma transparente. Para ajudar
no entendimento, veja as definições a seguir.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 3/30
11/20/22, 1:11 PM Ead.br
Agora vamos ver um pouco das diferenças entre as duas abordagens, descritas
por Coulouris (2013, p. 204):
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 4/30
11/20/22, 1:11 PM Ead.br
Além disso, pode haver concorrência no acesso aos recursos usando RMI, pois
objetos de diferentes computadores podem tentar acessar o mesmo método de
forma concorrente. Por isso, surge a possibilidade de conflito de acessos.
Entretanto, visto que os dados do objeto somente podem ser acessados pelos
métodos definidos na interface, garante que não haverá acessos indevidos ou
uso livre de execução de código. No caso de problemas de concorrência, é
possível aplicar algoritmos de proteção de recursos, como os semáforos dos
sistemas operacionais. O RMI também permite que um objeto remoto seja
tratado como um objeto local, podendo fazer cache e executar as operações
necessárias de forma local.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 5/30
11/20/22, 1:11 PM Ead.br
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 6/30
11/20/22, 1:11 PM Ead.br
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 7/30
11/20/22, 1:11 PM Ead.br
#PraCegoVer:
Ilustra a arquitetura de aplicações RMI. A imagem contém na sua
base, o desenho de uma nuvem com a inscrição Rede de comunicação RMI. Esta
nuvem aponta para dois grandes quadros, representando o cliente e o servidor.
Destro destes dois quadros, existe objeto, interface e gerenciador de referências
remotas.
Implementação
Em nível de implementação, há mais alguns conceitos que precisam ser
entendidos: stub e skeleton. O stub é um objeto que atua como um gateway no
lado do cliente. O stub é responsável por rotear todas as requisições do lado do
cliente e por representar o objeto remoto também no lado do cliente. Quando o
cliente invoca um método ao stub, acontece o seguinte:
Na próxima seção você vai aprender um pouco mais sobre a arquitetura peer-
to-peer e na seção seguinte vamos aplicar os conceitos aprendidos para
implementar uma chamada remota de método usando RMI.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 8/30
11/20/22, 1:11 PM Ead.br
praticar
Vamos Praticar
Nos sistemas distribuídos é necessário haver comunicação entre os elementos que
compõem o sistema distribuído. Para permitir essa comunicação, é necessário que os
elementos utilizem protocolos conhecidos de comunicação. Dado que o RMI é um
protocolo para comunicação em sistemas distribuídos, o RMI possui uma abstração a
mais quando comparada ao padrão de comunicação por troca de mensagens comum,
essa abstração a mais é:
a)
Enviar mensagens via UDP.
b)
Enviar mensagens via TCP.
c)
Fazer uso de sockets.
d)
Poder acessar um objeto do servidor.
e)
Estabelecer comunicação por troca de mensagens de forma manual.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 9/30
11/20/22, 1:11 PM Ead.br
Arquitetura Peer-to-
Peer
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 10/30
11/20/22, 1:11 PM Ead.br
Modelo Peer-to-peer
O principal objetivo dos sistemas peer-to-peer é prover o compartilhamento de
recursos em grande escala e suportar serviços e aplicativos distribuídos, esse
tipo de sistema permite abstrair a necessidade de servidores centralizados e a
infraestrutura necessária para manter os servidores centralizados ativos.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 11/30
11/20/22, 1:11 PM Ead.br
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 12/30
11/20/22, 1:11 PM Ead.br
reflita
Reflita
Você consegue visualizar outro
padrão/arquitetura de comunicação
diferente do cliente-servidor e do peer-
to-peer? Como seria a comunicação
nessa nova visão de arquitetura? Quais
os benefícios ela trará para os sistemas
atuais? Como se diferencia das
arquiteturas convencionais cliente-
servidor e peer-to-peer? Reflita sobre
esses questionamentos!
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 13/30
11/20/22, 1:11 PM Ead.br
Comunicação em Grupo
Os protocolos de comunicação em grupo fornecem as regras que devem ser
seguidas para que haja comunicação entre os elementos de uma rede peer-to-
peer. Os protocolos mais conhecidos são: BitTorrent, Gnutella e Gnutella2. Por
ser o mais conhecido, vamos descrever em detalhes como funciona o BitTorrent.
O BitTorrent foi criado por Bram Cohen no ano de 2001. Durante a concepção
desse protocolo, somente havia comunicação entre dois computadores na rede.
Estima-se que o tráfego de rede mundial somente dos dados que usam o
BitTorrent corresponde a aproximadamente 35% de todo o tráfego da internet.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 14/30
11/20/22, 1:11 PM Ead.br
saiba
mais
Saiba mais
Há um aplicativo que usa o protocolo
BitTorrent que também se chama BitTorrent, é
um dos aplicativos mais usados no mundo. O
aplicativo possui diversas funcionalidades para
compartilhamento de arquivos e
gerenciamento do tráfego da rede. Para saber
mais sobre este aplicativo, consulte o site
oficial disponíve.
ACESSAR
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 15/30
11/20/22, 1:11 PM Ead.br
praticar
Vamos Praticar
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 16/30
11/20/22, 1:11 PM Ead.br
a)
O peer-to-peer possui entidades centralizadas para gerenciar os recursos.
b)
O cliente-servidor permite que os elementos da rede se comuniquem de
forma direta.
c)
O peer-to-peer permite que cada computador da rede acesse diretamente
qualquer outro computador da rede.
d)
O cliente-servidor exige o uso de servidores intermediários entre a
comunicação dos clientes.
e)
O peer-to-peer necessita de, pelo menos, 10 elementos para constituir uma
rede.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 17/30
11/20/22, 1:11 PM Ead.br
Implementação de
Projeto Prático 1
Primeiro, é necessário criar a interface remota, essa interface vai indicar o que
os objetos remotos podem acessar nesse objeto.
import java.rmi.*;
Note que a interface acima estende da interface Remote, usada para indicar que
esse método será acessado de forma remota. Após isso, vamos implementar a
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 18/30
11/20/22, 1:11 PM Ead.br
interface criada.
import java.rmi.*;
import java.rmi.server.*;
super();
return num1+num2;
}}
rmic SomadorRemoto
rmiregistry 8000
import java.rmi.*;
import java.rmi.registry.*;
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 19/30
11/20/22, 1:11 PM Ead.br
try{
Naming.rebind("rmi://localhost:8000/soma", stub);
}catch(Exception e){System.out.println(e);}
} }
Note que foi atribuído o elemento criado stub para ser acessado pela URL
rmi://localhost:8000/soma, na porta 8000. Agora vamos criar a classe cliente,
responsável por acessar o serviço de soma no servidor.
import java.rmi.*;
try{
Somador stub =
(Somador)Naming.lookup("rmi://localhost:8000/soma");
System.out.println(stub.soma(34,4));
}catch(Exception e){}
} }
javac Servidor.java
java Servidor
javac Cliente.java (abra uma nova aba para executar o do cliente)
java Cliente
O valor retornado pela execução do programa Cliente deve ser a soma dos
números, ou seja, 38.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 20/30
11/20/22, 1:11 PM Ead.br
praticar
Vamos Praticar
O RMI é o protocolo que permite a invocação remota de métodos de forma facilitada,
a partir do código-fonte. A implementação RMI do Java possui diversos métodos que
permitem a manipulação dos recursos em um sistema que usa RMI. Diante disso, para
que serve o método Naming.rebind() do RMI Java?
a)
Converter uma URL em um objeto local.
b)
Atribuir um nome a um objeto local.
c)
Finalizar uma conexão com o servidor remoto.
d)
Criar uma URL para acessar todos os recursos do servidor.
e)
Associar uma URL a um objeto do servidor RMI.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 21/30
11/20/22, 1:11 PM Ead.br
Implementação de
Projeto Prático 2
super();
return num1+num2;
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 22/30
11/20/22, 1:11 PM Ead.br
return num1-num2;
return num1*num2;
return num1/num2;
} }
try{
Naming.rebind("rmi://localhost:8000/calculadora",
calculadora);
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 23/30
11/20/22, 1:11 PM Ead.br
}catch(Exception e){System.out.println(e);}
} }
try{
System.out.println(calculadora.somar(34,4));
System.out.println(calculadora.subtrair(34,4));
System.out.println(calculadora.multiplicar(10,4));
System.out.println(calculadora.dividir(40,4));
}catch(Exception e){}
} }
praticar
Vamos Praticar
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 24/30
11/20/22, 1:11 PM Ead.br
a)
Classes.
b)
Javac.
c)
Calculadora.
d)
Interfaces.
e)
rmi://localhost:8000.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 25/30
11/20/22, 1:11 PM Ead.br
indicações
Material
Complementar
FILME
Gattaca
Ano:
1997
Comentário:
Esse filme vai auxiliar no entendimento dos
sistemas distribuídos usados para a internet das coisas,
permitindo a identificação de pessoas de diversas
formas, inclusive pela análise do DNA. A interação entre
os diversos sistemas distribuídos presentes no filme nos
dá uma visão futurística de como será o nosso cotidiano.
Para conhecer mais sobre o filme, acesse o trailer
disponível.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 26/30
11/20/22, 1:11 PM Ead.br
TRAILER
LIVRO
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 27/30
11/20/22, 1:11 PM Ead.br
conclusão
Conclusão
Nesta unidade você aprendeu como funciona e como utilizar o protocolo RMI
usando a linguagem Java. Entendeu a arquitetura geral de sistemas que usam o
protocolo RMI bem como sua implementação. Você descobriu que há sistemas
não centralizados e como ocorre a comunicação entre estes sistemas com a
arquitetura peer-to-peer. Para praticar o que aprendeu, mostramos dois
projetos práticos, descrevendo passo a passo como deve ser feita a
implementação de um sistema distribuído. Implementamos diversos métodos
de uma calculadora para efetuar a soma, subtração, multiplicação e divisão de
números a partir de uma chamada remota usando o RMI de forma local.
Implementamos o cliente e o servidor da calculadora.
referências
Referências
Bibliográficas
COULOURIS, G.
Sistemas Distribuídos
: Conceitos e Projeto [recurso eletrônico,
Minha Biblioteca]. São Paulo: Bookman, 2013.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 28/30
11/20/22, 1:11 PM Ead.br
JAVED, A.
Criando projetos com Arduino para a Internet das Coisas
-
Experimentos com aplicações do mundo real – Um guia para o entusiasta de
Arduino ávido por aprender. [S.l.]: Novatec, 2017.
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 29/30
11/20/22, 1:11 PM Ead.br
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 30/30