Redes e Sistemas Distribuídos II – Cód. 30127 Prof. MSc. Ronnison Reges Vidal 2 05/11/2015 Comunicação Protocolos de Camadas Mater Christi 3 05/11/2015 Roteiro  Comunicação entre Processos  Protocolos em Camadas  Modelo Cliente-Servidor  RPC Mater Christi 4 05/11/2015 Comunicação Entre Processos (CEP)   CEP em Sistemas Distribuídos é sempre baseada em troca de mensagens. Não existe memória ou clock compartilhados. 3 modelos de comunicação:    RPC: Remote Procedure Calls (Chamada de Procedimento Remoto, oculta a comprexidade da troca de mensagens) MOM: Message-Oriented Middleware (Middleware Orientado a Mensagem, como email) Data Streaming (Fluxo de Dados, para aplicações multimídias) Mater Christi 5 05/11/2015 Termos mais usados na CEP   Multicast: enviar para múltiplos receptores Protocolos Orientados a Conexão: Há a necessidade de estabelecer conexão (i.e. Socket) antes da troca de mensagens (por exemplo, Transmission Control Protocol (TCP) ou Universal Datagram Protocol (UDP)      TCP: lento mas seguro quanto a perda de dados UPD: rápido mas pode haver perda de dados Protocolos sem conexão: por exemplo, troca de e-mail Checksum: técnica comum para validar os dados recebidos OSI: Modelo Open Systems Interconnection (Baseado em pacotes) Mater Christi Protocolos de Camadas  Camadas, interfaces e protocolos do modelo OSI. 7. Alto nível 6. Cria mensagem: Como string de bits 5. Estabelece comunicação 4. Cria pacotes 3. Roteamento de rede 2. Coloca: header/footer tag + checksum 1. Transmiti bit Protocolos em Camadas  Uma mensagem típica como ela aparece na rede. Camada de Enlace  Discussão entre um receptor e um emissor na camada de enlace de dados. 9 05/11/2015 Modelo Cliente-Servidor Mater Christi 10 05/11/2015 Modelo Cliente Servidor  Sobrecarga de Camadas    A cada mensagem enviada deve ser processado meia dúzia de camadas cada qual com seu cabeçalho Para sistemas distribuídos amplos não há muitos problemas O fator limitante são as linhas de processamento para sistemas distribuídos localmente  Sobrecarga de protocolos Mater Christi 11 05/11/2015 Modelo Cliente Servidor  Solução  Estrutura o sistema operacional como um grupo de processos cooperantes, chamados de servidores, que oferecem serviços aos usuários, chamados de clientes  Cliente   – Modelo cliente/servidor e servidor Executam mesmo microkernel Execução de um processo, de vários clientes, de vários clientes ou uma mistura de ambos Mater Christi 12 05/11/2015 Modelo Cliente Servidor  Baseado em um protocolo de solicitação / resposta simples , sem conexão.   O cliente envia uma mensagem de solicitação para o servidor solicitando algum serviço O servidor faz o trabalho e devolve os dados pedidos ou de um código de erro indicando porque o trabalho não pode ser realizada Mater Christi 13 05/11/2015 Modelo Cliente Servidor Mater Christi 14 05/11/2015 Modelo Cliente Servidor  Vantagem:    simplicidade O cliente envia uma solicitação e recebe uma resposta Nenhuma conexão deve ser estabelecida antes de usar ou desfeita depois A mensagem de resposta serve como aviso de recepção para a solicitação Mater Christi 15 05/11/2015 Modelo Cliente Servidor  Vantagem:   Eficiência A pilha de protocolo é mais curta Assumindo que todas as máquinas são idênticos, são necessárias apenas três níveis de protocolo  Solicitação e Resposta  enlace de dados  físicos Mater Christi 16 05/11/2015 Modelo Cliente Servidor  Exemplo  http://www.e-readinglib.com/chapter.php/143358/41/Tanenbau m_-_Distributed_operating_systems.html  Exemplo  de cliente e servidor em C de cliente e servidor em Java Deitel: Como programar Mater Christi 17 05/11/2015 Modelo Cliente Servidor  Endereçamento  Bloqueio vs Sem bloqueio  Bufferização vs Não Buferização  Confiável vs Não confiável Mater Christi 18 05/11/2015 Modelo Cliente Servidor  Endereçamento    Utilização de código de máquina e processo Utilizar processos aleatórios e localizá-los por broadcast Utilizar um servidor de nomes e localizar os clientes em tempo de execução Mater Christi 19 05/11/2015 Modelo Cliente Servidor  Endereçamento   Envio de mensagens do cliente ao servidor O endereço é da máquina ou do processo?  Endereços de Rede – Processo único  Endereços de Processos – utiliza dois identificadores: Máquina e para o processo Mater Christi 20 05/11/2015 Modelo Cliente Servidor  Endereçamento  Problemas  transparência é um dos principais objetivos da construção de um sistema distribuído  suponha que o servidor de arquivos normalmente é executado na máquina X  abordagem alternativa consiste em atribuir a cada processo de um endereço único que não contém um número da máquina incorporado Mater Christi 21 05/11/2015 Modelo Cliente Servidor  Endereçamento  abordagem alternativa consiste em atribuir a cada processo de um endereço único que não contém um número da máquina incorporado ter um processo de alocação de endereço centralizada que simplesmente mantém um contador  A desvantagem deste sistema é que os componentes centralizados como este não escalam para sistemas de grande porte e, portanto, deve ser evitado  Mater Christi 22 05/11/2015 Modelo Cliente Servidor  Endereçamento  outro método de atribuição de identificadores de processo é deixar que cada processo escolher seu próprio identificador de um grande espaço de endereço escasso  Pacote de difusão – envia para todas as máquinas Mater Christi 23 05/11/2015 Modelo Cliente Servidor  Endereçamento  Embora este sistema é transparente , mesmo com o cache, a difusão coloca carga extra no sistema  carga adicional pode ser evitada , proporcionando uma máquina adicional para mapear de alto nível (ou seja , ASCII ) para nomes de endereços da máquina Mater Christi 24 05/11/2015 Modelo Cliente Servidor Mater Christi 25 05/11/2015 Modelo Cliente Servidor  Primitivas de Bloqueio vs Sem bloqueio     Primitivas de bloqueio ou Primitivas síncronas Primitivas de não-bloqueio ou Primitivas assíncronas Quando um processo chama send ele especifica um destino e um buffer para enviar para esse destino Enquanto a mensagem está sendo enviada, o processo de envio é bloqueado (ou seja, suspenso). A instrução após a chamada para send não é executada até que a mensagem foi enviada completamente Mater Christi 26 05/11/2015 Modelo Cliente Servidor  Primitivas   de Bloqueio vs Sem bloqueio Uma alternativa são as primitivas sem bloqueio Se send é sem bloqueio, ele retorna o controle para o chamador imediatamente, antes que a mensagem seja enviada Mater Christi 27 05/11/2015 Modelo Cliente Servidor Mater Christi 28 05/11/2015 Modelo Cliente Servidor  Primitivas   de Bloqueio vs Sem bloqueio A vantagem deste sistema é que o processo envio pode continuar a computação em paralelo com a transmissão de mensagens, em vez de ter o processador ir ocioso Desvantagem O enviador não pode modificar a mensagem no buffer até que a mensagem tenha sido enviada Mater Christi 29 05/11/2015 Modelo Cliente Servidor  Primitivas  de Bloqueio vs Sem bloqueio Há duas formas  Cópia interna no buffer do kernel, permitindo que o processo continue  Interromper o enviador quando a mensagem tiver sido enviada  Problemas de sincronização de comunicação Mater Christi 30 05/11/2015 Modelo Cliente Servidor  Primitivas  de Bloqueio vs Sem bloqueio Envio com bloqueio  CPU permanece ocioso durante a transmissão  Envio sem bloqueio com cópia  CPU  desperdiça tempo com a cópia extra Envio sem bloqueio com interrupção  Torna a programação difícil Mater Christi 31 05/11/2015 Protocolos de Middleware Mater Christi Protocolos de Middleware  Um modelo de referência adaptado para comunicação em rede. 33 05/11/2015 Tipos de Comunicação  Middleware visto como serviço intermediário (distribuído) na comunicação de nível da aplicação Mater Christi 34 05/11/2015 Tipos de Comunicação  Comunicação Síncrona e Assíncrona  Comunicação Persistente  Armazena a comunicação pelo tempo necessário(por exemplo, mail delivery)  Comunicação  Transiente A mensagem é armazenada enquanto o emissor e o receptor estão funcionando.  Comunicação Discreta  Comunicação por Fluxo Mater Christi 35 05/11/2015 RPC Remote Procedure Call Mater Christi 36 01/08/2013 RPC   Troca de mensagem entre processos Birrel e Nelson (1984)   Executar chamadas a procedimentos localizados em outras máquinas Remote Procedure Call – RPC    Máquinas diferentes – Espaços de endereço diferentes Parâmetros e resultados necessitam ser transportados Alguma ou ambas as máquinas podem quebrar Chamada de Procedimento Convencional (a) Passagem de parâmetros em uma chamada de procedimento local: a pilha antes da chamada a read (b) A pilha enquanto o procedimento está rodando. 38 01/08/2013 Stubs Cliente e Servidor  Stub  Pedaço do código que transforma informações (parâmetros) vindas de procedimentos locais em mensagens  Stub  Cliente Servidor Pedaço do código que transforma requisições vindas da rede em chamadas de procedimento locais 39 01/08/2013 Stubs Cliente e Servidor  Transparência chamada  Tipo de interface entre o código de usuário e o sistema operacional local  Stub     ao procedimento de cliente Método Análogo Empacotamento de parâmetros Envio ao servidor Bloqueio em espera a resposta 40 01/08/2013 Stubs Cliente e Servidor  Stub servidor tipicamente chama o procedimento “receive” e está bloqueado esperando as mensagem que virão  Stub servidor desempacota os parâmetros e chama o procedimento servidor normalmente 41 01/08/2013 Stubs Cliente e Servidor  Executa a operação e retorna o resultado  Empacota o resultado em uma mensagem  Chama o procedimento “send” retornando o resultado ao cliente  Chama o procedimento “receive” esperando novas requisições 42 01/08/2013 Stubs Cliente e Servidor A menssagem é copiada para o buffer de espera e o processo cliente é desbloqueado  Stub cliente inspeciona a mensagem e desempacota o resultado copiando o para o procedimento que o chamou  O procedimento sabe que o dado está disponível, mas não tem ideia que foi processado remotamente Stubs Cliente e Servidor  Princípio da RPC entre um programa cliente e servidor. Passos de uma chamada de procedimento remoto 1. 2. 3. 4. 5. Procedimento cliente chama o stub cliente em modo normal Stub cliente constrói a mensagem, chamadas locais OS OS do cliente envia mensagem para remoto OS Remoto OS dá mensagem para stub servidor Stub descompacta os parâmetros, e chama o servidor 45 05/11/2015 Passos de uma chamada de procedimento remoto 1. 2. 3. 4. 5. Servidor não funciona, retorna resultado para o topo Stub servidor empacota em mensagem, chamadas locais OS OS do servidor envia a mensagem para o OS do cliente OS do cliente dá a mensagem para stub cliente Stub descompacta resultado, retorna ao cliente Mater Christi Passando Valores por Parâmetro  Passos envolvidos na computação remota através do RPC