Sistemas Distribuídos Professora: Ana Paula Couto DCC 064
Comunicação- Protocolos, Tipos, RPC Capítulo 4
Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação (Camada de Middleware) Persistência e Sincronização Chamada de Procedimento Remoto (RPC) Operação Básica Passagem de Parâmetros
Comunicação entre Processos Coração de qualquer Sistema Distribuído Como processos em diferentes máquinas trocam informações? Não é uma tarefa trivial! Desejável obter modelos onde a complexidade da comunicação seja transparente para o desenvolvedor
Modelo Cliente-Servidor Participantes são divididos em: Servidores: implementam um serviço específico Clientes: solicitam ao servidor um determinado serviço e espera pela resposta Comportamento requisição-resposta
Protocolos em Camadas
Protocolos em Camadas
Camada Física Responsável pelo envio de bits Trata da padronização das interfaces elétrica, mecânica e de sinalização Protocolos são dependentes do meio de transmissão do link
Camada Enlace Responsável pelo envio de frames entre os links Característica importante: um datagrama pode ser manipulado por diferentes tipos de protocolos da camada de enlace: Ethernet (CSMA/CD), PPP Cada protocolo diferente pode ou não implementar um conjunto de serviços. Ex.: entrega confiável da informação
Camada Rede Redes de longa distância são constituídas de muitos nós com diferente caminhos entre eles. Como definir um caminho entre um par origem-destino? Roteamento é a principal tarefa da camada de rede Internet Protocol: protocolo sem conexão, onde pacotes são roteados de forma independente best-effort service
Camada de Transporte Responsável pela comunicação lógica entre diferentes processos sendo executados em diferentes hosts (fim-a-fim) Protocolos da camada de transporte não estão implementados nos roteadores Pode fornecer os seguintes serviços: multiplexing/demultiplexing transmissão confiável garantias de banda, retardo
Protocolos de Transporte na Internet Transmission Control Protocol (TCP) Orientado a Conexão Confiável, porém lento Universal Datagram Protocol (UDP) Sem conexão Rápido, porém não confiável Escolha está ligada as caracteristicas da aplicação!
Camada de Aplicação Distinção entre aplicação para redes e protocolos da camada de aplicação Protocolo: pequena (talvez grande) peça de uma aplicação Ex.1: Aplicação WEB HTTP Ex.2: Aplicação Email SMTP Protocolos definem: tipos de mensagens trocadas, sintaxe
Camada de Middleware Camada de software que é situada logicamente entre uma camada de nível mais alto, composta de usuários e aplicações e uma camada subjacente, que consiste de facilidades básicas de comunicação Inúmeros protocos para suportar serviços de middleware: Autenticação: não estão vinculados a uma aplicação Comprometimento Comunicação: Serviços de comunicação de alto nível
Camada de Middleware
(Sockets) Como os processos executando em diferentes máquinas trocam informação? Em uma visão pilha de protocolos TCP/IP Enviando mensagens através da utilização de sockets Socket: ponto final de uma comunicação fullduplex entre dois processos Processo casa / Socket Porta Socket: Porta entre o processo da aplicação e o protocolo de transporte
(Sockets) Informações são string de bytes, sem significado aparente Não existe a transparência de distribuição: toda a comunicacão está está explícita, através de procedimentos send e receive Funções mais sofisticadas devem ser feitas na camada de aplicação Por que não oferecer comunicação de alto nível, indepedente da aplicação?
Solução! Middleware de comunicação Tipos: Chamadas de Procedimento Remoto Comunicação orientada a Mensagens Comunicação orientada a fluxo
Tipos de Comunicação (Middleware) Persistência Persistente: Mensagem é armazenada pelo middleware de comunicação durante o tempo que for necessário para entregá-la ao receptor. Transiente: Mensagem é armazenada somente durante o tempo em que a aplicação remetente e a aplicação receptora estiverem executando
Tipos de Comunicação (Middleware) Sincronização Assíncrona: Remetente continua sua execução imediatamente após ter apresentado sua mensagem para transmissão Síncrona: Remetente é bloqueado até saber que sua requisição foi aceita Middleware avise que se encarregará da transmissão Requisiçao ser entregue ao receptor Ate o instante que o receptor retornar uma resposta
Tipos de Comunicação (Middleware) Granularidade Discreta: Partes se comunicam por mensagens e cada mensagem forma uma unidade de informação completa Fluxo: Várias mensagens,sendo que as mensagens estão relacionadas uma com as outras pela ordem ou pela relação temporal
Chamada de Procedimento Remoto Birrell and Nelson (1984) Permite a processos chamar procedimentos localizados em outras máquinas Desenvolvedor não precisa se preocupar mais com detalhes de implementação de rede (sockets nunca mais!) Conceitualmente simples, mas...
RPC - Complicações Arquiteturas de duas máquinas podem ser diferentes Espaço de endereçamento diversos Passagem de parâmetros
RPC Como funciona? A idéia fundamental é fazer com que uma chamada de procedimento remoto pareça com uma chamada local Transparência
RPC Como funciona? Transparência conseguida com o uso de stubs (apêndices) Stub do cliente responsável por empacotar os parâmetros em uma msg e enviar a msg para a máquina do servidor. Quando resposta chega, resultado é copiado para cliente, e controle volta a ele Stub do servidor responsável por desempacotar parâmetros, chamar o procedimento do servidor e retornar resposta para máquina do cliente
RPC Como funciona? Máquina Cliente Máquina Servidora Cliente Chamada Retorno Empacota Parâmetros Desempacota Resultado Desempacota Parâmetros Empacota Resultado Chamada Retorno Servidor Stub do Cliente SO Stub do Servidor SO Transporte de mensagens na rede
RPC Como funciona?
Passos seguidos por um RPC 1. Procedimento do cliente chama stub cliente de modo usual 2. Stub do cliente constrói uma msg e chama o SO 3. SO envia msg para SO remoto 4. SO remoto repassa msg para stub do servidor 5. Stub do servidor desempacota parâmetros e chama procedimento servidor 6. Procedimento servidor executa e retorna o resultado 7. Stub do servidor empacota resultado em uma msg e chama SO 8. SO remoto envia msg para SO da máquina cliente 9. SO do cliente passa msg para stub cliente 10. Stub cliente desempacota resultado, repassando-o para o cliente
RPC Passagem de Parâmetros Função do stub do cliente é pegar seus parâmetros, empacotá-los em uma mensagem e enviá-los ao stub do servidor (montagem de parâmetros - parameter marshaling). Operação parece simples, mas: Arquiteturas diferentes? Passagem de ponteiros (diferente espaço de endereçamento)?
RPC Passagem de Parâmetros por valor
RPC Passagem de parâmetros por valor A chamada do procedimento remoto add somente funcionará se as máquinas do cliente e do servidor forem idênticas Problemas: Representação diferentes para caracteres Ordenação de bytes Solução: Cliente diz seu tipo. Conversão feita pelo servidor se tipos forem diferentes.
RPC Passagem de parâmetros por referência Problema: um ponteiro é significativo somente dentro do espaço de endereço do processo no qual está sendo usado read(fd,buf,nbytes) (executado no servidor de arquivos) fd inteiro que indica um arquivo buf endereço do vetor de caracteres nbytes total de bytes a serem lidos
RPC Passagem de parâmetros por referência Mecanismo de passagem de parâmetro copiar/restaurar Variável é copiada na pilha do cliente (passagem de parâmetro por valor) Variável é manipulada no servidor Valor de retorno sobreescre o valor original na pilha do cliente
RPC Passagem de parâmetros por referência No caso do read, stub do cliente sabe que o segundo parâmetro aponta para um conjunto de caracteres Suponha que o cliente saiba o tamanho do vetor Solução: Copiar o vetor para a mensagem e enviar ao servidor Stub do servidor, chama o servidor com um ponteiro para este vetor Modificação feita pelo servidor é armazenada diretamente no vetor que está no stub Ao enviar o vetor de volta ao stub do cliente, o vetor é copiado de volta ao cliente
RPC Linguagem de Programação de Interface - IDL Interface consiste em um conjunto de procedimentos que podem ser chamados por um cliente e que são implementados por um servidor Utilização de interface simplifica consideravelmente aplicações cliente-servidor baseadas em RPCs Gerar completamente stubs de cliente e servidor - todos os sistemas de middleware baseados em RPC oferecem uma IDL para suportar desenvolvimento de aplicação
RPC Resumindo... Permite a um cliente o acesso a um serviço remoto por meio de uma simples chamada a um procedimento local Possibilita que programas clientes sejam escritos de modo simples Pode localizar automaticamente o servidor correto Estabelece a comunicação entre software cliente e software servidor