Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
-
Upload
herman-castilho-wagner -
Category
Documents
-
view
218 -
download
3
Transcript of Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
![Page 1: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/1.jpg)
Sistemas Distribuídos
Carlos Oberdan Rolim
Ciência da ComputaçãoSistemas de Informação
![Page 2: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/2.jpg)
Modelos de comunicação em Sistemas Distribuídos
![Page 3: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/3.jpg)
ConteúdoElementos básicos de comunicação
Transmissão de dadosEndereçamentoSincronismo
Enfileiramento (Bufferização)Confiabilidade
Comunicação cliente-servidorComunicação em grupoChamada remota de procedimento
![Page 4: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/4.jpg)
Comunicação cliente-servidor
Cliente
Núcleo Núcleo
Rede
Requisição
RespostaServidor
Requisição/Resposta
1234567
EnlaceFísico
![Page 5: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/5.jpg)
Transmissão de dadosDados em programas são estruturados enquanto que mensagens carregam informação sequencial:
» Serialização (Conversão) / Deserializaçã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
![Page 6: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/6.jpg)
Marshalling/Unmarshalling
Marshalling:Transformação de uma coleção de itens de dados estruturados de forma a serem armazenados ou transmitidosTradução dos dados em formato externo
Unmarshalling:Tradução do formato externo para o localRestauração dos itens de dados de acordo com sua estrutura original
Também chamado de serialização
Também chamado de deserialização
![Page 7: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/7.jpg)
Associação entre um nome e um objeto• Identificar os objetos• Localizar os objetos• Partilhar os objetos• Simplificar a interface com os utilizadores• Simplificar a gestão do sistema
Endereçamento
![Page 8: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/8.jpg)
Endereçamento
Esquemas:Endereçamento máquina.processoEndereçamento máquina.id-localDescoberta 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
![Page 9: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/9.jpg)
Nomes e Identificadores
Nome: representação de um objeto, normalmente na forma de uma cadeia de caracteres
Atribuído pelo utilizadorUm objeto pode ser designado por vários nomesCada objeto tem que ter pelo menos um nome
Identificador: nome sistema de um objeto, normalmente em formato binário
Atribuído por uma autoridadePermite identificar e acessar o objetoAutoridade: gere o objeto, suporta a sua implementação
![Page 10: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/10.jpg)
Exemplos de Identificadores e Autoridades
Identificador Autoridade
Endereço de memória virtual Gestão da memória virtual no S.O. Endereço IP Autoridade Internet Endereço MAC Fabricante da interface de rede Endereço do controlador do disco Configurador do computador Bloco de Disco Inicialização do sistema de arquivos
![Page 11: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/11.jpg)
Hierarquia das Associações
A associação nome/objeto é lógica, sendo frequentemente entre nomes pertencentes a diferentes níveis de abstração:Arquivo Unix : a/b/c inode 1056 dispositivo -
número do bloco disco;
Nó da rede Internet : [email protected] endereço IP 100.100.100.1 endereço Ethernet.
![Page 12: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/12.jpg)
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.
![Page 13: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/13.jpg)
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.
![Page 14: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/14.jpg)
Enfileiramento
Situações:Send ocorre antes de ReceiveUm 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 servidormensagens endereçadas ao mailbox
![Page 15: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/15.jpg)
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
![Page 16: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/16.jpg)
Chamada de Procedimentos Remotos (RPC)
Chamada remota de procedimento (RPC, acrônimo de Remote Procedure Call) é uma tecnologia de comunicação entre processos que permite a um programa de computador chamar um procedimento em outro espaço de endereçamento (geralmente em outro computador, conectado por uma rede).
O programador não se preocupa com detalhes de implementação dessa interação remota: do ponto de vista do código, a chamada se assemelha a chamadas de procedimentos locais.
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
![Page 17: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/17.jpg)
Visão geralUm 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
![Page 18: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/18.jpg)
Chamadas de procedimentoO 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
![Page 19: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/19.jpg)
Stubs
Para permitir que os servidores sejam acessados por diferentes clientes, diversos sistemas padronizados de RPC foram criados. A maioria deles usa uma linguagem de descrição de interface (IDL) para que diferentes plataformas possam chamar procedimentos. Pode-se gerar interfaces entre cliente e servidor a partir de um arquivo IDL, os chamados stubs.
Resumindo: São partes (fragmentos) de algoritmos que provêm a abstração de uma chamada (local) de procedimento (método) fazendo a ligação deste com o mecanismo de comunicação. O stub é parte do código que faz a chamada remota, é utilizado no cliente e no servidor.
![Page 20: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/20.jpg)
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)
![Page 21: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/21.jpg)
Funções dos Stubs
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)
![Page 22: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/22.jpg)
Funções dos Stubs
Client stub
recebe a mensagem de reply (através do núcleo)
desempacota o resultado
passa o resultado para o cliente
![Page 23: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/23.jpg)
Chamadas e mensagens em RPC
Máquina do Cliente Máquina do Servidor
Kernel Kernel
cliente servidor
empacotaparâmetros
desempacotaresultados
desempacotaparâmetros
empacotaresultados
transporte de mensagensvia rede
12
3
40 5
6
78
9
1011
![Page 24: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/24.jpg)
Falhas em RPCO cliente não é capaz de localizar o servidorA mensagem de request do cliente para o servidor é perdidaA mensagem de reply do servidor para o cliente é perdidaO servidor pára após ter recebido a mensagem de requestO cliente pára após ter enviado a mensagem de request
![Page 25: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/25.jpg)
Falha do cliente
O servidor torna-se um “órfão”Soluções:
exterminação do servidor pela máquina do clientereencarnaçã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ídasexpiração: servidor estabele um timeout para confirmação
![Page 26: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/26.jpg)
Implementações
CORBA — padrão RPC independente de plataformaSun RPC — RPC para as plataformas Unix e LinuxDCOM — RPC para WindowsRMI — RPC para JavaSOAP — padrão RPC para web service
![Page 27: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/27.jpg)
Comunicação em grupo
ER 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çãoconsistência
![Page 28: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/28.jpg)
Tipos de grupos
Visibilidade:Aberto: um processo fora do grupo consegue enviar mensagens para o grupo todoFechado: somente processos do grupo enviam mensagens para o grupo todo
Organização:Peer: todos os processos tomam decisãoHierárquico: decisão é centralizada
![Page 29: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/29.jpg)
Endereçamento de grupoMulticast: 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.
![Page 30: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/30.jpg)
Modificações no grupo
Controle centralizado: servidor de grupo
Controle descentralizado: acordo entre os membros
Operações:Entrada de um membro: atualizar estadoSaída de um membro: se involuntária (ex: parada), todos os membros restantes devem notar sua saída.
![Page 31: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/31.jpg)
Primitivas de comunicaçãoGroupSend: 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
![Page 32: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/32.jpg)
AtomicidadeUma mensagem enviada ao grupo deve ser recebida por todos os seus membros ou por nenhum deles.
Situação: o emissor pode parar enquanto está enviando a mensagem para o grupo.
Garantia de consistência do grupo
Facilidade de programação
![Page 33: Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.](https://reader035.fdocumentos.tips/reader035/viewer/2022081520/570638511a28abb8238f8e2f/html5/thumbnails/33.jpg)
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