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