Sistemas Distribuídos
Nomeação
Nazareno Andrade
Universidade Federal de Campina Grande
02/2008
Fundamentos
Coordenando processos
Construíndo sistemas
Sistemas construídos
2
Fundamentos
Coordenando processos
– Mensagens (e fluxos): UDP, TCP, MPI, Enfileiramento,
Gossiping
– RPC e objetos distribuídos: RMI
– Mensagens vs. RPC
– Nomeação
– Sincronização e replicação
Construíndo sistemas
Sistemas construídos
3
Objetivos
Compreender o uso de nomes em sistemas distribuídos
Entender o processo de descoberta de recursos em
diferentes tipos de sistema distribuído
Analisar o espaço de soluções para um sistema de
nomes distribuído
4
Pra que nomes?
Como um componente do sistema usa nomes?
O que um serviço de descoberta (ou de nomes) precisa
ser capaz de fazer?
– Nomes úteis a seres humanos são os mais apropriados
para o serviço?
E se não quero usar um nome, mas atributos da
entidade?
5
O serviço de nomes ou de descoberta de recursos
mapeia nomes ou atributos para pontos de acesso a
entidades
Um nome referencia uma entidade
Ponto de acesso  acesso à entidade
Endereço  nome do ponto de acesso
6
Endereços na prática
Qual o mapeamento ponto de acesso  entidade?
Por que não usamos sempre o endereço como nome?
– Mobilidade de dispositivos, de código, de serviços
– Múltiplos servidores replicados
Qual a relação disso com transparência?
7
Identificadores
Outro tipo de nome
1. Identifica no máximo uma entidade
2. Entidade tem no máximo um identificador
3. Identificadores não são reutilizados
Como isso é possível?
8
Atributos
E se eu quero uma descoberta de recursos menos
acoplada?
“Quero a máquina menos carregada do sistema”
Atributos podem referenciar entidades
9
O problema
Dado que temos nomes, identificadores, atributos e endereços
Como resolver [nome ou identificador ou atributos] 
endereço(s)?
Essencialmente, usando uma tabela
– Centralizada, hierárquica, distribuída, ...
Para sistemas de nomes distribuídos, resolver é próximo de
rotear
10
Onde estamos
Pra que servem nomes
Resolvendo identificadores
Nomes estruturados
Atributos
11
Resolvendo identificadores
Nomeadores podem ter referência ao endereço da
entidade?
Problema 0:
– Localizar máquina na rede com endereço MAC XYZW
– Localizar máquina que roda o DHCP na rede
12
Problema 1: entidades que se movem
– Ponteiros repassadores
– Localização nativa
13
DHTs
Tabelas hash distribuídas  escalabilidade
Operação central: lookup(chave)
Princípios:
1.
2.
3.
4.
Mapear chaves para nós de forma balanceada
Função de distância entre chave e id de um nó
Um nó que recebe uma requisição deve ser capaz de repassá-la a um
nó mais perto de key ou respondê-la
Tabelas de roteamento devem ser adaptativas
As principais diferenças estão na implementação da função de
distância e na construição da tabela de roteamento
14
Roteamento com skiplists: Chord
Espaço mesmo de nomes para nós e objetos
– Distância é distância entre identificadores em lista circular
Objeto está em succ(k)
Tabela de roteamento (finger table) de p:
FTp[i] = succ(p + 2i-1)
Roteamento:
Envie para nó com índice j em FT tal que
FTp[j] ≤ k ≤ FTp[j+1]
(envia para sucessor, caso não haja nós assim)
15
16
Detalhes operacionais
A topologia precisa ser mantida
– Nós monitoram sucessor e predecessor
– Periodicamente verifico se eu == predecessor de meu sucessor
• Se ele falhou, procuro um novo sucessor
– Se meu predecessor falha, salvo essa informação e aguardo contato de
novo predecessor
Redundância nos sucessores aumenta robustez
A topologia da overlay pode explorar topologia da rede
– IDs podem ser distribuídos de acordo com topologia da rede
17
Roteamento com árvores
Pastry, Tapestry e Kademlia usam uma árvore para construir
tabela de roteamento
Em Kademlia a distância entre k e i é k XOR i
Para identificadores de 128 bits, cada nó considera 128
distâncias possíveis
– Para cada distância, mantem uma lista de nós naquela distância
– No momento da busca, envia requisições recursivas para os nós da
distância mais próxima do id
18
Exemplo Kademlia
Divisão da rede para nó 0011
19
Busca no Kademlia
Busca por 1110
20
Sistemas de nome hierárquicos
Nós-folha têm conhecem endereço do identificador
Nós um nível acima, conhecem que nós abaixo
resolvem um identificador
21
22
Onde estamos
Pra que servem nomes
Resolvendo identificadores
Nomes estruturados
Atributos
23
Nomeação estruturada
Identificadores não são bons para seres humanos
Nomes estruturados são mais intuitivos:
Espaço de nomes é um grafo:
– Nós-folha são entidades nomeadas
– Demais nós são diretórios à lá sistemas de arquivos
– Tipicamente, há uma raiz, geralmente não há ciclos
Tudo muito parecido com sistemas de arquivos.
Como funciona a resolução de ‘ls nome’?
24
Resolução de nomes estruturados
distribuída
Mecanismo de fechamento
Determina por onde começar a resolução
– Sistemas de arquivos: /
– Variáveis de ambiente unix: espaço de nomes do usuário
Montagem
– Combinar espaços de nomes distribuídos
– FS é um bom exemplo novamente
25
Nomes estruturados em grande escala
Camadas com diferentes requisitos
Replicação horizontal e caching para escalabilidade e disponibilidade
26
Resolução iterativa vs. recursiva
Vantagens / desvantagens?
– Caching
– Localidade de tráfego
27
Exemplo: DNS
Espaço de nomes
– www.lsd.ufcg.edu.br na verdade é www.lsd.ufcg.edu.br.
– Domínios == sub-árvores do espaço de nomes
Conteúdo de um nó na árvore
– Além do que usamos: servidor de email para esse nome,
email do administrador, IPs alternativos, servidor de
nomes desse domínio, ...
28
29
Raiz do DNS
30
Onde estamos
Pra que servem nomes
Resolvendo identificadores
Nomes estruturados
Atributos
31
Atributos
Nem sempre nomes são suficientes
Atributos referenciam entidades por características
– Cada entidade tem conjuntos (atributo, valor)
Por vezes há distinção entre serviços que usam nomes
e atributos
– Nomes  Serviço de nomeação
– Atributos  Serviço de diretório
32
Atributos: Implementação hierárquica
LDAP é um padrão bastante usado
Cada recurso é descrito por uma tabela de atributos
– dsc.ufcg.edu.br == /C=BR/TO=edu/O=ufcg/OU=DSC/…
O espaço de nomes é dividido em uma árvore
A árvore é dividida em nós
– Parece um DNS, mas com pesquisas mais complexas
– Search((C=BR)(TO=edu)(O=ufcg)(OU=*))
33
Atributos: implementação decentralizada
estruturada
Várias abordagens, ainda nenhum consenso
SWORD:
– Identificadores dos nós não são mais hashes
– Identificador = [bits identificando atributo + bits
identificando valor + bits aleatórios]
– Um nó é responsável pelo atributo k, outro por k > 50,
outro por k > 75, ...
– Consulta na DHT na verdade procura índices de atributos
34
Atributos decentralizados e nãoestruturados
Explorando localidade em redes P2P
– Nós procuram outros nós com interesses semelhantes e se
aproximam deles
– Gossiping é útil aqui
IMM: encontrando nó menos carregado em uma árvore
de multicast
– Um nó que esteve rápido recentemente provavelmente
estará rápido agora
Há também a descoberta semi-estruturada, com supernós...
35
Recapitulando
Pra que servem nomes
– Endereços, nomes, identificadores e atributos
Resolvendo identificadores
– Broadcast, hierarquia, DHTs
Nomes estruturados
– Fechamento, montagem, resolução iterativa vs. Recursiva
Atributos
– Implementação hierárquica
– Implementação decentralizada estruturada
– Implementação decentralizada não-estruturada
36
Mais sobre esse assunto
DHTs:
– Visão geral: Looking up data in p2p systems
– Artigo do Kademlia
DNS:
– Livro online explicando e mostrando porque o DNS ainda é
suficiente
Nomes em geral:
– Naming and binding of objects, 1978: artigo filosófico
sobre sistemas de nomes (nomenclatura hoje em desuso)
37
Download

SD - parte 4