460 likes | 547 Views
Redes e Sistemas Distribuídos II – Cód. 30127. Prof. MSc. Ronnison Reges Vidal. Comunicação. Protocolos de Camadas. Roteiro. Comunicação entre Processos Protocolos em Camadas Modelo Cliente-Servidor RPC. Comunicação Entre Processos (CEP).
E N D
Redes e Sistemas Distribuídos II – Cód. 30127 Prof. MSc. Ronnison Reges Vidal
Comunicação Protocolos de Camadas Mater Christi
Roteiro • Comunicação entre Processos • Protocolos em Camadas • Modelo Cliente-Servidor • RPC Mater Christi
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 e-mail) • Data Streaming (Fluxo de Dados, para aplicações multimídias) Mater Christi
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.
Modelo Cliente-Servidor Mater Christi
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
Modelo Cliente Servidor • Solução – Modelo cliente/servidor • Estrutura o sistema operacional como um grupo de processos cooperantes, chamados de servidores, que oferecem serviços aos usuários, chamados de clientes • Cliente 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
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
Modelo Cliente Servidor Mater Christi
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
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
Modelo Cliente Servidor • Exemplo de cliente e servidor em C • http://www.e-reading-lib.com/chapter.php/143358/41/Tanenbaum_-_Distributed_operating_systems.html • Exemplo de cliente e servidor em Java • Deitel: Como programar Mater Christi
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
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
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
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
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
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
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
Modelo Cliente Servidor Mater Christi
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
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
Modelo Cliente Servidor Mater Christi
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
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
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
Protocolos de Middleware Mater Christi
Protocolos de Middleware • Um modelo de referência adaptado para comunicação em rede.
Tipos de Comunicação • Middleware visto como serviço intermediário (distribuído) na comunicação de nível da aplicação Mater Christi
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
RPC Remote Procedure Call Mater Christi
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.
Stubs Cliente e Servidor • Stub Cliente • Pedaço do código que transforma informações (parâmetros) vindas de procedimentos locais em mensagens • Stub Servidor • Pedaço do código que transforma requisições vindas da rede em chamadas de procedimento locais
Stubs Cliente e Servidor • Transparência ao procedimento de chamada • Tipo de interface entre o código de usuário e o sistema operacional local • Stub cliente • Método Análogo • Empacotamento de parâmetros • Envio ao servidor • Bloqueio em espera a resposta
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
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
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 • 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
Passos de uma chamada de procedimento remoto • 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