Buscar

Modelos de Comunicação em Sistemas Distribuídos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
*
Modelos de Comunicação em SD
*
Modelos de Comunicação em
Sistemas Distribuídos
Módulo 3
Alcides Calsavara
*
*
*
Modelos de Comunicação em SD
*
Conteúdo
Elementos básicos de comunicação
Transmissão de dados
Endereçamento
Sincronismo
Enfileiramento (Bufferização)
Confiabilidade
Comunicação cliente-servidor
Comunicação em grupo
Chamada remota de procedimento
*
*
*
Modelos de Comunicação em SD
*
Comunicação cliente-servidor
*
*
*
Modelos de Comunicação em SD
*
Transmissão de dados
Dados em programas são estruturados enquanto que mensagens carregam informação sequencial:
» Linearização/Restauração de dados
Heterogeneidade na representação de dados em computadores:
» Uso de um formato externo comum
» Inclusão de uma identificação de arquitetura na mensagem
*
*
*
Modelos de Comunicação em SD
*
Marshalling/Unmarshalling
Marshalling:
Linearização de uma coleção de itens de dados estruturados
Tradução dos dados em formato externo
Unmarshalling:
Tradução do formato externo para o local
Restauração dos itens de dados de acordo com sua estrutura
*
*
*
Modelos de Comunicação em SD
*
Endereçamento
Esquemas:
Endereçamento máquina.processo
Endereçamento máquina.id-local
Descoberta de endereço via broadcasting (difusão)
Descoberta de endereço via um servidor de nomes
Problemas potenciais: transparência de localização, sobrecarga, escalabilidade
*
*
*
Modelos de Comunicação em SD
*
Comunicação síncrona
Primitiva send é bloqueante: processo cliente aguarda enquanto o núcleo envia a mensagem para o processo servidor.
Primitiva receive é bloqueante: processo servidor aguarda até que o núcleo receba uma mensagem endereçada para aquele processo.
*
*
*
Modelos de Comunicação em SD
*
Comunicação assíncrona
Primitiva send não é bloqueante: o processo cliente aguarda somente enquanto a mensagem é copiada para o buffer do núcleo.
Primitiva receive pode ser:
bloqueante: o processo servidor aguarda por uma mensagem.
não bloqueante: o processo servidor simplesmente comunica o núcleo que espera receber uma mensagem.
*
*
*
Modelos de Comunicação em SD
*
Enfileiramento
Situações:
Send ocorre antes de Receive
Um cliente faz um Send enquanto o servidor ainda atende a outro cliente
Solução trivial: clientes devem insistir ... 
Solução pragmática: mailbox (uma fila de mensagens controlada pelo núcleo):
mailbox criado a pedido do servidor
mensagens endereçadas ao mailbox
*
*
*
Modelos de Comunicação em SD
*
Confiabilidade
Mensagens se perdem, atrasam, duplicam.
Abordagens:
Send tem semântica não confiável: as aplicações devem garantir entrega de mensagens (ex: timeout)
Mensagem de acknowledgement enviada pelo servidor (no nível núcleo)
Mensagem de acknowledgement implícita na resposta do servidor
*
*
*
Modelos de Comunicação em SD
*
Pacotes em protocolo C-S
*
*
*
Modelos de Comunicação em SD
*
Chamada de Procedimentos Remotos (RPC)
Comunicação baseada em operações de entrada/saída: abstração fraca, sujeito a erros
Ideal: programar um sistema distribuído como se fosse centralizado
RPC objetiva permitir chamada de procedimento remoto como se fosse local, ocultando entrada/saída de mensagens
*
*
*
Modelos de Comunicação em SD
*
Visão geral
Um processo A chama um procedimento p de um processo B, entrando em estado de espera
O processo B passa a executar o procedimento p, e ao seu término faz um reply para o processo A
O processo A volta à sua execução normal após ter recebido o reply
*
*
*
Modelos de Comunicação em SD
*
Chamadas de procedimento
O procedimento chamador, que já tem suas variáveis locais empilhadas, empilha os parâmetros da chamada e o endereço de retorno
O procedimento chamado aloca suas variáveis locais
No retorno do procedimento chamado, os parâmetros e o endereço de retorno são desempilhados
*
*
*
Modelos de Comunicação em SD
*
Modos de parâmetros
Valor: procedimento chamado recebe uma cópia de uma variável conhecida do procedimento chamador
Referência: procedimento chamado recebe o endereço de uma variável conhecida do procedimento chamador
Cópia/Reescrita: procedimento chamador recebe uma cópia de uma variável conhecida do procedimento chamador e o valor desta cópia é reescrito na variável
*
*
*
Modelos de Comunicação em SD
*
Chamadas e mensagens em RPC
Máquina do Cliente
Máquina do Servidor
Kernel
Kernel
cliente
servidor
empacota
parâmetros
desempacota
resultados
desempacota
parâmetros
empacota
resultados
transporte de mensagens
via rede
1
2
3
4
0
5
6
7
8
9
10
11
*
*
*
Modelos de Comunicação em SD
*
Funções dos Stubs
Client stub
intercepta a chamada
empacota os parâmetros (marshalling)
envia mensagem de request ao servidor (através do núcleo)
Server stub
recebe a mensagem de request (através do núcleo)
desempacota os parâmetros (unmarshalling)
chama o procedimento, passando os parâmetros
empacota o resultado
envia mensagem de reply ao cliente (através do núcleo)
Client stub
recebe a mensagem de reply (através do núcleo)
desempacota o resultado
passa o resultado para o cliente
*
*
*
Modelos de Comunicação em SD
*
Falhas em RPC
O cliente não é capaz de localizar o servidor
A mensagem de request do cliente para o servidor é perdida
A mensagem de reply do servidor para o cliente é perdida
O servidor pára após ter recebido a mensagem de request
O cliente pára após ter enviado a mensagem de request
*
*
*
Modelos de Comunicação em SD
*
Falha do servidor
Passos normais:
 recebe mensagem de request
 executa procedimento
 envia mensagem de reply
Falha pode ocorrer:
após a execução
antes da execução
Semânticas de chamada:
pelo menos um
no máximo um
exatamente um
*
*
*
Modelos de Comunicação em SD
*
Falha do cliente
O servidor torna-se um “órfão”
Soluções:
exterminação do servidor pela máquina do cliente
reencarnação do cliente: toda computação remota é destruída
"reencarnação" suave do cliente: somentes as computações remotas referentes a aquele cliente são destruídas
expiração: servidor estabele um timeout para confirmação
*
*
*
Modelos de Comunicação em SD
*
Comunicação em grupo
Tolerância a falhas baseada na replicação de serviços
Localização de objetos em serviços distribuídos
Melhor desempenho via replicação de dados
Múltipla atualização
*
*
*
Modelos de Comunicação em SD
*
Tipos de grupos
Visibilidade:
Aberto: um processo fora do grupo consegue enviar mensagens para o grupo todo
Fechado: somente processos do grupo enviam mensagens para o grupo todo
Organização:
Peer: todos os processos tomam decisão
Hierárquico: decisão é centralizada
*
*
*
Modelos de Comunicação em SD
*
Endereçamento de grupo
Multicast: um processo envia uma mensagem simultânea e somente para os membros do grupo. 
Broadcast: um processo envia uma mensagem para todas as máquinas e somente as que contêm um membro do grupo a assimila.
Unicast: um processo envia uma mensagem para todos os membros do grupo em série.
*
*
*
Modelos de Comunicação em SD
*
Modificações no grupo
Controle centralizado: servidor de grupo
Controle descentralizado: acordo entre os membros
Operações:
Entrada de um membro: atualizar estado
Saída de um membro: se involuntária (ex: parada), todos os membros restantes devem notar sua saída.
*
*
*
Modelos de Comunicação em SD
*
Primitivas de comunicação
GroupSend: envia mensagem para todos os membros do grupo
GroupReceive: aguarda mensagem enviada a todo o grupo
GetReply: aguarda resposta de todos os membros do grupo após um GroupSend
*
*
*
Modelos de Comunicação em SD
*
Atomicidade
Uma mensagem enviada ao grupo deve ser recebida por todos os seus membros ou por nenhum deles.
Situação: o enviador pode parar enquanto está enviando a mensagem para o grupo.
Garantia de consistência do grupo
Facilidade de programação
*
*
*
Modelos de Comunicação em SD
*
Ordenação de mensagens
Todas as mensagens enviadas a um grupo devem chegar a todos os processos na mesma ordem.
Abordagens:
Ordenação por tempo global
Ordenação por tempo consistente: somente uma mensagem por vez é difundida

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais