Comunicação Parte II Carlos Ferraz 2002
Tópicos Comunicação Cliente-Servidor RPC Comunicação de objetos distribuídos Comunicação em Grupo Transações Atômicas Comunicação Stream 2
Comunicação cliente-servidor Requisição 7 Cliente Resposta Servidor 6 5 Requisição/Resposta Núcleo Núcleo 4 3 2 Enlace Rede 1 Físico 3
Comunicação cliente-servidor (cont) Código Tipo De Para Des crição REQ Request C S O cliente deseja um serviço REP Reply S C Resposta do servidor para o cliente ACK Ackowledgment x y O pacote anterior chegou AYA Are you alive? C S Investiga se o servidor não parou IAA I am alive S C O servidor não parou TA Try again S C O servidor está lotado AU Address unknown S C Nenhum processo está usando aquele endereço 4
Protocolo Pedido-Resposta Request-Reply (RR) Típico na interação cliente-servidor Primitivas: DoOperation - clientes invocam operações remotas remotas GetRequest - servidor adquire os pedidos de serviços serviços SendReply 5
Chamada de Procedimentos Remotos (RPC) Comunicação baseada em operações de entrada/saída: abstração fraca, sujeito a erros erros Ideal: programar um sistema distribuído como se como se fosse centralizado RPC objetiva permitir chamada de procedimento procedimento remoto como se fosse local, ocultando entrada/saída de mensagens 6
RPC: Remote Procedure Call Protocolo Pedido-Resposta (RR) Outros protocolos Request (R) usado quando não há retorno de valor e cliente não pede confirmação cliente não bloqueia Request-Reply-Acknowledge Reply (RRA) cliente ack resposta do servidor Integração relativamente transparente com linguagens linguagens de programação, que inclui uma notação notação para definir interfaces ( IDL ) 7
RPC: Visão geral Um processo A chama um procedimento p de um de um processo B, entrando em estado de espera O processo B passa a executar o procedimento procedimento p, e ao seu término faz um reply reply para o processo A O processo A volta à sua execução normal após após ter recebido o reply 8
Chamadas de procedimento O procedimento chamador, que já tem suas suas variáveis locais empilhadas, empilha os parâmetros da chamada e o endereço de retorno retorno O procedimento chamado aloca suas variáveis variáveis locais No retorno do procedimento chamado, os parâmetros e o endereço de retorno são desempilhados 9
RPC: considerações em função da distribuição Mantida a semântica de chamadas de procedimentos convencionais, mas... evitar passagem de endereço e variáveis globais novos tipos de erros Incl.: tratamento de exceções (ex.: atraso de comunicação! comunicação! timeout) 10
RPC: Implementação Suporte a RPC: Processamento de interface Manipulação da comunicação Ligação segue... 11
RPC: processamento de interface Integração dos mecanismos de RPC com os programas cliente e servidor escritos em uma uma linguagem de programação convencional convencional Cliente e servidor assinalam o mesmo identificador de procedimento para cada procedimento na interface 12
RPC: processamento de interface Stubs (no cliente e no servidor): transparência de transparência de acesso tratamento de algumas exceções no local marshalling unmarshalling C stub S stub rede 13
RPC: manipulação da comunicação Módulo de comunicação usa protocolo pedidoresposta para troca de mensagens entre cliente e servidor Mensagem de aplicação encapsulada em um request/reply cliente servidor res = srv.soma(a,b) res = Soma(a,b) res=request(srv,msg) reply(clt,res) DoOperation GetRequest SendReply 14
RPC: ligação O mecanismo possui um binder para resolução resolução de nomes, permitindo Ligação dinâmica Transparência de localização 15
Chamadas e mensagens em RPC Máquina do Cliente Máquina do Servidor 2 4 1 empacota 0 desempacota 5 parâmetros parâmetros cliente desempacota empacota 11 7 resultados resultados 10 8 6 servidor Kernel Kernel 3 9 transporte de mensagens via rede 16
Funções dos Stubs Client stub 1. intercepta a chamada 2. empacota os parâmetros (marshalling) 3. envia mensagem de request ao servidor (através do núcleo) Server stub 4. recebe a mensagem de request (através do núcleo) 5. desempacota os parâmetros (unmarshalling) 6. chama o procedimento, passando os parâmetros 7. empacota o resultado 8. envia mensagem de reply ao cliente (através do núcleo) Client stub 9. recebe a mensagem de reply (através do núcleo) 10. desempacota o resultado 11. passa o resultado para o cliente 17
RPC: Passagem de Parâmetros 2-8 Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 18
Especificação de Parâmetros e Geração de Stub a) Um procedimento b) A mensagem correspondente Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 19
RPC Assíncrono a) Interação cliente-servidor em um RPC tradicional b) Interação usando RPC assíncrono Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 20
Construção de um Cliente e um de Servidor 2-14 Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 21
Binding um Cliente a um Servidor em DCE Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 22
Falhas em RPC O cliente não é capaz de localizar o servidor A mensagem de request do cliente para o servidor é perdida A mensagem de reply do servidor para o cliente cliente é perdida O servidor pára após ter recebido a mensagem mensagem de request O cliente pára após ter enviado a mensagem de mensagem de request 23
Falha do servidor Passos normais: recebe mensagem de request executa procedimento envia mensagem de reply Falha pode ocorrer: após a execução antes da execução Semânticas de chamada: pelo menos uma vez no máximo uma vez exatamente uma vez 24
Falha do cliente O servidor torna-se um órfão Soluções: terminação do servidor pela máquina do cliente reencarnação do cliente: toda computação remota remota anterior é destruída reencarnação suave do cliente: somente as computações remotas referentes àquele cliente são são destruídas expiração: servidor estabelece um timeout para confirmação 25
Objetos Distribuídos 2-16 Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 26
Comunicação em grupo E R R R R R E R R R R Processo que envia mensagem Processo que recebe mensagem " Tolerância a falhas baseada baseada na replicação de de serviços " Localização de objetos em em serviços distribuídos " Melhor desempenho via replicação de dados Múltipla atualização 27
Tipos de grupos Visibilidade: Aberto: um processo fora do grupo consegue enviar enviar mensagens para o grupo todo Fechado: somente processos do grupo enviam mensagens para o grupo todo Organização: Peer: todos os processos tomam decisão Hierárquico: decisão é centralizada 28
Endereçamento de grupo Multicast: um processo envia uma mensagem mensagem simultânea e somente para os membros do grupo Broadcast: um processo envia uma mensagem mensagem para todas as máquinas e somente somente as que contêm um membro do grupo a grupo a assimila Unicast: um processo envia uma mensagem para para todos os membros do grupo em série 29
Modificações no grupo Controle centralizado: servidor de grupo Controle descentralizado: acordo entre os membros Operações: Entrada de um membro: atualizar estado Saída de um membro: se involuntária (ex: parada), parada), todos os membros restantes devem notar sua notar sua saída 30
Atomicidade Uma mensagem enviada ao grupo deve ser recebida por todos os seus membros ou por nenhum deles Situação: o enviador pode parar enquanto está enquanto está enviando a mensagem para o o grupo Garantia de consistência do grupo Facilidade de programação 31
Transações Atômicas A 100 0 B 300 250 50 100 150??? C D 0 150 100 150 0150 0 32
Propriedades das Transações Atômicas Propriedades ACID Atomicidade: tudo-ou-nada Consistência: uma transação leva o sistema de de um estado consistente a outro estado consistente Isolamento: transações concorrentes não interferem umas nas outras Duração: terminada uma transação, as mudanças são permanentes 33
Comunicação Stream com QoS Reserva de recurso (RSVP) em um sistema distribuído Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 34
Mecanismos de Sincronização (1) Sincronização explícita no nível de dados (na aplicação) aplicação) Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 35
Mecanismos de Sincronização (2) Sincronização no nível de middleware 2-41 Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002 36