Modelos de Comunicação em SD
1
Modelos de Comunicação em
Sistemas Distribuídos
Módulo 3
Alcides Calsavara
Modelos de Comunicação em SD
2
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
3
Comunicação cliente-servidor
Cliente
Núcleo Núcleo
Rede
Requisição
Resposta
Servidor
Requisição/Resposta
1
2
3
4
5
6
7
Enlace
Físico
Modelos de Comunicação em SD
4
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
5
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
6
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
7
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
8
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
9
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
10
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
11
Pacotes em protocolo C-S
Código Tipo De Para Descrição
REQ Request C S O cliente deseja um
serviço
REP Reply S C Resposta do servidor para
o cliente
ACK Ackowledgment x y O pacote anterior chegou
AYA Are you alive? C S Investiga de o servidor
não parou
IAA I am alive S C O servidor não parou
TA Try again S C O servidor está lotado
AU Address unknown S C Nenhum processo está
usando aquele endereço
Modelos de Comunicação em SD
12
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
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
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
21
Comunicação em grupo
E
R R
R
R
R R
R R
E
R
Processo que envia mensagem
Processo que recebe mensagem
 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
22
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
23
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
24
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
25
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
26
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
27
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

03modelos (1).ppt

  • 1.
    Modelos de Comunicaçãoem SD 1 Modelos de Comunicação em Sistemas Distribuídos Módulo 3 Alcides Calsavara
  • 2.
    Modelos de Comunicaçãoem SD 2 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
  • 3.
    Modelos de Comunicaçãoem SD 3 Comunicação cliente-servidor Cliente Núcleo Núcleo Rede Requisição Resposta Servidor Requisição/Resposta 1 2 3 4 5 6 7 Enlace Físico
  • 4.
    Modelos de Comunicaçãoem SD 4 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
  • 5.
    Modelos de Comunicaçãoem SD 5 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
  • 6.
    Modelos de Comunicaçãoem SD 6 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
  • 7.
    Modelos de Comunicaçãoem SD 7 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.
  • 8.
    Modelos de Comunicaçãoem SD 8 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.
  • 9.
    Modelos de Comunicaçãoem SD 9 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
  • 10.
    Modelos de Comunicaçãoem SD 10 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
  • 11.
    Modelos de Comunicaçãoem SD 11 Pacotes em protocolo C-S Código Tipo De Para Descrição REQ Request C S O cliente deseja um serviço REP Reply S C Resposta do servidor para o cliente ACK Ackowledgment x y O pacote anterior chegou AYA Are you alive? C S Investiga de o servidor não parou IAA I am alive S C O servidor não parou TA Try again S C O servidor está lotado AU Address unknown S C Nenhum processo está usando aquele endereço
  • 12.
    Modelos de Comunicaçãoem SD 12 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
  • 13.
    Modelos de Comunicaçãoem SD 13 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
  • 14.
    Modelos de Comunicaçãoem SD 14 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
  • 15.
    Modelos de Comunicaçãoem SD 15 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
  • 16.
    Modelos de Comunicaçãoem SD 16 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
  • 17.
    Modelos de Comunicaçãoem SD 17 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
  • 18.
    Modelos de Comunicaçãoem SD 18 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
  • 19.
    Modelos de Comunicaçãoem SD 19 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
  • 20.
    Modelos de Comunicaçãoem SD 20 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
  • 21.
    Modelos de Comunicaçãoem SD 21 Comunicação em grupo E R R R R R R R R E R Processo que envia mensagem Processo que recebe mensagem  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
  • 22.
    Modelos de Comunicaçãoem SD 22 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
  • 23.
    Modelos de Comunicaçãoem SD 23 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.
  • 24.
    Modelos de Comunicaçãoem SD 24 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.
  • 25.
    Modelos de Comunicaçãoem SD 25 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
  • 26.
    Modelos de Comunicaçãoem SD 26 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
  • 27.
    Modelos de Comunicaçãoem SD 27 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