Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)
Transcript of Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)
![Page 1: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/1.jpg)
Serviço de Nome
Sistemas DistribuídosCoulouris (Capitulo 9)
Tanenbaum (Capitulo 4)
![Page 2: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/2.jpg)
2
Introdução
Nomes exercem importante papel em todos os sistemas
computacionais.
São usados:
Compartilhamento de recursos
Identificação única de entidades
Para referenciar locais, ...
A diferença entre serviço de nome em sistemas distribuídos e
não distribuídos consiste na forma em que o mesmo é
implementado
![Page 3: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/3.jpg)
3
Funções de Serviço de Nome
A principal função de um serviço de nomes é permitir a associação de um nome (ou uma outra representação alternativa mais simples) a recursos computacionais como: endereços de memória, de rede, de serviços objetos e referências códigos em geral
Suas duas funções básicas são: Associar (mapear) um nome a um recurso Localizar um recurso a partir de seu nome
Exemplos: Sistema de arquivos: liga caminho a bloco(s) de memória Sistema DNS: liga nome de domínio a endereço IP
![Page 4: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/4.jpg)
4
Namespaces
Nomes em sistemas distribuídos são organizados em namespace, que
são grafos direcionados cujos nós são nomeados.
Implementado em sistemas de arquivos
O nome de uma entidade inclui o caminho no grafo (path) que identifica sua
localização
Nomes em XML
Usados na estruturação de documentos
Referências globais (URI – Uniform resource identifier)
Tipo especial de URI (URL – Uniforme resource locator)
![Page 5: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/5.jpg)
5
Nomes e Recursos
http://www.cdk3.net:8888/WebExamples/earth.html
URL
Resource ID (IP number, port number, pathname)
Network address
2:60:8c:2:b0:5a file
Web server
55.55.55.55 WebExamples/earth.html8888
DNS lookup
Socket
![Page 6: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/6.jpg)
6
Resolução de Nomes
Namespaces oferecem um mecanismo conveniente para
armazenar e recuperar informações sobre entidades através de
nomes
Resolução de nomes é o processo de busca de um nome
Exige o conhecimento preliminar sobre onde e como começar a
busca
É possível definir diversos nomes a uma mesma entidade (alias)
![Page 7: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/7.jpg)
7
Resolução de NomesInteração direta do Cliente
Client1
2
3
NS2
NS1
NS3
Nameservers
![Page 8: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/8.jpg)
8
Resolução de NomesInteração indireta
1
2
3
5
1
2
34
4
client client
Recursiveserver-controlled
NS2
NS1
NS3
NS2
NS1
NS3
Non-recursiveserver-controlled
![Page 9: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/9.jpg)
9
Implementação de Namespaceestabilidade
![Page 10: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/10.jpg)
10
Montagem
Em sistemas distribuídos é possível mesclar
diferentes namespaces de forma
transparente.
Para tal é necessário: Nome do protocolo de acesso
Nome do servidor
Nome do ponto de montagem
![Page 11: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/11.jpg)
11
Montagem
![Page 12: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/12.jpg)
12
Exemplo de Serviço de NomeDNS - Domain Name System
Serviço de nome usado na
Internet
Consiste em uma base de
dados hierárquica e
distribuída
Usado principalmente para
resolução de host name e
mail host
a.root-servers.net(root)
ns0.ja.net(ac.uk)
dns0.dcs.qmw.ac.uk(dcs.qmw.ac.uk)
alpha.qmw.ac.uk(qmw.ac.uk)
dns0-doc.ic.ac.uk(ic.ac.uk)
ns.purdue.edu(purdue.edu)
ukpurdue.edu
ic.ac.ukqmw.ac.uk
dcs.qmw.ac.uk*.qmw.ac.uk
*.ic.ac.uk*.dcs.qmw.ac.uk
* .purdue.edu
ns1.nic.uk(uk)
ac.ukco.uk
yahoo.com
![Page 13: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/13.jpg)
13
API para Serviço de NomeJNDI – Java Naming and Directory Interface
É uma ponte sobre os diversos serviços de nomes e diretórios diferentes
Vantagens Só é preciso aprender uma única API para acessar vários tipos de
informação de serviços de diretório Isola a aplicação dos detalhes específicos do protocolo Pode ser usada para ler objetos Java (serializados) que estejam
armazenados em um diretório Pode combinar diferentes tipos de diretório (federação) e tratá-los como um
diretório único Componentes
API - Application Programming Interface SPI - Service Provider Interface que permite que novos serviços sejam
plugados transparentemente
![Page 14: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/14.jpg)
14
Arquitetura JNDI
![Page 15: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/15.jpg)
15
Principais Classes JNDI
A API JNDI consiste de cinco pacotes O principal pacote é javax.naming que contém as principais classes e
interfaces Context: interface onde se pode recuperar, ligar, desligar e renomear objetos,
e criar e destruir contextos InitialContext: ponto de partida (raiz) para todas as operações Name: abstração de um nome. Contém geralmente um String de texto que
corresponde ao nome do objeto ou contexto NameClassPair: contém nome do objeto e de sua classe Binding: contém nome do objeto ligado, nome da classe do objeto e o próprio
objeto Reference: abstração de uma referência para um objeto NamingEnumeration: um tipo de java.util.Enumeration usado para colecionar
componentes de um contexto NamingException: principal exceção do JNDI
![Page 16: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/16.jpg)
16
Recuperação de Objetos JNDI
Para obter a referência para um objeto de um contexto usa-se o
método lookup()
Para usar o objeto retornado é preciso conhecer o seu tipo e
fazer o cast (ou narrow, se objeto remoto) para promover a
referência
Se o objeto for um contexto, lookup() age como um método para
mudar de contexto (como o chdir, em Unix)
![Page 17: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/17.jpg)
17
Serviço de Diretório
Também chamadas páginas amarelas Retorna atributos de qualquer objeto que corresponde ao atributo
especificado Atributos são mais poderosos que nomes como designadores de
objetos Programas podem ser escritos para selecionar objetos de acordo com
especificações precisas de atributos, onde nomes podem não ser conhecidos
Outra vantagem de atributos é que não expõem a estrutura das organizações
Contudo, serviços de nomes (páginas brancas) são mais simples que serviços de diretórios
![Page 18: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/18.jpg)
18
Descoberta de Serviço
Serviço de diretório facilita o registro de serviços fornecidos em um
ambiente de rede espontâneas (Ad hoc) Fundamental em ambientes onde clientes e serviços mudam dinamicamente
mas devem ser integrados sem intervenção do usuário
Fornece interface para registro e desligamento automático de serviços
Fornece interface para localização (lookup) de serviços pelos usuários Ex: localização e uso de serviço de impressão (com determinada qualidade)
por um usuário eventual de um hotel
Um URL especifica a localização da impressora na rede http://www.hotelX.com/services/printer57
O contexto de descoberta (scope) é definido pela alcançabilidade da
rede
![Page 19: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/19.jpg)
19
Localização de Entidades Móveis
Por sua natureza, serviços de nome tradicionais não são convenientes
para mapeamento (nome-endereço) que mudam com regularidade
Cada vez que a entidade se move, uma operação de busca não-local é
necessária
Características essenciais:
Tolerância a falhas
Escalabilidade
Resolução eficiente de nomes (ênfase)
![Page 20: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/20.jpg)
20
Abordagens de Mapeamento
(a) Mapeamento direto, em serviços de nome tradicionais.
(b) Mapeamento indireto, para entidades móveis: serviço de nome + serviço de localização.
![Page 21: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/21.jpg)
21
Mecanismos para Localização de entidade móvel
Localizar entidades móveis pode ser feito mais eficientemente
usando identificadores independente de localização
Existem basicamente 4 abordagens para localização de
entidades móveis:
1. Broadcasting e Multicasting
2. Forwarding Pointers
3. Home-Based Approach
4. Hierarchical Approach
![Page 22: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/22.jpg)
22
Broadcasting e Multicasting
O identificador da entidade a ser localizada é anunciada para
todo processo no sistema distribuído
O processo que oferece access point para a entidade,
responde fornecendo um endereço para o ponto de acesso
Essa abordagem tem escalabilidade limitada
![Page 23: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/23.jpg)
23
Forwarding Pointers Quando uma entidade se muda de A para B, deixa um
ponteiro em A para a sua nova localização Mobilidade totalmente transparente para o cliente Problema de performance em cadeia longa
![Page 24: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/24.jpg)
24
Otimização para Forwarding Pointers
(a) Para reduzir a cadeia de busca (proxy, skeleton), uma invocação traz a
identificação do proxy de onde a chamada foi iniciada.
(b) A resposta com a localização atual do objeto é registrada e usada
diretamente pelo cliente nas invocações posteriores
Apesar do ganho em performance, somente o proxy inicial é ajustado,
introduzindo ponto de falha
![Page 25: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/25.jpg)
25
Home-Based Approach
Usado em IP Móvel Cada host móvel recebe um IP fixo. Toda comunicação é inicialmente direcionada
para o home agent (localizado na LAN do host) Sempre que se move, o host solicita um IP temporário e o registra no home agent
![Page 26: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/26.jpg)
26
Hierarchical Approach
A localização é feita por proximidade de domínios
A busca tem início no local de origem, caso a entidade tenha se movido a busca
continua seguindo trilha ascendente na hierarquia de domínios
![Page 27: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/27.jpg)
27
Busca Hierárquica
![Page 28: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/28.jpg)
28
Remoção de entidades não referenciadas
Entidades que não podem ser localizadas devem ser removidas
Uma importante uso de nomes em sistemas distribuídos é
organizar referências às entidades, de forma que entidades não
referenciadas possam ser automaticamente removidas
Esse GC requer suporte de mecanismos específicos (counting e
tracing)
![Page 29: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/29.jpg)
29
Entidades não referenciadas
![Page 30: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/30.jpg)
30
Técnica para GCD:Reference Counting
Uma entidade conta o número de referências externas a ela
Quando o contador chega em zero, a entidade pode ser removida
Ao invés de contagem de referências, é possível manter uma
lista de processos (reference listing) que fazem referência a
entidade (usado em Java RMI)
Lista de referência é um mecanismo mais robusto do que a
contagem, mas possui problemas de escalabilidade
![Page 31: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/31.jpg)
31
Problemas com falha de comunicação
![Page 32: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/32.jpg)
32
Problemas com passagem de referência entre objetos
Problema Uma das soluções possíveis
• É necessária a introdução de mais uma mensagem na comunicação (ACK)
• Pode ter problemas de desempenho em sistemas distribuídos em larga-escala
• Impõe condições de corrida para incremento/decremento do contador
![Page 33: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/33.jpg)
33
Advanced Reference Counting
Cada objeto temum peso inicial fixo
Qdo nova referênciaremota é criada,metade do pesoarmazenadono skeleton éassociado aonovo proxy
Passagem de referência entreprocessos
![Page 34: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/34.jpg)
34
Técnica para GCD: Reference Tracing
Com método baseados em trace, todas as entidades que são
direta ou indiretamente referenciadas em um dado conjunto de
entidades raiz são marcadas como alcançáveis
Trace distribuído é difícil de ser implementado, pois requer que
todas as entidades no sistema possam ser inspecionadas
Soluções variam, mas em geral são baseadas em coletores de
lixo tradicionais usados em sistemas monoprocessados
![Page 35: Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)](https://reader034.fdocument.pub/reader034/viewer/2022042512/552fc11b497959413d8c98c4/html5/thumbnails/35.jpg)
35
atingívelinatingível
Objetos para GC