Sistemas Distribuídos
Jorge Surian
[email protected]
Sistemas Distribuídos: Nomeação
Nomeação: Conceitos Básicos
 Nomes, Identificadores e Endereços
– Entidades: Máquinas, impressoras, discos, processos,
usuários, páginas Web, janelas gráficas, mensagens,
etc.
– São acessadas através de um ponto de acesso, ou
simplesmente, endereço
» Ex: Servidor e seu número IP
– Um endereço pode ser utilizado como uma maneira
de nomear, identificar uma entidade
» Problema: Entidade pode mudar facilmente de ponto de acesso!
–Ex: Servidor Web alocado em outra rede
2
2
Nomeação: Conceitos Básicos
 Nomes, Identificadores e Endereços
– Como nomear entidades, sem utilizar especificamente
seu endereço, ou seja, nomeá-las
independentemente da sua posição física
(localização)?
Resposta: Identificadores ou Nomes amigáveis a
seres humanos. É muito comum estabelecer
nomes de países, de jogadores de futebol do
passado ou de deuses mitológicos. É mais fácil ao
usuário entender que “Afrodite” não está
disponível do que “XPTO001X” está indisponível...
3
3
Nomeação: Conceitos Básicos
 Identificadores
– Em muitos casos, são cadeias aleatórias de bits, com
as seguintes propriedades:
» Um identificador referencia, no máximo, UMA entidade
» Cada entidade é referenciada por, no máximo, um
identificador
» Um identificador sempre referencia a mesma entidade, isto
é, nunca é reutilizado
–Exemplo: Identificadores de entidades em
sistemas P2P baseados no sistema Chord
4
4
Nomeação: Conceitos Básicos
 Nomes Amigáveis
– Nomes representados por uma cadeia de caracteres
» Pathnames, domínios na Internet, números de processos
» Ex: http://www.gmail.com; /etc/linux
– Como resolver a questão dos nomes e identificadores
para endereços?
» Com Sistemas de Nomeação
5
5
Nomeação: Sistemas de Nomeação
 Mantém uma vinculação nome-endereço
– Na forma mais simples
» Tabela de pares (nome,endereço)
» Contudo, sistemas que abrangem redes de grande porte,
uma tabela centralizada não vai funcionar como é
necessário...
 Três Classes
– Nomeação Simples
– Nomeação Estruturada
– Nomeação Baseada em Atributo
6
6
Nomeação: Sistemas de Nomeação
 Nomeação Simples
– Aplicada a identificadores
» Cadeias aleatórias de bits → nomes simples
» Não contém sequer uma informação sobre como localizar o
ponto de acesso de uma entidade associada
– Problema: Dado um identificador, como localizar o
ponto de acesso (endereço)?
» Soluções Simples (broadcasting)
» Localização Nativa
» Tabelas de Hash Distribuídas (DHT)
7
7
Nomeação Simples
 Nomeação Simples – Broadcasting e Multicasting
– Consideradas soluções simples
– Aplicáveis somente a redes locais
 Broadcasting
– Recursos oferecidos por redes locais nas quais todas
as máquinas estão conectadas a um único cabo ou
seu equivalente lógico
– Como funciona?
» Mensagem que contém o identificador da entidade é enviada
a todos as máquinas da rede.
» Cada uma das máquinas verifica se tem esta entidade.
» Máquinas com ponto de acesso para a entidade, enviam
uma mensagem que contém o endereço procurado.
8
8
Nomeação Simples
 Broadcasting
– Se torna ineficiente quando a rede cresce
» Largura de banda da rede é desperdiçada, com grande
número de mensagens de requisição
» Aumento da probabilidade de colisões de mensagens,
diminuindo o throughput do sistema
» Grande número de máquinas pode ser interrompido por
requisições que não podem responder
9
9
Nomeação Simples
 Multicasting
– Somente um grupo restrito de máquinas recebe a
requisição
– Banco de Dados Replicado
» Endereço multicast é associado a uma entidade replicada.
» Multicasting é usado para localizar a réplica mais próxima.
» Requisição para o endereço multicast, cada réplica responde
com seu endereço IP,
» Réplica mais próxima → aquela cuja resposta chega antes.
10
10
Nomeação Simples
 Multicasting
11
11
Nomeação Simples
 Localização Nativa
– Abordagem para suportar entidades móveis em redes
de grande escala
– Monitora a localização corrente de uma entidade
– Localização nativa costuma ser escolhida como o
lugar em que a entidade foi criada
12
12
Nomeação Simples
 Mobile IP
– Cada host móvel usa um endereço fixo
– Toda a comunicação é dirigida inicialmente ao agente
nativo do host móvel (situado na rede local do
endereço do host)
– Ao mudar de rede, host recebe um endereço externo
(care-of-adress) e registra no agente nativo
– Quando o agente nativo recebe um pacote para o
host móvel
» Se na rede local → pacote repassado
» Senão → túnel até a localização corrente
13
13
Nomeação Simples
 Localização Nativa
14
14
Nomeação Simples
 Localização Nativa
– Desvantagens
» Para se comunicar com uma entidade móvel, em
primeiro lugar um cliente tem que contatar a
localização nativa, que pode estar em um lugar
completamente diferente → Latência de
comunicação
» Assegurar que a localização nativa sempre exista
» Entidade decide mudar permanentemente para
outra localização → localização nativa deve
também mudar.
15
15
Nomeação: Tabelas de Hash Distribuídas (DHT)
 Exemplo: Nós são organizados logicamente em um anel
(Chord)
– Usa um espaço de identificadores de m bits para
designar nós e entidades específicas (arquivos,
processos)
– Número m bits é usualmente 128 ou 160
– Entidade com chave k cai sob a jurisdição do nó que
tenha o menor identificador id >= k → succ(k)
 Como resolver com eficiência uma chave k para o
endereço de succ(k)?
– Abordagem linear
– Tabela de Derivação
16
16
Nomeação: Tabelas de Hash Distribuídas (DHT) - Chord
 Abordagem linear
– Cada nó p monitora o sucessor succ(p+1) e o
predecessor pred(p)
– Ao receber uma requisição para a chave k, p repassa a
requisição para os seus vizinhos, a menos que
pred(p) < k <= p → p retorna o próprio endereço
– Não escalável!
17
17
Nomeação: Tabelas de Hash Distribuídas (DHT) - Chord
a) Suponhamos que
p = 4 receba uma
requisição para
k = 7 → succ(p+1)
→ repassa a
requisição ao nó = 9
b) Suponhamos que
p = 4 receba uma
requisição para
k = 3 → como
pred(4) = 1< 3<=4
→ retorna o próprio
endereço.
18
18
Nomeação: Tabelas de Hash Distribuídas (DHT) - Chord
 Tabela de derivação (finger table)
– Possui, no máximo, m entradas
– Denotando a tabela de derivação de p por Ftp
» Ftp[i]=succ(p+2 i -1) i-ésima entrada aponta para o primeiro nó que
sucede p por no mínimo 2 i -1
19
19
Nomeação: Tabelas de Hash Distribuídas (DHT) - Chord
 Como encontrar uma entidade k?
– Referências na tabela de derivação são atalhos para
nós existentes no espaço de identificadores.
– Distância do atalho em relação ao nó p aumenta
exponencialmente à medida que o índice na tabela de
derivação cresce.
– Para consultar uma chave k, o nó p repassará a
requisição ao nó q com índice j na tabela de
derivação de p.
q = Ftp [ j ] <= k <= Ftp [j+1]
20
20
Nomeação: Tabelas de Hash Distribuídas (DHT) - Chord
 Exemplo:
1) Considere a resolução de k=26, a
partir do nó 1.
2) Nó 1 consultará k=26 → verifica
que o valor é maior do que FT1[5].
3) Requisicão será repassada para o
nó 18.
4) O nó 18 selecionará o nó 20,
porque FT18[2] < k<= FT18[3].
5) Por fim, requisição é repassada do
nó 20 para o nó 21 e deste para 28
Consulta → O(log(N)) passos
21
21
Proximidade na Rede
 Problema: Organização lógica do nós em uma rede de
sobreposição (orvelay) pode levar a uma escolha errada
no roteamento de mensagens → k e succ(k+1) podem
estar muito longe fisicamente!
 Solução:
– Identificar nós com base na topologia:
» Ao atribuir um ID a um nó, ter certeza que nós próximos no espaço
de endereçamento estejam também próximos fisicamente.
– Roteamento por proximidade:
» Manter mais de um sucessor e repassar a requisição para o mais
próximo.
– Seleção de vizinho por proximidade:
» Ao escolher um vizinho (não em Chord), pegue o mais próximo
22
22
Nomeação Estruturada
 Nomes simples são bons para máquinas, mas não são
convenientes para a utilização de seres humanos
 Sistemas de nomeação comumente suportam nomes
estruturados
– Exemplo: Nomeação de arquivos, hosts na Internet
 Nomes são organizados em um espaço de nomes
 Espaços de nomes podem ser representados como um
grafo dirigido, com dois tipos de nós:
– Nó-folha: entidade
– Nó de diretório: entidade que se refere a outros nós
 Nó de diretório possui uma tabela de diretório
<nome aresta, nome nó>
23
23
Nomeação Estruturada
 Sistemas de nomeação possuem, na maioria, um nó raiz
– Cada caminho no grafo de nomeação pode ser
referenciado pela sequência dos labels nas arestas
N:<label1, label2, ..., labeln>
– Nome de caminho absoluto: primeiro nó no caminho é
a raiz
– Nome de caminho relativo: primeiro nó pode ser
qualquer nó.
24
24
Nomeação Estruturada – Resolução de Nomes
 Espaços de nomes oferecem um mecanismo para
armazenar e recuperar informações sobre entidades por
meio de nomes.
 Dado um nome de caminho, deve ser possível consultar
qualquer informação armazenada no nó referenciado por
aquele nome.
 Problema: Para resolver um nome, precisamos de
um nó de diretório. Como escolher este nó inicial?
25
25
Nomeação Estruturada – Resolução de Nomes
 Mecanismo de fechamento: Trata da seleção do nó
inicial em um espaço de nomes a partir do qual a
resolução de nomes deve começar.
 São implícitos ao contexto em que a resolução de nomes
está se aplicando
– www.cs.vu.nl: início da resolução é feito através do
servidor de nome DNS
– /home/steen/mbox:início da resolução ocorre no
servidor local NFS
26
26
Nomeação Estruturada – Resolução de Nomes - Alias
 Outro nome para a mesma entidade
 Vários nomes absolutos para o mesmo nó (hard link)
27
27
Nomeação Estruturada – Resolução de Nomes - Alias
 Symbolic link: permite a um nó-folha ter associado um
caminho absoluto.
28
28
Nomeação Estruturada – Resolução de Nomes
 Diversos Espaços de Nomes
– Como fundir diferentes espaços de nomes de maneira
transparente? Dado dois espaços de nomes A e B,
como A acessa B e B acessa A?
» Possível Solução: Montagem (Mouting).
– Mount point: O nó de diretório que armazena o
identificador de nó do espaço de nome externo.
– Mounting point: Nó de diretório no espaço de nomes
externo.
29
29
Implementação de um Espaço de Nomes
 Implementação de um Espaço de Nomes
– Serviço que permite que usuários e processo
adicionem, removam e consultem nomes
– Serviço de nomeação é implementado por servidores
de nomes
– Servidores de nomes devem prover:
»
»
»
»
Escalabilidade
Manutenção descentralizada
Tolerância a falhas, robustez
Escopo global: Nomes possuem o mesmo significado em
todos lugares
30
30
Implementação de um Espaço de Nomes
 Costumam ser organizados em hierarquia
 Segundo Cheriton e Mann (1989) é conveniente dividir
os espaço de nomes em três camadas
– Camada global
» Raiz e seus filhos
» Principal característica: Estabilidade
» Podem representar organizações
31
31
Implementação de um Espaço de Nomes
 Segundo Cheriton e Mann (1989) é conveniente dividir
os espaço de nomes em três camadas
– Camada Administrativa
» Nós de diretórios
» Gerenciados por uma única organização
» Relativamente estáveis
– Camada Gerencial
» Nós cujo comportamento típico é a mudança periódica
» Mantidos por administradores de sistemas e usuários finais
32
32
Implementação de um Espaço de Nomes
33
33
Comparação entre servidores de Nomes
34
34
Como resolver nomes?
 Resolução Iterativa
– Servidor responde somente o que sabe: o nome do
próximo servidor que deve ser buscado
– Cliente procura iterativamente os outros servidores
 Resolução Recursiva
– Servidor passa o resultado para o próximo servidor
que encontrar
– Para o cliente, somente existe uma mensagem de
retorno: o endereço do nome ou 'não encontrado'
35
35
Como resolver nomes?
36
36
Resolução Iterativa x Recursiva
37
37
Resolução Iterativa x Recursiva
38
38
DNS: Domain Name System
 Pessoas: muitos identificadores:
– CPF, nome, no. da Identidade
 Hospedeiros, roteadores Internet :
– endereço IP (32 bit) - usado para endereçar
datagramas.
– “nome”, ex., jambo.ic.uff.br - usado por gente
» complexidade na borda da rede.
39
39
DNS: Domain Name System
 Pergunta: como mapear entre nome e endereço IP?
 Resposta: DNS - Domain Name System!
– base de dados distribuída implementada na
hierarquia de muitos servidores de nomes
– protocolo de camada de aplicação permite que
hospedeiros, roteadores, servidores de nomes e
comuniquem para resolver nomes (tradução
endereço/nome)
» Nota: função imprescindível da Internet implementada como
protocolo de camada de aplicação.
40
40
DNS: Domain Name System
Serviços DNS.
 Tradução de nome de hospedeiro para IP
 Apelidos para hospedeiros (aliasing)
– Nomes canônicos e apelidos
 Apelidos para servidores de e-mail
 Distribuição de carga
– Servidores Web replicados: conjunto de endereços IP
para um nome canônico.
41
41
DNS: Domain Name System
Serviços DNS.
 Por que não centralizar o DNS?
– ponto único de falha
– volume de tráfego
– base de dados centralizada e distante
– manutenção (da BD)
– Não é escalável!
42
42
DNS: Domain Name System
 Base de Dados Hierárquica e Distribuída
43
43
DNS – Servidores Raiz
 Procurado por servidor local que não consegue resolver o
nome, remetido ao servidor raiz.
 Servidor raiz (13 “espalhados” pelo mundo):
– procura servidor oficial se mapeamento desconhecido
– obtém tradução
– devolve mapeamento ao servidor local
44
44
Fonte:
Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São
Paulo: Prentice Hall, 2008.
Copyright © 2010 Prof. Jorge Surian
Todos direitos reservados. Reprodução ou divulgação total ou parcial deste
documento é expressamente proíbido sem o consentimento formal, por escrito, do
Professor Surian.
45
45
Download

Sistemas Distribuídos: Nomeação