Nomeação Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Transcript of Nomeação Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Nomeação
Nazareno AndradeUniversidade Federal de Campina Grande
02/2008
Sistemas Distribuídos
2
FundamentosCoordenando processosConstruíndo sistemasSistemas construídos
3
FundamentosCoordenando 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 sistemasSistemas construídos
4
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
5
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?
6
O serviço de nomes ou de descoberta de recursos mapeia nomes ou atributos para pontos de acesso a
entidades
Um nome referencia uma entidadePonto de acesso acesso à entidadeEndereço nome do ponto de acesso
7
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?
8
Identificadores
Outro tipo de nome
1. Identifica no máximo uma entidade2. Entidade tem no máximo um identificador3. Identificadores não são reutilizados
Como isso é possível?
9
Atributos
E se eu quero uma descoberta de recursos menos acoplada?
“Quero a máquina menos carregada do sistema”
Atributos podem referenciar entidades
10
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
11
Onde estamos
Pra que servem nomesResolvendo identificadoresNomes estruturadosAtributos
12
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
13
Problema 1: entidades que se movem– Ponteiros repassadores– Localização nativa
14
DHTs
Tabelas hash distribuídas escalabilidadeOperação central: lookup(chave)
Princípios:1. Mapear chaves para nós de forma balanceada2. Função de distância entre chave e id de um nó3. Um nó que recebe uma requisição deve ser capaz de repassá-la a um
nó mais perto de key ou respondê-la4. 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
15
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)
16
17
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
18
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
19
Exemplo Kademlia
Divisão da rede para nó 0011
20
Busca no KademliaBusca por 1110
21
Sistemas de nome hierárquicos
Nós-folha têm conhecem endereço do identificadorNós um nível acima, conhecem que nós abaixo
resolvem um identificador
22
23
Onde estamos
Pra que servem nomesResolvendo identificadoresNomes estruturadosAtributos
24
Nomeação estruturada
Identificadores não são bons para seres humanosNomes 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á ciclosTudo muito parecido com sistemas de arquivos.
Como funciona a resolução de ‘ls nome’?
25
Resolução de nomes estruturados distribuída
Mecanismo de fechamentoDetermina 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
26
Nomes estruturados em grande escalaCamadas com diferentes requisitosReplicação horizontal e caching para escalabilidade e disponibilidade
27
Resolução iterativa vs. recursiva
Vantagens / desvantagens?– Caching– Localidade de tráfego
28
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, ...
29
30
Raiz do DNS
31
Onde estamos
Pra que servem nomesResolvendo identificadoresNomes estruturadosAtributos
32
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
33
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=*))
34
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
35
Atributos decentralizados e não-estruturadosExplorando 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...
36
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
37
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)