Sistemas Distribuídos RPC



Documentos relacionados
Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

3. Comunicação em Sistemas Distribuídos

Comunicação. Parte II

Remote Procedure Call

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Comunicação em Sistemas Distribuídos

Sistemas Operacionais Distribuídos e de Redes

SISTEMAS DISTRIBUÍDOS

MODELO CLIENTE SERVIDOR

Sistemas Distribuídos e Redes de Sensores

Comunicação em Sistemas Distribuídos

Sistemas Distribuídos RPC Remote Procedure Call

UNIVERSIDADE. Sistemas Distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Sistemas Distribuídos

3 SCS: Sistema de Componentes de Software

Sistemas Distribuídos Aula 15

Sistemas distribuídos:comunicação

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Padrões Arquiteturais. Sistemas Distribuídos: Broker

Sistemas Distribuídos Modelo Cliente-Servidor


Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Gerenciamento de Redes Gerenciamento OSI

Considerações no Projeto de Sistemas Cliente/Servidor

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Sistemas Distribuídos Grupos

Sistemas Distribuídos

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

DES Instalação versão 3.0

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Adriano Reine Bueno Rafael Barros Silva

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

5 Mecanismo de seleção de componentes

Suporte Nível 1. Atualmente o Servidor de aplicação adotado é o GlassFish 2.x e o Postgres 8.x.

Comunicação em Sistemas Distribuídos

EA960 Redundância e Confiabilidade: RAID

Sistemas Distribuídos

Sistemas Distribuídos

Tipos de Servidores. Servidores com estado

Grupos de Processos (Comunicação Grupal)

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Ciência de Computadores Sistemas Distribuídos e Móveis

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Uma aplicação distribuída

Admistração de Redes de Computadores (ARC)

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Sistemas Operacionais

Quadro de consulta (solicitação do mestre)

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Java Mail Server. Manual do Utilizador

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

18/04/2006 Micropagamento F2b Web Services Web rev 00

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Rede de Computadores

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Data: 22 de junho de

Sistemas Distribuídos

09/06/2011. Profª: Luciana Balieiro Cosme

SISTEMAS DISTRIBUIDOS

Sistemas Distribuídos Arquiteturas Middlewares

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Astra. Introdução e conceitos básicos do sistema

Manual Sistema de Autorização Online GW

Estruturas do Sistema de Computação

O protocolo MODBUS define também o tipo diálogo entre os equipamentos, define por exemplo quem pode enviar dados e em que altura.

Introdução ao DNS. Volnys Borges Bernal Laboratório de Sistemas Integráveis

Procedimentos para Reinstalação do Sisloc

Projeto: Camada Independente de Dispositivo

Sistemas Operacionais. Prof. André Y. Kusumoto

Guia rápido de uso da interface beta do NFS-e Easy para operação com Sistemas WebISS

BACKUP ONLINE LINHA OFFICE

Unix: Sistema de Arquivos. Geraldo Braz Junior

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Java. Marcio de Carvalho Victorino

Persistência de Dados

COORDENAÇÃO DE TECNOLOGIA (COTEC) OUTUBRO/2010

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Capítulo 2. Charm++ 16

SISTEMAS DISTRIBUÍDOS

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares

Transcrição:

Sistemas Distribuídos RPC Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias Pontifícia Universidade Católica de Campinas Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 1 / 16

Dynamic Binding! Como o cliente localiza o servidor? 1. inserir o endereço do servidor no código do cliente " abordagem extremamente inflexível # se o servidor for movido, replicado ou mudar de endereço todos os clientes deverão ser recompilados 2. usar dynamic binding Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 2 / 16

Dynamic Binding! Especificação de um servidor: #include <header.h> specification of file_server, version 3.1: end; long read (in char name[max_path], out char buf[buf_size], in long bytes, in long position); long write (in char name[max_path], in char buf[buf_size], in long bytes, in long position); int create (in char[max_path], in int mode); int delete (in char[max_path]); Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 3 / 16

! Para cada procedimento: Dynamic Binding $ o tipo dos parâmetros é informado $ cada parâmetro é especificado como: - in, out ou in out # a direção é dada em relação ao servidor - in: é enviado do cliente para o servidor - out: é enviado do servidor para o cliente - in out: é enviado do cliente para o servidor, modificado e enviado de volta para o cliente (cópia e restauração) # tipicamente usado para passar ponteiros como parâmetro quando o servidor precisa ler e modificar os dados apontados $ a direção é crucial para que os stubs cliente e servidor saibam que parâmetros enviar Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 4 / 16

Dynamic Binding! Principal uso da especificação: $ servir de entrada para o gerador de stubs - gera os stubs cliente e servidor - ambos são colocados nas bibliotecas apropriadas $ Quando o programa cliente chama algum procedimento definido pela especificação: # o procedimento do stub cliente correspondente é ligado a este binário $ De maneira análoga, quando o programa servidor é compilado: # o stub servidor é ligado a ele também Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 5 / 16

Dynamic Binding! Quando o servidor inicia sua execução: $ o servidor exporta sua interface - envia uma mensagem para um programa chamado binder # para tornar sua existência conhecida - processo conhecido como registro do servidor # informa seu nome, sua versão, um identificador único (32 bits) e um handle (usado para localizá-lo)! Como o cliente localiza o servidor? $ quando o cliente chama um procedimento remoto read - o stub cliente envia uma mensagem para o binder # pede para importar a versão 3.1 da interface file_server Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 6 / 16

Dynamic Binding! Se não houver servidor exportando esta interface: $ a chamada do procedimento read falha! Para que informar a versão? $ o binder pode garantir que interfaces obsoletas resultarão em falha # falha na localização do servidor # evita que parâmetros sejam interpretados incorretamente! Vantagem: flexibilidade - múltiplos servidores podem suportar a mesma interface # permite que o binder espalhe os clientes aleatoriamente! Desvantagem: overhead - o binder pode se tornar um gargalo Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 7 / 16

! Na chamada de um procedimento remoto podem ocorrer 5 tipos de falhas possíveis: 1. o cliente não consegue localizar o servidor 2. mensagem de requisição perdida 3. mensagem de resposta perdida 4. o servidor cai após receber uma requisição 5. o cliente falha após enviar uma requisição Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 8 / 16

1. O cliente não consegue localizar o servidor $ pode ocorrer devido a dois motivos: - o servidor caiu - o cliente e o servidor estão executando versões incompatíveis de protocolo, impedindo a sua comunicação # Soluções: $ uso de um código de retorno de função " pode não fazer sentido am alguns casos $ através do uso de tratamento de exceções: torna o código mais claro e fácil de dar manutenção " nem todas as linguagens prevêem o tratamento de exceção " acaba com a ilusão de que procedimentos remotos não diferem dos locais Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 9 / 16

2. Mensagem de requisição perdida: $ a mensagem de requisição do cliente para o servidor pode ser perdida $ o kernel deve controlar: - através de timeout - ao detectar a perda # reenviar a mensagem Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 10 / 16

3. A mensagem de resposta perdida: $ a mensagem de resposta do servidor para o cliente pode ser perdida $ caso é um pouco mais difícil de tratar - uso de timeout no kernel do cliente não pode determinar o porquê da ausência de resposta: 1) a mensagem de resposta pode ter sido perdida, ou 2) a mensagem de requisição foi perdida ou apenas um servidor muito lento $ o reenvio de requisição pode causar erros caso o procedimento remoto não seja idempotente - procedimento idempotente (idempotent): é aquele cuja execução não causa efeito colateral. Ex: ler um determinado bloco de um arquivo. $ Solução: - numerar as requisições # permite que o servidor identifique e ignore uma retransmissão Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 11 / 16

4. O servidor cai após receber uma requisição: $ também está relacionado a semântica idempotente ou não idempotente de um procedimento requisição Servidor requisição Servidor requisição Servidor receive execute reply receive execute crash receive crash resposta não há resposta não há resposta (a) (b) (c) Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 12 / 16

(b) houve a execução da requisição, mas o resultado não será enviado ao cliente (c) a requisição não chegou a ser processada. requisição Servidor requisição Servidor requisição Servidor receive execute reply receive execute crash receive crash resposta não há resposta não há resposta (a) (b) (c) $ Logo: - no caso (b) a requisição só poderá ser reexecutada se o procedimento for idempotente - no caso (c) a reexecução seria permitida sem restrições Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 13 / 16

! Implementações RPC tratam a possibilidade de falha do servidor através da definição de uma das três possíveis semânticas de execução de procedimento remoto: $ pelo menos uma vez (at least once semantics): - o procedimento vai ser executado pelo menos uma vez, mas possivelmente mais de uma vez # o cliente espera que o servidor volte a funcionar enviando nova requisição $ no máximo uma vez (at most once semantics): - o procedimento será executado uma única vez ou nenhuma # no caso de erro, o cliente desiste e reporta erro $ exatamente uma vez (exactly once semantics): - garante a execução do procedimento uma única vez # teoricamente seria a melhor semântica, porém difícil de implementar Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 14 / 16

1. O cliente falha após enviar uma requisição $ a computação estará ativa no servidor mas não existirá nenhum processo aguardando o resultado # processo ou computação órfã $ dois tipos de problemas: - desperdício de CPU - processo cliente ao retornar pode receber uma mensagem não esperada enviada ao processo órfão Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 15 / 16

$ Soluções: 1. extermínio (extermination): - o cliente mantém log das requisições (em disco) - quando falhar, ao reiniciar, elimina todos os processos órfãos 2. reencarnação (reincarnation): - quando o cliente reinicia, envia mensagem broadcast declarando o início de uma nova época - computações remotas serão finalizadas 3. reencarnação gentil (gentle reincarnation): - idem à solução anterior, porém só mata as requisições remotas quando não estiver ativo 4. expiração (expiration): - o servidor tem um tempo T para executar - se precisar de mais tempo tem que enviar requisição Set/2004 Sistemas Distribuídos - Edmar R. S. de Rezende 2004 16 / 16