Serviço de Nome
Sistemas Distribuídos
Coulouris (Capitulo 9)
Tanenbaum (Capitulo 4)
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
2
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
3
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)
4
Nomes e Recursos
URL
http://www.cdk3.net:8888/WebExamples/earth.html
DNS lookup
Resource ID (IP number, port number, pathname)
55.55.55.55
8888
WebExamples/earth.html
Web server
Network address
file
2:60:8c:2:b0:5a
Socket
5
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)
6
Resolução de Nomes
Interação direta do Cliente
NS2
2
Client
1
NS1
Name
servers
3
NS3
7
Resolução de Nomes
Interação indireta
NS2
NS2
2
2
1
1
NS1
client
4
client
3
4
3
NS1
5
NS3
Non-recursive
server-controlled
NS3
Recursive
server-controlled
8
Implementação de Namespace
estabilidade
9
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
10
Montagem
11
Exemplo de Serviço de Nome
DNS - Domain Name System

a.root-servers.net
(root)
Serviço de nome usado na
Internet
ns1.nic.uk
(uk)
co.uk
ac.uk

Consiste em uma base de

Usado principalmente para
ns.purdue.edu
(purdue.edu)
ns0.ja.net
(ac.uk)
* .purdue.edu
ic.ac.uk
qmw.ac.uk
dados hierárquica e
distribuída
uk
purdue.edu
yahoo.com
dcs.qmw.ac.uk
*.qmw.ac.uk
*.dcs.qmw.ac.uk
alpha.qmw.ac.uk
(qmw.ac.uk)
dns0.dcs.qmw.ac.uk
(dcs.qmw.ac.uk)
*.ic.ac.uk
dns0-doc.ic.ac.uk
(ic.ac.uk)
resolução de host name e
mail host
12
API para Serviço de Nome
JNDI – 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
13
Arquitetura JNDI
14
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
15
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)
16
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
17
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


Um URL especifica a localização da impressora na rede


Ex: localização e uso de serviço de impressão (com determinada qualidade)
por um usuário eventual de um hotel
http://www.hotelX.com/services/printer57
O contexto de descoberta (scope) é definido pela alcançabilidade da
rede
18
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)
19
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.
20
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
21
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
22
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
23
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
24
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
25
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
26
Busca Hierárquica
27
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)
28
Entidades não referenciadas
29
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
30
Problemas com falha de
comunicação
31
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
32
Advanced Reference Counting
Qdo nova
referência
remota é
criada,
metade do peso
armazenado
no skeleton é
associado ao
novo proxy
Cada objeto tem
um peso inicial
fixo
Passagem de referência entre
processos
33
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
34
atingível
inatingível
Objetos para GC
35
Download

Serviço de Nome