Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)

Post on 17-Apr-2015

118 views 3 download

Transcript of Serviço de Nome Sistemas Distribuídos Coulouris (Capitulo 9) Tanenbaum (Capitulo 4)

Serviço de Nome

Sistemas DistribuídosCoulouris (Capitulo 9)

Tanenbaum (Capitulo 4)

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

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

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)

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

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)

7

Resolução de NomesInteração direta do Cliente

Client1

2

3

NS2

NS1

NS3

Nameservers

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

9

Implementação de Namespaceestabilidade

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

11

Montagem

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

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

14

Arquitetura JNDI

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

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)

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

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

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)

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.

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

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

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

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

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

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

27

Busca Hierárquica

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)

29

Entidades não referenciadas

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

31

Problemas com falha de comunicação

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

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

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

35

atingívelinatingível

Objetos para GC