Você está na página 1de 38

LICENCIATURA EM CIÊNCIAS DA

COMPUTAÇÃO
SISTEMAS DISTRIBUÍDOS E PARALELOS –
PROCEDIMENTOS REMOTOS
AGENDA

29-10-2012
 INTERFACE DE COMUNICAÇÃO
 PARALELISMO

Prof. Nobre - macaba.pedro@gmail.com


 INVOCAÇÃO REMOTA DE MÉTODOS
 INTRODUÇÃO AO MODELO
 ESPECIFICAÇÃO DA INTERFACE DOS SERVIÇOS
 ARQUITETURA DO SISTEMA RPC
 RMI

2
INTERFACE DE COMUNICAÇÃO -
PARALELISMO

29-10-2012
 Existe sincronização no envio e recepção de dados
com o modelo de concorrência em termos de
processos e tarefas.

Prof. Nobre - macaba.pedro@gmail.com


 O paralelismo ocorre na programação dos
processos que actuam como servidores.
 Atendimento em simultâneo de vários clientes,
optimizando a execução global da aplicação.
 Conjugando as primitivas de recepção com os
processos ou com tarefas no interior dos processos.

3
INTERFACE DE COMUNICAÇÃO -
PARALELISMO

29-10-2012
 Na recepção múltipla, um processo atende um
pedido de cada vez. Neste caso, os restantes
clientes esperam que os pedidos anteriores sejam

Prof. Nobre - macaba.pedro@gmail.com


executados.

 Uma forma de introduzir paralelismo no servidor


é utilizar vários processos em paralelo;
 Obriga a partilha de estruturas de dados entre os
processos, como memória partilhada e sincronização.
 Programação complicada
 Múltiplos pontos de sincronização

4
INTERFACE DE COMUNICAÇÃO -
PARALELISMO

29-10-2012
 O modelo multitarefa com vários fios de execução
concorrentes, sincronizando-se no acesso a variáveis
partilhadas, trata-se de um modelo mais adequado

Prof. Nobre - macaba.pedro@gmail.com


para a programação de servidores.

 Vantagens:
 Programação simples
 Código identico a um servidor sequencial
 Introdução da sincronização no acesso a estruturas de
dados partilhadas
 Permite explorar situações de bloqueio da tarefa durante o
serviço de um pedido (e.g. acesso ao disco)
 Partilha de dados e sincronização de várias tarefas
 Tira partido de possíveis multiprocessadores na máquina 5
servidor
MODELO DE CHAMADA DE PROCEDIMENTO REMOTO

29-10-2012
CLIENTE SERVIDOR

Prof. Nobre - macaba.pedro@gmail.com


Invocação do Procedimento Remoto
Bloqueia-se

Execução
Cliente do
Bloqueado Pedido

Retorna a Devolução dos Parâmetros de Resposta


Execução

6
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 Permite a transferencia de controlo e dados entre
espaços de endereçamento disjuntos quer
residentes na mesma maquina ou em maquinas
distintas.

 Metodologia de programação distribuida


associada ao modelo Cliente / Servidor com o
objectivo de retirar do programador a
7
discrepancia existente em:
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 Modelos de mensagens

 A interface de programação suportada em


mensagens ser intuitiva e a sua ligação ao modelo
de programação das linguagens procedimentais ser
delicada, por causa da semantica diferente das
interacções.

8
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 Modelos de mensagens

 Mensagens enviadas de forma assincrona;


 Fluxos paralelos de actividade;

9
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 Modelos de mensagens

 Pouco transparente para o programador


habitual;
 Expõe muitos mecanismos de transporte
subjacentes
 O endereçamento
 Formatação das mensagens 10
 O tratamento da heterogeneidade.
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 Chamada de procedimento
 Mecanismo para transferencia de controlo e
dados dentro de um programa
 Interacção com o modelo cliente/servidor
 Troca
de pelo menos duas mensagens
Requisição do serviço
Resposta ao pedido
11
PROCEDIMENTOS REMOTOS

29-10-2012
Ligação Cliente - Servidor

Prof. Nobre - macaba.pedro@gmail.com


Cliente Serviço de
Servidor
Nomes

2 – Localizar o servidor 1 – Registar Serviço

3 –Estabelecimento da Ligação

12
PROCEDIMENTOS REMOTOS

29-10-2012
 CHAMADA DE PROCEDIMENTO REMOTO
(RPC – Remote Procedure Call)

Prof. Nobre - macaba.pedro@gmail.com


 O cliente estabelece a ligação com o servidor –
binding:
 Localização do servidor – atraves do serviço de nomes;
 Estabelecimento de um canal de transporte;
 Autenticação do cliente e/ou servidor.

 Estabelecimento de políticas de segurança


 Identidade;
 Autenticação ;
13
PROCEDIMENTOS REMOTOS

29-10-2012
Lado Cliente Lado Servidor

Invoca uma operação Espera por uma

Prof. Nobre - macaba.pedro@gmail.com




mensagem
remota  Valida os dados recebidos
 Envia informação  Converte os parametros
para o formato interno
sobre o mecanismo de
 Chama o procedimento
transporte da apropriado.
informação  Final do procedimento,
resultados colocados numa
 Identificação do msg, de acordo com a
procedimento remoto estrutura prédefinida e
 Parametros
transmitida de volta ao
cliente.
14
PROCEDIMENTOS REMOTOS

29-10-2012
 Na lógica, o cliente efectua uma chamada a um
procedimento local que se encarrega de iniciar a
invocação remota.

Prof. Nobre - macaba.pedro@gmail.com


 A estes procedimentos designam-se por rotinas de
adaptação (sub routines)

15
29-10-2012
Prof. Nobre - macaba.pedro@gmail.com
PROCEDIMENTOS REMOTOS
16 ESPECIFICAÇÃO DA INTERFACE DOS
SERVIÇOS
LINGUAGE DE DESCRIÇÃO DE
INTERFACES

29-10-2012
 IDL – Interface Description Language
 Apresenta uma sintaxe inspirada nas linguagens
tradicionais (C, Pascal, C++).

Prof. Nobre - macaba.pedro@gmail.com


 Acrescenta nelas palavras-chave para definir
aspectos específicos do RPC.

 Apresenta problemas na passagem de parametros na


definição do RPC, quando em máquinas diferentes.
 Passagem por valor
 Simples pois pode ser reservado espaço fixo em memória

 ou por referencia

 Mais complexo, pois os espaços de endereçamento


distintos não permitem um funcionamento identico ao 17
que existe num espaço endereçamento único.
ESPECIFICAÇÃO DA INTERFACE DOS
SERVIÇOS

29-10-2012
 As linguagens de especificação de interfaces
apresentam-se como versões simplificadas de
uma linguagem de programação, visto

Prof. Nobre - macaba.pedro@gmail.com


necessitarem apenas da parte declarativa das
linguagens.

 Na sua sintaxe declarativa apresentam:


 Forma de especificar os procedimentos
 Os parametros
 Tipos de dados
 Direcção (entrada, saída, bidireccionais)
18
ESPECIFICAÇÃO DA INTERFACE DOS
SERVIÇOS

29-10-2012
 Dependendo das características do RPC, a
linguagem IDL possui diversas palavras chaves
para fornecer indicações na definição dos

Prof. Nobre - macaba.pedro@gmail.com


serviços:

 Identificação do serviço
 Versoes
 Semantica desejada para execução do procedimento
remoto
 …

19
IMPLEMENTAÇÃO RPC

29-10-2012
 Exercício:
 Serviço que permite o acesso remoto a um

Prof. Nobre - macaba.pedro@gmail.com


conjunto de operações bancárias a executar das
dependencias de um banco, da empresa ou casa
do cliente, atraves de ligações de teleinformática.
 Podem a posterior serem introduzidos requisitos
de segurança e fiabilidade.

20
IMPLEMENTAÇÃO RPC

29-10-2012
Considerar as operações habituais de manipulação de
Contas com a sintaxe abaixo.

Prof. Nobre - macaba.pedro@gmail.com


Resul = criar (long valor, char* nome, char* morada, long* numero)
Resul = saldo (long nConta, long* valor);
Resul = depositar (long nConta, long valor);
Result = levantar (long nConta, long valor);
Result = transferir (long nContaOrig, long nContaDest, long valor);
Result = pedriExtrato (long nConta, long mês, long ano,
struct dadosOperacao* dados, int* nElementos);

21
IMPLEMENTAÇÃO RPC

29-10-2012
Especificação da Interface em IDL. A Microsoft
Utiliza a MIDL no sistema RPC, resultante da

Prof. Nobre - macaba.pedro@gmail.com


adaptação do DCE.

[
Uuid(00918ª0C-4D50-1C17-9BB3-92C1040B0000),
Version(1.0)
] Typedef enum {
Interface banco CRIACAO,
{ SALDO,
Typedef enum { DEPOSITO,
SUCESSO, LEVANTAMENTO,
ERRO, TRANSFERENCIA,
ERRO_NA_CRIACAO, EXTRACTO
CONTA_INEXISTENTE, } tipoOperacao;
FUNDOS INEXISTENTES
} resultado; 22
IMPLEMENTAÇÃO RPC

29-10-2012
Typedef struct{ Typedef struct{
long dia, tipoData data;
long mês; tipoOperacao operacao;
long ano; long movimento;
} tipoData; long saldo;

Prof. Nobre - macaba.pedro@gmail.com


} dadosOperacao;

Resultado criar([in] handle_y h,


[in] long valor,
[in, string] char nome[],
[in, string] char morada[],
[out] long *numero);

23
29-10-2012
Prof. Nobre - macaba.pedro@gmail.com
PROCEDIMENTOS
REMOTOS
24 ARQUITETURA DO SISTEMA RPC
29-10-2012
Prof. Nobre - macaba.pedro@gmail.com
PROCEDIMENTOS
REMOTOS
25 RMI – Remote Method Invocation
INTERFACE RMI

29-10-2012
 Permite a programas escritos em Java chamar
certos métodos em servidores remotos.

Prof. Nobre - macaba.pedro@gmail.com


 Permite que objectos Java em hosts diferentes
comuniquem-se entre si.

 Cada objecto remoto implementa uma interface


remota que especifica qual dos seus métodos
podem ser invocados pelos clientes.

 Os clientes podem invocar métodos de um objecto


remoto quase da mesma forma como invocam 26
métodos locais.
OBJECTOS

29-10-2012
 Quando um objecto é passado para um método java ou
retornado, o que realmente é passado uma referencia
do objecto – sua localização na memoria da maquina
virtual.

Prof. Nobre - macaba.pedro@gmail.com


 Passagem por referência – quando a máquina local
passa um objecto remoto para a maquina remota.

 Passagem por valor – trata-se da cópia de um objecto


da maquina local que é passado para a maquina
remota

 As cópias dos objectos a serem passados para outras


máquinas, são convertidos num stream de bytes
atraves de serialização; as máquinas destino, 27
reconstroem o objecto original a partir dos bytes.
29-10-2012 Prof. Nobre - macaba.pedro@gmail.com
28
COMUNICAÇÃO CLIENTE – SERVIDOR

29-10-2012
 A camada cliente conversa com o stub;
 O stub passa a conversação para a camada de

Prof. Nobre - macaba.pedro@gmail.com


referencia remota;
 A camada de referencia remota conversa com a
camada de transporte;
 Traduz uma referencia local para o stub em uma
referencia remota para o objecto no servidor.
 A camada de transporte do cliente passa os dados
atraves de uma rede para a camada de
transporte do servidor.

29
COMUNICAÇÃO CLIENTE – SERVIDOR

29-10-2012
 A camada de transporte do servidor comunica-se
com a camada de referencia remota, que converte
uma referencia enviada pelo cliente em uma

Prof. Nobre - macaba.pedro@gmail.com


referencia para a máquina local.
 A camada de referencia passa a requisição para o
skeleton.

 Se a chamada ao método retornar um valor, o


valor é enviado de volta ao cliente.

30
COMUNICAÇÃO CLIENTE – SERVIDOR

29-10-2012
 Na inicialização do servidor, é utilizado o métido
bind() da classe naming do pacote java.rmi para
ligar um nome ao objecto remoto no registry.

Prof. Nobre - macaba.pedro@gmail.com


 Os cliente recuperam o objecto remoto a partir da
registry, usando url’s como argumento do método
lookup()
 Rmi://nome_do_host:porta/nome_do_objecto
 Cada entrada no registry tem um nome, URL, e
uma referencia para o objecto.

31
RMI – APLICAÇÃO EXEMPLO

29-10-2012
Arquivo Hello.java (interface)

Prof. Nobre - macaba.pedro@gmail.com


import java.net.*;
import java.rmi.*;

public interface Hello extends Remote {


String sayHello() throws
RemoteException;
}

32
RMI – APLICAÇÃO EXEMPLO

29-10-2012
Arquivo HelloImpl.java (implementação do objeto remoto)
import java.rmi.*;
import java.rmi.server.*;

Prof. Nobre - macaba.pedro@gmail.com


import java.rmi.registry.*;
import java.net.*;

public class HelloImpl extends UnicastRemoteObject


implements Hello {

public HelloImpl() throws RemoteException{


super();
}

public String sayHello() {


return "HelloWorld!";
}
33
}
RMI – APLICAÇÃO EXEMPLO
Arquivo HelloServer.java (servidor)

29-10-2012
import java.net.*;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;

Prof. Nobre - macaba.pedro@gmail.com


public class HelloServer {
public static void main (String args [ ]) {
//Cria e instala o security manager
//System.setSecurityManager(new RMISecurityManager() );
try {
//Cria HelloImpl
HelloImpl obj = new HelloImpl();
Naming.rebind("HelloServer", obj);
System.out.println("Hello Server pronto.");
} catch(Exception e) {
System.out.println("HelloServer erro"+ e.getMessage());
34
}
}
}
RMI – APLICAÇÃO EXEMPLO

29-10-2012
Arquivo HelloClient.java (cliente)
import java.net.*;
import java.rmi.*;
import java.rmi.registry.*;

Prof. Nobre - macaba.pedro@gmail.com


import java.rmi.server.*;

public class HelloClient {


public static void main(String args[ ]) {
//Cria e instala o security manager
// System.setSecurityManager (new RMISecurityManager () );
try {
Hello obj = (Hello)Naming.lookup(
"rmi://vip03/HelloServer");
System.out.println(obj.sayHello());
} catch(Exception e) {
System.out.println("HelloClient erro"+ e.getMessage());
}
System.exit(0);
} 35
}
RMI – APLICAÇÃO EXEMPLO

29-10-2012
 Para compilar e executar na mesma máquina:
 Instalar o Java Development Kit no computador e
inserir c:\jdk1.1\bin na linha PATH do arquivo

Prof. Nobre - macaba.pedro@gmail.com


AUTOEXEC.BAT.
 Abrir uma janela do DOS e digitar javac Hello*.java
(nomes dos arquivos com extensão .java que farão parte do
aplicativo), para que sejam compilados.
 Digitar rmic HelloImpl (nome do arquivo que implementa
o serviço), para que sejam gerados o stub e o skeleton.
 Digitar start rmiregistry para executá-lo em background.

 Digitar java HelloServer para inicializar o servidor.

 Abrir outra janela do DOS e digitar java HelloClient para


36
executar o cliente.
RMI - COMPARAÇÕES

29-10-2012
SOCKETS CORBA

RMI - Mais simples do CORBA (Common

Prof. Nobre - macaba.pedro@gmail.com


 
que fazer troca de Request Broker
Architecture) é a solução
mensagens usando mais geral para objetos
sockets porque os distribuídos. CORBA
detalhes do permite que objetos
estabelecimento das escritos em linguagens
diferentes comuniquem-
conexões entre os se entre si. Java
hosts e a transferência "adapta-se" ao CORBA
de dados entre eles através da Java IDL
são escondidos nas (Interface Definition
classes RMI. Language) e JOE (Java
Oriented Enviroment). 37
RMI - COMPARAÇÕES

29-10-2012
RMI RPC

Envio de objetos. RPC (Remote Procedure

Prof. Nobre - macaba.pedro@gmail.com


 
 Portabilidade, pois se Call) faz quase a mesma
tratando de código coisa que RMI.
totalmente escrito em  Envia apenas tipos de
Java, qualquer
computador que possua dados primitivos;
uma JVM pode rodar  Independente da
estes programas. linguagem;
 Facilidade de  Não está bem adaptado
implementação e a linguagens O.O.
manutenção por ser
orientado à objetos. 38

Você também pode gostar