Redes e Sistemas Distribuídos II – Cód. 30127Prof. MSc. Ronnison Reges Vidal
ComunicaçãoProtocolos de Camadas
21/04/23
Mater Christi
2
Roteiro Comunicação entre Processos Protocolos em Camadas Modelo Cliente-Servidor RPC
21/04/233
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)
21/04/23
Mater Christi
4
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)
21/04/23
Mater Christi
5
Protocolos de Camadas Camadas, interfaces e protocolos do
modelo OSI.
7. Alto nível 6. Cria
mensagem: Como string de
bits5. Estabelece comunicação
4. Cria pacotes3. Roteamento
de rede2. Coloca:
header/footer tag +
checksum1. 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
21/04/23
Mater Christi
9
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
21/04/23
Mater Christi
10
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
21/04/23
Mater Christi
11
Modelo Cliente Servidor
21/04/23
Mater Christi
12
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
Modelo Cliente Servidor
21/04/23
Mater Christi
13
Modelo Cliente Servidor
21/04/23
Mater Christi
14
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
Modelo Cliente Servidor
21/04/23
Mater Christi
15
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
Modelo Cliente Servidor
21/04/23
Mater Christi
16
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
Modelo Cliente Servidor
21/04/23
Mater Christi
17
Endereçamento Bloqueio vs Sem bloqueio Bufferização vs Não Buferização Confiável vs Não confiável
Modelo Cliente Servidor
21/04/23
Mater Christi
18
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
Modelo Cliente Servidor
21/04/23
Mater Christi
19
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
Modelo Cliente Servidor
21/04/23
Mater Christi
20
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
Modelo Cliente Servidor
21/04/23
Mater Christi
21
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
Modelo Cliente Servidor
21/04/23
Mater Christi
22
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
Modelo Cliente Servidor
21/04/23
Mater Christi
23
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
Modelo Cliente Servidor
21/04/23
Mater Christi
24
Modelo Cliente Servidor
21/04/23
Mater Christi
25
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
Modelo Cliente Servidor
21/04/23
Mater Christi
26
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
Modelo Cliente Servidor
21/04/23
Mater Christi
27
Modelo Cliente Servidor
21/04/23
Mater Christi
28
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
Modelo Cliente Servidor
21/04/23
Mater Christi
29
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
Modelo Cliente Servidor
21/04/23
Mater Christi
30
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
Protocolos de Middleware
21/04/23
Mater Christi
31
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
21/04/23
Mater Christi
33
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
21/04/23
Mater Christi
34
RPCRemote Procedure Call
21/04/23
Mater Christi
35
01/08/201336
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.
01/08/201338
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
01/08/201339
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
01/08/201340
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
01/08/201341
Stubs Cliente e ServidorExecuta 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
01/08/201342
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. Procedimento cliente chama o stub cliente em modo normal
2. Stub cliente constrói a mensagem, chamadas locais OS
3. OS do cliente envia mensagem para remoto OS
4. Remoto OS dá mensagem para stub servidor5. Stub descompacta os parâmetros, e chama o
servidor
Passos de uma chamada de procedimento remoto
1. Servidor não funciona, retorna resultado para o topo
2. Stub servidor empacota em mensagem, chamadas locais OS
3. OS do servidor envia a mensagem para o OS do cliente
4. OS do cliente dá a mensagem para stub cliente5. Stub descompacta resultado, retorna ao cliente
21/04/23
Mater Christi
45
Passando Valores por Parâmetro Passos envolvidos na computação
remota através do RPC