• Nenhum resultado encontrado

RPC - Remote Procedure Calls Sistemas de informa¸c˜ao – Univ´as

N/A
N/A
Protected

Academic year: 2019

Share "RPC - Remote Procedure Calls Sistemas de informa¸c˜ao – Univ´as"

Copied!
9
0
0

Texto

(1)

Sistemas de informa¸c˜ao – Univ´as

Roberto Ribeiro Rocha

Mar¸co de 2014

Sum´

ario

1 Objetivos 1

2 Introdu¸c˜ao 1

3 Aspectos do RPC 1

3.1 Funcionamento de Chamadas Locais a Procedimentos . . . 2

4 Funcionamento de Chamadas Remotas a Procedimentos 3

4.1 Binding . . . 4 4.2 Semˆantica do RPC na presen¸ca de falhas . . . 5

5 Considera¸c˜oes Finais 8

(2)

1

Objetivos

• Mostrar como s˜ao feitas as chamadas remotas a um um procedimento, provendo um meio transparente para a execu¸c˜ao dessas chamadas;

• Apresentar as caracter´ısticas e funcionamento do mecanismo RPC;

• Entender como s˜ao empacotados os pedidos e respostas da chamada de um proce-dimento;

• Entender os problemas que podem ocorrer em uma chamada remota;

2

Introdu¸c˜

ao

No ambiente cliente/servidor, os usu´arios interagem com aplica¸c˜oes clientes que solicitam tarefas dos servidores.

A comunica¸c˜ao entre clientes e servidores se d´a atrav´es de um mecanismo do tipo

send/receive (request/reply).

Figura 1: Ambiente cliente/servidor

RPC introduz uma abstra¸c˜ao maior nesse esquema, permitindo que os clientes se comuniquem com os servidores atrav´es de chamadas a procedimentos.

Assim, um servi¸co pode ser visto como um m´odulo que possui uma interface bem definida de acesso `as suas fun¸c˜oes, permitindo uniformidade de acesso (mais simples), seguran¸ca e transparˆencia

Um exemplo do uso de RPC em Java pode ser visto no projeto XML-RPC da Apache (http://ws.apache.org/xmlrpc/xmlrpc2), no qual usa XML e HTTP para fazer a transferˆencia de informa¸c˜oes pela rede e fazer a chamada do procedimento remoto.

3

Aspectos do RPC

(3)

• N˜ao faz sentido utilizar vari´aveis globais ou ponteiros→ referˆencias “opacas”.

• Introdu¸c˜ao do uso de Interface Definition Language:

Especifica os nomes dos procedimentos de acesso aos servi¸cos, lista de parˆametros, tipos e se s˜ao de entrada ou sa´ıda (assinatura das fun¸c˜oes).

Benef´ıcios:

∗ esconde a implementa¸c˜ao dos procedimentos; ∗ independˆencia em rela¸c˜ao `a linguagem; ∗ maior abstra¸c˜ao.

• Classes de RPC:

O sistema de RPC est´a integrado com uma linguagem de programa¸c˜ao.

E utilizada uma linguagem espec´ıfica para defini¸c˜ao da interface entre clientes´ e servidores. Ex: Sun RPC(NFS), CORBA, ANSA, MIG (Mach).

• Tratamento de Exce¸c˜oes

• Transparˆencia

3.1

Funcionamento de Chamadas Locais a

Procedimentos

Como funciona uma “Local” Procedure Call ? Suponha a seguinte fun¸c˜ao: int mult(int x, int y)

Em uma chamada local, acontecem as seguintes a¸c˜oes:

• os parˆametros e o endere¸co de retorno s˜ao colocados na pilha;

• ´e alocado espa¸co para as vari´aveis locais;

• o controle ´e passado para a rotina chamada.

Quando o procedimento chega ao fim, ocorre o seguinte:

• o valor retornado ´e copiado para um registrador;

• recupera-se o endere¸co de retorno;

• a ´area na pilha ´e liberada;

(4)

Os parˆametros podem ser passados por: valor, referˆencia oucopy/restore

4

Funcionamento de Chamadas Remotas a

Procedimentos

Em uma chamada remota, com existˆencia da rede e dos sistemas operacionais entre o chamador e a fun¸c˜ao chamada, ´e necess´ario ter uma estrutura (middleware) para permitir essa opera¸c˜ao, conforme ilustra a Figura 2.

Figura 2: Processo de chamada de um procedimento remoto

Assim temos novos componentes de software para que isso se torne poss´ıvel:

Stub do cliente: Respons´avel por prover uma interface amig´avel com o cliente, executando as seguintes a¸c˜oes:

Criar uma mensagem com os parˆametros e o identificador da procedimento a ser chamada;

Enviar essa mensagem ao servidor, atrav´es do m´odulo de comunica¸c˜ao;

Esperar pela resposta (bloqueante);

Recuperar o valor de retorno da resposta e devolver ao caller.

Stub do servidor: Respons´avel por tratar um request vindo de um cliente, cha-mando a fun¸c˜ao e retornando a resposta:

receber a mensagem;

retirar os argumentos da mensagem;

selecionar corretamente o procedimento a ser chamado;

faz uma chamada local ao procedimento;

quando este retornar, comp˜oe a mensagem de retorno e a envia ao cliente.

(5)

Devido ao fato do cliente ficar esperando a resposta do servidor, esta forma de chamada remota ´e s´ıncrona.

Em uma chamada RPC, o cliente chama um tipo especial de rotina, denominada

stub client que coloca os parˆametros em uma mensagem e a envia ao servidor, ficando bloqueado at´e que venha uma resposta.

No lado do servidor, o stub server recebe a mensagem, retira os parˆametros e faz uma chamada “local”ao procedimento servidor.

Durante todo o processo, cliente e servidor acreditam que tudo est´a acontecendo localmente.

4.1

Binding

Como o cliente localiza o servidor? Uma solu¸c˜ao ´e colocar o endere¸co de rede do servidor no programa cliente, por´em isso torna a solu¸c˜ao inflex´ıvel.

Uma alternativa ´e mapear dinamicamente cada servi¸co em uma porta espec´ıfica de um dado servidor, chamado de binding dinˆamico, utilizando um socket, que ´e um identificador do servi¸co do servidor ´e composto por: IP + port number.

Binder

Mant´em uma tabela mapeando os servi¸cos e suas respectivas portas/servidores. Ele possui trˆes fun¸c˜oes b´asicas para registrar, remover registro e buscar servi¸cos:

Register (Servico:String; Porta:Port; Versao:Int): Solicita ao binder que registre o nome de um servi¸co, seu endere¸co de acesso e n´umero de vers˜ao.

WithDraw (Servico:String; Porta:Port; Versao:Int): Solicita ao binder que retire um determinado servi¸co de sua tabela.

LookUp (Servico:String; Versao:Integer):Port: O binder procura por um servi¸co (na vers˜ao desejada) em sua tabela e retorna o endere¸co de acesso.

O binder est´a localizado em um endere¸co well-known (host address), mantido nor-malmente em uma vari´avel de ambiente. Para localiz´a-lo, o cliente ou servidor faz um

broadcast, ao qual o binder responde com seu host address. O binding dinˆamico possui algumas vantagens:

• bastante flex´ıvel.

• permite v´arios servidores para o mesmo servi¸co balancear os clientes entre os servi-dores o servidor pode escolher os clientes que deseja atender controle de vers˜ao

Desvantagens:

(6)

overhead

• O binder pode se tornar um gargalo. Alternativa: m´ultiplos binders, por´em h´a o

overhead de mantˆe-los consistentes.

4.2

Semˆ

antica do RPC na presen¸ca de falhas

O objetivo do RPC ´e esconder a comunica¸c˜ao atrav´es da cria¸c˜ao de uma chamada remota semelhante a uma chamada local. Por´em os problemas surgem quando erros ocorrem. Existem, basicamente, 5 classes diferentes de falhas que podem ocorrer em um sistema RPC:

1. O cliente n˜ao est´a apto a localizar o servidor: Ocorre devido `a algumas situa¸c˜oes: quando o servidor ´e desligado ou quando o cliente est´a usando uma vers˜ao desatualizada (o server foi atualizado sem o cliente ficar sabendo).

Formas de tratamento: retornar um valor de erro, por´em esse valor de erro pode ser confundido com algum valor retornado realmente pela fun¸c˜ao. Outra forma ´e gerar exce¸c˜ao, mas depende de implementa¸c˜oes e linguagens.

2. A mensagem de requisi¸c˜ao do cliente para o servidor ´e perdida: Essa situa¸c˜ao ´e a mais simples de resolver. Basta fazer com que o stub client inicie um temporizador ap´os o envio da mensagem de requisi¸c˜ao (request). Se o tempo expirar antes da chegada da mensagem de resposta (reply) ou de uma mensagem de confirma¸c˜ao, ent˜ao o stub client reenviar´a a mensagem de requisi¸c˜ao.

Figura 3: Perda da requisi¸c˜ao

3. A mensagem de resposta do servidor para o cliente ´e perdida: este ´e um problema mais s´erio. O temporizador n˜ao resolve totalmente o problema, pois o

(7)

Certas opera¸c˜oes podem ser repetidas com seguran¸ca (ou seja, s˜ao idempotentes) sem afetar o resultado final. Outras opera¸c˜oes n˜ao podem ser repetidas sem afetar o resultado final ou afetar chamadas subsequentes.

Uma forma de resolver ´e fazer com que o stub client associe um n´umero de identi-fica¸c˜ao a cada mensagem de requisi¸c˜ao. Assim, quando o stub server receber uma mensagem com um n´umero de identificador j´a executado, ele poder´a responder ao cliente sem a necessidade de reprocessar o pedido.

(a) Reprocessamento da requisi¸c˜ao (b) Reenvio da resposta

Figura 4: Perda da resposta.

4. O servidor falha e ´e reiniciado: Neste caso ´e dif´ıcil definir o que foi ou n˜ao executado, pois o erro no servidor pode antes de receber, antes de executar ou antes de enviar a resposta. Assim, ´e necess´ario definir uma das 4 semˆanticas de tratamento de erro no caso de falha do servidor:

Semˆantica Maybe: N˜ao se garante nada. O cliente n˜ao fica sabendo e tamb´em n˜ao existe nenhuma garantia. Vantagem: F´acil de implementar. • Semˆantica At-least-once: Garante que a solicita¸c˜ao foi executada uma ou

mais vezes. Se as opera¸c˜oes do servidor s˜ao todas idempotentes, ent˜ao n˜ao h´a problema. O objetivo ´e repetir a opera¸c˜ao at´e que uma mensagem reply seja recebida com sucesso.

SemˆanticaAt-most-once: Garante que a solicita¸c˜ao foi executada no m´aximo uma vez, mas pode tamb´em n˜ao ter sido executada (mais comum). A falha ´e reportada imediatamente quando ela ocorre.

Semˆantica Exactly-once: Semˆantica ideal, onde a chamada ´e executada uma ´unica vez, por´em isso n˜ao ´e f´acil de conseguir em um sistema distribu´ıdo.

(8)

processo cliente aguardando a resposta. Estas solicita¸c˜oes perdidas s˜ao chamadas de

´orf˜as. Em v´arios casos, reiniciar o cliente resolveria o problema, pois a solicita¸c˜ao seria reenviada ao servidor, por´em existem casos mais complexos onde essa falha pode afetar outros sistemas travando arquivos e recursos.

(a) Falha no servidor (b) Falha no cliente

Figura 5: Falhas no cliente ou servidor.

Exerc´ıcio 1 –

Considerando a realiza¸c˜ao de uma chamada de

procedi-mento remoto, escreva, justificando, qual ´e o comportaprocedi-mento geral da

chamada quando o parˆametro passado ´e um ponteiro para uma vari´avel

local do cliente. O que acontecer´a se o procedimento modificar o conte´

udo

apontado por este ponteiro? Fa¸ca as considera¸c˜oes que achar necess´ario.

Exerc´ıcio 2 –

O que pode ser feito quando ocorre uma exce¸c˜ao na execu¸c˜ao

do c´odigo do servidor? A exce¸c˜ao deve ser tratada no servidor ou deve ser

devolvida para o cliente. Pense em uma forma que o cliente fique sabendo

que ocorreu e qual foi o erro ocorrido no servidor.

Exerc´ıcio 3 –

Qual a vantagem do uso de RPC em sistemas distribu´ıdos?

Quais s˜ao as preocupa¸c˜oes que o desenvolvedor deve ter para usar o RPC?

Exerc´ıcio 4 –

Cite dois exemplos de opera¸c˜oes idempotentes e dois

exem-plos de opera¸c˜oes n˜ao idempotentes. Justifique a escolha dos 4 exemexem-plos.

(9)

n˜ao idempotente e o servidor utiliza a semˆantica

At-least-once? Sugira pelo

menos uma forma de solu¸c˜ao.

5

Considera¸c˜

oes Finais

O uso de RPC facilitou muito o desenvolvimento de aplica¸c˜oes nas quais necessita-vam executar parte de seu c´odigo em uma outra m´aquina na rede. Essas chamadas s˜ao feitas de forma relativamente simples, pois o desenvolvedor n˜ao precisa mais preocupar com os detalhes de rede, referentes a envio e recebimento de informa¸c˜oes via sockets.

6

Bibliografia

• Chamada de Procedimentos Remotos - Edmilson Marmo Moreira - UNIFEI

• Remote Procedure Calls - M´ario Antonio Meireles Teixeira

• Remote Procedure Call - Andrey Shadrin - Saarland University Informatik, Sa-arbr¨ucken

• COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed Systems - Con-cepts and Design. 2. ed., 1994

Imagem

Figura 1: Ambiente cliente/servidor
Figura 2: Processo de chamada de um procedimento remoto
Figura 3: Perda da requisi¸c˜ao
Figura 4: Perda da resposta.

Referências

Documentos relacionados

Este documento pode ser acessado no endereço eletrônico http://www.tst.jus.br/validador sob código 1003F3D2A712044F47... Firmado por assinatura digital em 09/12/2020 pelo

As operações, que chamaremos concretas, consti- tuirão uma parte integrante das operações formais, no sentido de que essas úl- timas constituirão uma nova estrutura, mas, assentando

Produtividade comercial de frutos de melancia e concentração de K na solução do solo em função do manejo da fertirrigação visando atingir diferentes condutividades

O Projeto Pastoral das Escolas de Evangelização Santo André, da mesma forma que o apóstolo André, tem por missão buscar Pedros que sirvam, amem e anunciem o Senhor Jesus

- DUAS SETAS DE CARTÃO VERMELHO para indicar a TEMPERATURA no termómetro - DUAS SETAS DE CARTÃO AMARELO para indicar o MÊS no CÍRCULO DAS ESTAÇÕES. - DUAS SECÇÕES CIRCULARES

Nele, a auto- ra reforça os argumentos levantados no livro (acusações contra a indústria farmacêutica, o CDC, o governo norte-americano, a OMS, etc.), além de entrar

Utilize o menu Input Source (Fonte de Entrada) para selecionar entre as várias entradas de vídeo que estão ligadas ao monitor.. Dell UltraSharp

– Banner: diversas opções de banner no site do Portal Giro para expor sua marca ou serviços. •