Você está na página 1de 24

Aula 04 SD

Cliente/Servidor
Cliente/Servidor
Cliente/Servidor
Cliente/Servidor
Cliente/Servidor
Cliente/Servidor
Chamada de procedimento remoto (RPC)
• O estilo de programação promovido pela RPC – programação com
interfaces;
• A semântica de chamada associada à RPC;
• O problema da transparência e como ele se relaciona com as chamadas de
procedimento remoto.
Chamada de procedimento remoto (RPC)
Chamada de procedimento remoto (RPC)
• Programação com interfaces: A maioria das linguagens de programação
modernas fornece uma maneira de organizar um programa como um
conjunto de módulos que podem se comunicar.
Chamada de procedimento remoto (RPC)
• Interfaces em sistemas distribuídos: em um programa distribuído, os
módulos podem ser executados em processos distintos. No modelo cliente-
servidor, em particular, cada servidor fornece um conjunto de
procedimentos que estão disponíveis para uso pelos clientes.
Chamada de procedimento remoto (RPC)
• Para permitir que os servidores sejam acessados por diferentes clientes,
diversos sistemas padronizados de RPC foram criados. A maioria deles usa
uma linguagem de descrição de interface(IDL) para que diferentes
plataformas possam chamar procedimentos. Fazendo uso de uma ferramenta
como o RPCGEN, pode-se gerar interfaces entre cliente e servidor a partir
de um arquivo IDL, os chamados stubs. Como os stubs são embarcados nas
aplicações cliente e servidor, a RPC não é uma camada de middleware.
Chamada de procedimento remoto (RPC)
Chamada de procedimento remoto (RPC)
• Vantagens na programação com interfaces nos sistemas distribuídos:
• os programadores só se preocupam com a abstração oferecida pela interface de serviço
e não precisam conhecer os detalhes da implementação.
• para sistemas distribuídos (potencialmente heterogêneos), não precisamos conhecer a
linguagem de programação nem a plataforma de base utilizadas para implementar o
serviço
• suporte natural para a evolução de software
Chamada de procedimento remoto (RPC)
• A definição de interfaces de serviço é influenciada pela natureza distribuída da
infraestrutura subjacente
• Não é possível um módulo ser executado em um processo e acessar as variáveis de
um módulo em outro processo. Portanto, a interface de serviço não pode especificar
acesso direto às variáveis. (getter e setter)
• Os mecanismos de passagem de parâmetros usados nas chamadas de procedimento
local – por exemplo, chamada por valor e chamada por referência – não são
convenientes quando o chamador e o procedimento estão em processos diferentes.
Chamada de procedimento remoto (RPC)
• • Outra diferença entre módulos locais e remotos é que os endereços de um
processo não são válidos em outro processo remoto. Portanto, os endereços
não podem ser passados como argumentos nem retornados como resultado
de chamadas para módulos remotos.
Chamada de procedimento remoto (RPC)
• várias maneiras para fornecer diferentes garantias de entrega. As principais
escolhas são:
• Retentativa de mensagem de requisição: para retransmitir a mensagem de requisição até
que uma resposta seja recebida ou que se presuma que o servidor falhou
• Filtragem de duplicatas: quando são usadas retransmissões para eliminar requisições
duplicadas no servidor.
• Retransmissão de resultados: para manter um histórico das mensagens de respostas a
fim de permitir que os resultados perdidos sejam retransmitidos sem uma nova
execução das operações no servidor.
Chamada de procedimento remoto (RPC)
Chamada de procedimento remoto (RPC)
• Semântica talvez: com a semântica talvez, a chamada de procedimento
remoto pode ser executada uma vez ou não ser executada.
• A semântica talvez surge quando nenhuma das medidas de tolerância a falhas
é aplicada e pode sofrer os seguintes tipos de falha:
• falhas por omissão, se a mensagem de requisição ou de resultado for
perdida;
• •falhas por colapso, quando o servidor que contém a operação remota falha.
Chamada de procedimento remoto (RPC)
• Semântica pelo menos uma vez: com a semântica pelo menos uma vez, o invocador
recebe um resultado (no caso em que sabe que o procedimento foi executado pelo
menos uma vez) ou recebe uma exceção, informando-o de que nenhum resultado foi
recebido
• A semântica pelo menos uma vez pode sofrer dos seguintes tipos de falha:
• falhas por colapso, quando o servidor que contém o procedimento remoto falha;
• falhas arbitrárias – nos casos em que a mensagem de requisição é retransmitida, o servidor
remoto pode recebê-la e executar o procedimento mais de uma vez, possivelmente causando
o armazenamento ou o retorno de valores errados.
Chamada de procedimento remoto (RPC)

• Semântica no máximo uma vez: com a semântica no máximo uma vez, ou o


chamador recebe um resultado – no caso em que o chamador sabe que o
procedimento foi executado exatamente uma vez
RMI – Próxima Aula