• Nenhum resultado encontrado

SISTEMAS DISTRIBUÍDOS E PARALELOS – PROCEDIMENTOS REMOTOS

N/A
N/A
Protected

Academic year: 2019

Share "SISTEMAS DISTRIBUÍDOS E PARALELOS – PROCEDIMENTOS REMOTOS"

Copied!
38
0
0

Texto

(1)

L

ICENCIATURA EM CIÊNCIAS DA COMPUTAÇÃO

(2)

AGENDA

 INTERFACE DE COMUNICAÇÃO

 PARALELISMO

 INVOCAÇÃO REMOTA DE MÉTODOS

 INTRODUÇÃO AO MODELO

 ESPECIFICAÇÃO DA INTERFACE DOS SERVIÇOS

 ARQUITETURA DO SISTEMA RPC

 RMI

29

-10

-2

0

1

2

2

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(3)

INTERFACE DE COMUNICAÇÃO -

PARALELISMO

 Existe sincronização no envio e recepção de dados com o modelo de concorrência em termos de

processos e tarefas.

 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.

29

-10

-2

0

1

2

3

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(4)

INTERFACE DE COMUNICAÇÃO -

PARALELISMO

 Na recepção múltipla, um processo atende um pedido de cada vez. Neste caso, os restantes

clientes esperam que os pedidos anteriores sejam 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

29

-10

-2

0

1

2

4

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(5)

INTERFACE DE COMUNICAÇÃO -

PARALELISMO

 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 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 servidor

29

-10

-2

0

1

2

5

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(6)

MODELO DE CHAMADA DE PROCEDIMENTO REMOTO

CLIENTE SERVIDOR

Invocação do Procedimento Remoto

Devolução dos Parâmetros de Resposta

Bloqueia-se

Cliente Bloqueado

Retorna a Execução

Execução do Pedido

29

-10

-2

0

1

2

6

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(7)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

 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

discrepancia existente em:

29

-10

-2

0

1

2

7

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(8)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

 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.

29

-10

-2

0

1

2

8

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(9)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

 Modelos de mensagens

Mensagens enviadas de forma assincrona; Fluxos paralelos de actividade;

29

-10

-2

0

1

2

9

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(10)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

Modelos de mensagens

Pouco transparente para o programador

habitual;

Expõe muitos mecanismos de transporte

subjacentes

 O endereçamento

 Formatação das mensagens

 O tratamento da heterogeneidade.

29

-10

-2

0

1

2

10

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(11)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

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

29

-10

-2

0

1

2

11

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(12)

P

ROCEDIMENTOS REMOTOS

Ligação Cliente - Servidor

Cliente Serviço de Servidor

Nomes

2 – Localizar o servidor 1 Registar Serviço

3 –Estabelecimento da Ligação

29

-10

-2

0

1

2

12

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(13)

P

ROCEDIMENTOS REMOTOS

 CHAMADA DE PROCEDIMENTO REMOTO

(RPC – Remote Procedure Call)

 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 ;

29

-10

-2

0

1

2

13

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(14)

P

ROCEDIMENTOS REMOTOS

 Invoca uma operação remota

 Envia informação

sobre o mecanismo de transporte da

informação

 Identificação do

procedimento remoto  Parametros

 Espera por uma

mensagem

 Valida os dados recebidos  Converte os parametros

para o formato interno

 Chama o procedimento

apropriado.

 Final do procedimento,

resultados colocados numa msg, de acordo com a

estrutura prédefinida e transmitida de volta ao cliente.

Lado Cliente Lado Servidor

29

-10

-2

0

1

2

14

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(15)

P

ROCEDIMENTOS REMOTOS

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

 A estes procedimentos designam-se por rotinas de

adaptação (sub routines)

29

-10

-2

0

1

2

15

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(16)

P

ROCEDIMENTOS REMOTOS

ESPECIFICAÇÃO DA INTERFACE DOS SERVIÇOS

29

-10

-2

0

1

2

16

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(17)

LINGUAGE DE DESCRIÇÃO DE

INTERFACES

 IDL – Interface Description Language

 Apresenta uma sintaxe inspirada nas linguagens tradicionais (C, Pascal, C++).

 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 que existe num espaço endereçamento único.

29

-10

-2

0

1

2

17

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(18)

E

SPECIFICAÇÃO DA INTERFACE DOS SERVIÇOS

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

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)

29

-10

-2

0

1

2

18

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(19)

E

SPECIFICAÇÃO DA INTERFACE DOS SERVIÇOS

 Dependendo das características do RPC, a

linguagem IDL possui diversas palavras chaves para fornecer indicações na definição dos

serviços:

 Identificação do serviço

 Versoes

 Semantica desejada para execução do procedimento remoto

 …

29

-10

-2

0

1

2

19

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(20)

I

MPLEMENTAÇÃO

RPC

 Exercício:

 Serviço que permite o acesso remoto a um

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.

29

-10

-2

0

1

2

20

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(21)

I

MPLEMENTAÇÃO

RPC

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);

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

29

-10

-2

0

1

2

21

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(22)

I

MPLEMENTAÇÃO

RPC

[

Uuid(00918ª0C-4D50-1C17-9BB3-92C1040B0000), Version(1.0)

]

Interface banco {

Typedef enum { SUCESSO, ERRO,

ERRO_NA_CRIACAO, CONTA_INEXISTENTE, FUNDOS INEXISTENTES } resultado;

Especificação da Interface em IDL. A Microsoft Utiliza a MIDL no sistema RPC, resultante da adaptação do DCE.

Typedef enum {

CRIACAO, SALDO, DEPOSITO,

LEVANTAMENTO, TRANSFERENCIA, EXTRACTO

} tipoOperacao;

29

-10

-2

0

1

2

22

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(23)

I

MPLEMENTAÇÃO

RPC

Typedef struct{

long dia, long mês; long ano; } tipoData;

Typedef struct{

tipoData data;

tipoOperacao operacao; long movimento;

long saldo; } dadosOperacao;

Resultado criar([in] handle_y h, [in] long valor,

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

29

-10

-2

0

1

2

23

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(24)

PROCEDIMENTOS

REMOTOS

ARQUITETURA DO SISTEMA RPC

29

-10

-2

0

1

2

24

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(25)

PROCEDIMENTOS

REMOTOS

RMI – Remote Method Invocation

29

-10

-2

0

1

2

25

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(26)

INTERFACE RMI

 Permite a programas escritos em Java chamar certos métodos em servidores remotos.

 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

métodos locais.

29

-10

-2

0

1

2

26

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(27)

OBJECTOS

 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.

 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,

reconstroem o objecto original a partir dos bytes.

29

-10

-2

0

1

2

27

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(28)

29-10-2012

28

(29)

C

OMUNICAÇÃO CLIENTE

SERVIDOR

 A camada cliente conversa com o stub;

 O stub passa a conversação para a camada de 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

-10

-2

0

1

2

29

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(30)

C

OMUNICAÇÃO CLIENTE

SERVIDOR

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

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.

29

-10

-2

0

1

2

30

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(31)

C

OMUNICAÇÃO CLIENTE

SERVIDOR

 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.

 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.

29

-10

-2

0

1

2

31

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(32)

R

MI

APLICAÇÃO EXEMPLO

Arquivo Hello.java (interface)

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

public interface Hello extends Remote {

String sayHello() throws

RemoteException; }

29

-10

-2

0

1

2

32

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(33)

R

MI

APLICAÇÃO EXEMPLO

Arquivo HelloImpl.java (implementação do objeto remoto)

import java.rmi.*;

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

public class HelloImpl extends UnicastRemoteObject implements Hello {

public HelloImpl() throws RemoteException{ super();

}

public String sayHello() { return "HelloWorld!"; }

}

29

-10

-2

0

1

2

33

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(34)

R

MI

APLICAÇÃO EXEMPLO Arquivo HelloServer.java (servidor) import java.net.*;

import java.rmi.*;

import java.rmi.server.*; import java.rmi.registry.*;

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());

}

} }

29

-10

-2

0

1

2

34

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(35)

R

MI

APLICAÇÃO EXEMPLO Arquivo HelloClient.java (cliente)

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

import java.rmi.registry.*; 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); }

}

29

-10

-2

0

1

2

35

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(36)

R

MI

APLICAÇÃO EXEMPLO

 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 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

executar o cliente.

29

-10

-2

0

1

2

36

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(37)

R

MI

-

COMPARAÇÕES

 RMI - Mais simples do que fazer troca de

mensagens usando sockets porque os detalhes do

estabelecimento das conexões entre os

hosts e a transferência de dados entre eles

são escondidos nas classes RMI.

 CORBA (Common

Request Broker

Architecture) é a solução mais geral para objetos distribuídos. CORBA permite que objetos escritos em linguagens diferentes comuniquem-se entre si. Java

"adapta-se" ao CORBA através da Java IDL (Interface Definition

Language) e JOE (Java Oriented Enviroment).

SOCKETS CORBA

29

-10

-2

0

1

2

37

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

(38)

R

MI

-

COMPARAÇÕES

 Envio de objetos.

 Portabilidade, pois se

tratando de código totalmente escrito em Java, qualquer

computador que possua uma JVM pode rodar estes programas.

 Facilidade de

implementação e manutenção por ser orientado à objetos.

 RPC (Remote Procedure

Call) faz quase a mesma coisa que RMI.

 Envia apenas tipos de

dados primitivos;

 Independente da

linguagem;

 Não está bem adaptado

a linguagens O.O.

RMI RPC

29

-10

-2

0

1

2

38

P

rof

.

N

ob

re

- ma

ca

b

a

.ped

ro@

g

ma

il

Referências

Documentos relacionados

Restou delineada, segundo o MPF, a atuação do empresário EIKE BATISTA e de seu homem de confiança à época, FLÁVIO GODINHO, no pagamento de propina a SÉRGIO CABRAL,

Explico: assim como Freud, a contragosto, viu desmontada a teoria da sedução pela constatação de que, para o inconsciente, fato e fantasia intensamente carregada tem

Era meio-dia e a caatinga brilhava à luz incandescente do sol. O pequeno Calango deslizou rápido sobre o solo seco, cheio de gravetos e pedras, parando na frente do

Nesse ponto, as imagens previamente decodificadas que estão marcadas como “usadas para referência” são classificadas segundo um critério, dependendo do tipo de entrelaçamento da

Nesta pesquisa não nos concentraremos no estudo pormenorizado das referências sobre a possibilidade da participação das mulheres como aurigas nas competições esportivas.. 5

Primeiro acordo bilateral para os cursos de graduação do Ibmec São Paulo firmado com uma universidade norte-americana, essa cooperação fortale- ce os laços entre as duas

Na nossa serie, todos os docntcs livcram SVCS scwnd:iria a patologia matigna e ndo. lim.un induidos ・\セッオウ@ de

estação de referência coletando dados, enquanto um outro percorre as estações de interesse, onde permanece parado entre 5 a 20 min para coletar dados. Método