24
Sistemas Distribuídos. Motivação. Desenvolvimento de microprocessadores de alto desempenho com custo bem inferiores aos dos mainframes. o Anos 50: Máquina U$10M – 1 instrução/s; o Hoje: Máquina U$1000 – Milhões instruções/s; o Metáfora: BMW U$10 – 1 Bilhão km/l. Desenvolvimento de redes de computadores de alta velocidade. Economia. Necessidade de compartilhar recursos; Melhoria da relação custo/benefício entre investimento e desempenho (infraestrutura). Definições. O que é um Sistema Distribuído? “Coleção de computadores independentes que aparecem para os usuários do sistema como um único computador.” (Tanenbaum). “Um sistema em que componentes de hardware e software localizados em computadores em rede se comunicam e coordenam suas ações por passagem de mensagens.” (Coulouris et al). Sistemas Distribuídos, segundo Sommerville: “Todos os sistemas baseados em grandes computadores atualmente são sistemas distribuídos.” “Um sistema distribuído é aquele em que as informações em fase de processamento são distribuídas para vários computadores.” Middleware Infraestrutura de software que fica entre o sistema operacional e uma aplicação distribuída;

Sistemas Distribuídos

Embed Size (px)

Citation preview

Page 1: Sistemas Distribuídos

Sistemas Distribuídos.

Motivação.

Desenvolvimento de microprocessadores de alto desempenho com custo bem inferiores aos dos mainframes.

o Anos 50: Máquina U$10M – 1 instrução/s;o Hoje: Máquina U$1000 – Milhões instruções/s;o Metáfora: BMW U$10 – 1 Bilhão km/l.

Desenvolvimento de redes de computadores de alta velocidade.

Economia.

Necessidade de compartilhar recursos; Melhoria da relação custo/benefício entre investimento e desempenho

(infraestrutura).

Definições.

O que é um Sistema Distribuído?

“Coleção de computadores independentes que aparecem para os usuários do sistema como um único computador.” (Tanenbaum).

“Um sistema em que componentes de hardware e software localizados em computadores em rede se comunicam e coordenam suas ações por passagem de mensagens.” (Coulouris et al).

Sistemas Distribuídos, segundo Sommerville:

“Todos os sistemas baseados em grandes computadores atualmente são sistemas distribuídos.”

“Um sistema distribuído é aquele em que as informações em fase de processamento são distribuídas para vários computadores.”

Middleware

Infraestrutura de software que fica entre o sistema operacional e uma aplicação distribuída;

Tem como objetivo tornar mais simples e produtivo o desenvolvimento de uma aplicação distribuída;

Oferece abstrações/recursos de mais alto nível que torna transparente ao programador detalhes de programação em redes;

Procura fazer com que a programação distribuída seja mais semelhante à programação centralizada.

Exemplos de Middleware.

Monitores de processamento de transações; Conversores de dados; Controladores de comunicação.

Page 2: Sistemas Distribuídos

Características.

Desenvolver uma aplicação distribuída é mais complexo do que uma aplicação centralizada.

Problemas típicos:

Comunicação; Heterogeneidade; Falhas; Concorrência; Segurança; Escalabilidade.

Conjunto de máquinas autônomas.

Conectadas por canais de comunicação.

Que se comunicam por mensagens.

Sem um estado global.

Com independência de falhas.

Exemplos:

Internet – Serviços: www, ftp, e-mail, chat; Intranet – Compartilhamento de recursos e informações; Computação móvel – Palm, celular, pager, notebooks; Caixa eletrônicos; Banco na internet; Reserva e venda de passagens; Comércio eletrônico; Venda de ingressos.

Praticamente todos os grandes sistemas baseados em computador são distribuídos.

A Engenharia de Software Distribuído é muito importante para os sistemas computacionais de uma empresa.

Principais Objetivos.

Conexão; Transparência; Abertura; Escalabilidade; Facilitar o acesso a recursos remotos para os usuários; Possibilitar o compartilhamento de recursos entre os usuários;

o Impressoras; o Discos;

Page 3: Sistemas Distribuídos

o Processadores;o Aplicações.

Facilitar a colaboração e a troca de informações entre usuários.

Objetivos – Transparência.

Acesso - Esconde as diferenças entre a representação dos dados e como os recursos são acessados.

Localização - Esconde onde os recursos estão localizados. Migração – Esconde a transferência de um recurso para outro local. Realocação - Esconde que um recurso pode mudar de local enquanto

estiver sendo acessado. Replicação - Esconde que um recurso pode estar replicado. Concorrência - Esconde que um mesmo recurso pode estar sendo

compartilhado por vários usuários concorrentes. Falha – Esconde a falha e a recuperação de um recurso. Persistência - Esconde quando um recurso de software está na memória

ou em disco.

Por quê nem sempre é recomendável implementar o nível mais alto de transparência possível?

Porque isso pode implicar uma perda de desempenho não aceitável pelos usuários.

Interoperabilidade.

Sistemas heterogêneos podem trabalhar juntos disponibilizado serviços entre si através de um padrão comum.

Portabilidade.

Uma aplicação desenvolvida para um sistema distribuído A pode se comunicar sem modificações com um sistema distribuído B que implemente a mesma interface de A.

Problemas.

Serviços centralizados.

Um único servidor para todos os usuários.

Dados centralizados.

Uma única lista telefônica on–line.

Algoritmos centralizados.

Roteamento baseado em informações completas.

Page 4: Sistemas Distribuídos

Dimensões:

Número de componentes; Tamanho geográfico; Número e tamanho de domínios administrativos.

Um sistema é escalável quando pode crescer em uma ou mais dimensões sem perda de desempenho.

Técnicas: Processamento no cliente ou servidor.

Modelo “cliente-magro”.

Processamento e gerenciamento de dados no servidor; Cliente é responsável apenas pelo software de apresentação.

Modelo “cliente-gordo”.

Servidor é responsável somente pelo gerenciamento de dados; Cliente executa a lógica da aplicação e as interações com o usuário.

Técnicas: Organização hierárquica em zonas (DNS – Domain Name System).

Multiprocessadores.

Processos executados em processadores separados; Processamento paralelo; Aumento de desempenho e capacidade de processamento (sistemas de

tempo real); Processos controlados por um dispatcher.

Cliente/Servidor.

Servidor como fornecedor de serviços; Cliente como consumidor de serviços.

Objetos Distribuídos.

Sem distinção entre cliente e servidor; Conjunto de objetos que interagem independentemente da localização; Permite adicionar novos recursos quando necessário; Alta escalabilidade (várias instâncias de um mesmo objeto em diferentes

pontos da rede); Reconfiguração dinâmica; Projeto mais complexo. Middleware para comunicação;

o Permite a comunicação entre objetos heterogêneos; Middleware para componentes;

o Fornecem uma base para desenvolvimento de componentes compatíveis;

Page 5: Sistemas Distribuídos

o EJB, CORBA, ActiveX, etc.

Padrão CORBA.

Definido pela OMG (Object Management Group); Composto por quatro elementos:

o Objetos de aplicação com interface bem definida em linguagem neutra (IDL – Linguagem de Definição de Interface);

o Requisitor de Objetos (ORB – Object Request Broker) que gerencia solicitações para serviços de objetos;

o Serviços de objetos: serviços de diretórios, transações, persistência, etc;

o Recursos CORBA. Horizontais: comuns a vários tipos de aplicações; Verticais: domínio específico de aplicações.

P2P (Ponto a Ponto).

Sistemas descentralizados com processamento em qualquer nó da rede; Distribui processamento e armazenamento pela rede; Sistemas pessoais e pouco utilizados para negócios; Arquitetura descentralizadas ou semi-centralizada; Exemplos: eMule, Kazaa, eDonkey, Gnutella, etc.

Orientadas a Serviços.

Baseada no consumo de serviços externos; Web Service é uma abordagem tecnológica para implementar essa

arquitetura; O fornecimento de serviços não depende da aplicação que consome o

serviço.

Vantagens.

Compartilhamento de recursos;o Hardware (discos, impressoras, etc.);o Software (arquivos, compiladores, objetos, etc.).

Sistemas abertos;o Projetos baseados em protocolos-padrão.

Suportam a concorrência entre processos; Boa relação custo/desempenho.

o Lei de Grosh – “desempenho é proporcional ao quadrado do custo”: 2 * custo = 4 * desempenho.

Maior velocidade; Maior confiabilidade e disponibilidade; Facilidade de expansão (escalabilidade);

o Adição de novos recursos;o Suporte ao aumento da demanda.

Tolerância a falhas.

Page 6: Sistemas Distribuídos

o Redundância de hardware e software;o Recuperação de falhas com transparência.

Desvantagens.

Maior complexidade;o Desenvolvimento;o Testes.

Problemas de Segurançao Integridade de dados na rede; o Interceptação de dados na rede.

Alto custo de implementação.o Profissionais especializados;o Mecanismos de segurança (hardware / software).

Maior complexidade de gerência.o Heterogeneidade de hardware;o Heterogeneidade de sistemas operacionais;o Propagação de defeitos.

Maior dificuldade para diagnosticar problemas.o Imprevisibilidade;o Variação de desempenho de uma requisição para outra;o Um servidor parou ou está apenas lento?

Protocolos em camadas.

Em sistemas distribuídos não existe memória compartilhada; A comunicação é baseada em troca de mensagens; Como organizar e resolver as questões envolvidas no processo de

comunicação?o Foi criado o modelo OSI (Open Systems Interconnection) pela

ISSO (International Standards Organization);

Modelo OSI.

Permite a comunicação entre sistemas abertos; Padroniza regras que definem o formato, conteúdo e significado das

mensagens enviadas e recebidas; As regras definidas para comunicação são chamadas de Protocolos.

Modelo OSI – Protocolos de baixo nível.

Camada Física.

Transmissão de bits (0s ou 1s).

Camada de Enlace.

Mecanismo de detecção e correção de erros.

Camada de Rede.

Page 7: Sistemas Distribuídos

Roteamento (definição do melhor caminho na rede);

Camada de Transporte.

Gerenciamento dos pacotes;o TCP (Com confirmação);o UDP (Sem confirmação).

Camada Sessão. Versão melhorada da Camanda de Transporte com mecanismo de

sincronização.

Camada de Apresentação.

Fornece uma organização estruturada (registro) para as mensagens binárias.

Camada de Aplicação.

Aplicações (FTP, HTTP, E-mail, etc.)

Protocolos de Middleware.

Escondem a rede (endereços IP, portas, sockets, formato de mensagens, conexões, falhas, etc.);

Dois tipos;o Middleware de infra-estrutura de servidor;o Middleware de Comunicação / Distribuição.

Middleware de infra-estrutura de servidor;o Fornecem uma infra-estrutura para execução de aplicações;o Abstraem e unificam em uma API particularidades de um

hardware ou sistema operacional;o Fornecem primitivas para criação de threads, sincronização,

comunicação via TCP ou UDP, etc;o Exemplos: Sun JVM, .NET CLR.

Middleware de Comunicação / Distribuição.o Fornecem uma infra-estrutura de comunicação;o Uso mais comum do termo middleware;o Tipo de middleware relacionado a Sistemas Distribuídos;o Exemplos: Java RMI, CORBA, DCOM, SOAP, .NET Remoting

Framework, JavaSpaces, JMS, etc.

RPC – Chamada Remota de Procedimento.

Motivação.o Projetos de computação distribuída são complexos e exigem

muita experiência.

Objetivos.o Facilitar a computação distribuída;

Page 8: Sistemas Distribuídos

o Encorajar o desenvolvimento de aplicações distribuídas.

Marshalling e Unmarshalling.o Empacotar e desempacotar;o Quando um cliente A chama procedimentos de um servidor B:

Pode ser necessário passar como parâmetro (e receber como resultado) estruturas mais complexas (objetos, vetores, etc.).

o Cliente A: Deve converter os parâmetros para um formato que possa

ser transmitido por um protocolo de transporte (TCP, por exemplo);

Este processo é chamado de marshalling.o Servidor B:

Deve converter a mensagem recebida em uma estrutura de dados;

Este processo é chamado de unmarshalling.o Processo de marshalling/unmarshalling é:

Complexo; Trabalhoso; Sujeito a erros.

o Portanto, deve ser automatizado pela plataforma de middleware.

Stubs (Apêndices).o Funcionamento interno baseado em módulos (fragmentos de

algoritmos) chamados de stubs;o Encapsulam detalhes de comunicação no cliente e no servidor;o Automatizam processo de marshalling e unmarshalling;o Automatizam a comunicação com o processo remoto (interagindo

com o protocolo de transporte).

Arquitetura Interna.o Stubs são gerados automaticamente, por um compilador de

stubs;o Entrada deste compilador: assinatura dos procedimentos

remotos, em uma linguagem chamada XDR ( External Data Representation );

Genericamente, conhecida como linguagem para definição de interfaces.

o Saída deste compilador: código fonte dos stubs.

Invocação Remota de Objetos.

Tecnologia baseada em Objetos.o Já está consagrada para o desenvolvimento de aplicações

não distribuídas;

Page 9: Sistemas Distribuídos

o Objetos escondem internamente detalhes da sua implementação (“caixa-preta”);

o Provê uma interface bem definida para que o mundo exterior possa utilizar os objetos;

Idéia básica:o Objetos clientes podem chamar métodos de objetos remotos

com transparência de acesso;o Mesma sintaxe de chamadas locais.

Objetos remotos são manipulados usando-se referências de rede.

Exemplos:o CORBA, Java RMI, DCOM, .NET Remoting, etc.

Funcionamento.o Servidor de Aplicação:

Instancia objeto remoto e o registra no servidor de nomes (registrar = dar um nome para o objeto);

o Servidor de Nomes: Tabela: Nomes, referência de rede.

o Cliente: Consulta servidor de nomes (fornecendo o nome do

objeto), obtém uma referência de rede para o objeto remoto, usa essa referência para realizar chamadas remotas.

Organização.o O proxy é análogo ao stub do cliente nos sistemas RPC;o O skeleton é análogo ao stub do servidor nos sistemas RPC;o O estado dos objetos não é distribuído: reside somente no cliente

ou no servidor.

Tipos de Objetos.o Objetos Persistentes;o Objetos Transientes.

Objetos Persistentes.o Continua existindo mesmo que o servidor que esteja gerenciando

o objeto seja desativado;o Posteriormente outro servidor pode ser ativado e começar a

gerenciar o objeto;o Para isso, é necessário que o estado do objeto seja armazenado

em um disco auxiliar.

Objetos Transientes.o Existem apenas enquanto o servidor responsável por gerenciar o

objeto estiver ativo;

Page 10: Sistemas Distribuídos

o Quando o servidor é desativado, todos os objetos transientes por ele gerenciados deixam de existir;

Tratamento de Exceções.o A chamada de um objeto remoto no cliente deve estar sob um

controle de exceções;o Caso ocorra uma exceção na execução do objeto remoto, o

servidor empacota a mensagem e envia para o cliente;o O cliente desempacota a mensagem e levanta uma exceção logo

após a chamada o objeto remoto;

Java RMI. RMI: Invocação Remota de Métodos; Middleware para implementação de sistemas distribuídos em Java; Implementado como um pacote de linguagem; Limitações;

o Comunicação síncrona; A chamada de um método remoto fica esperando seu

retorno; Este problema pode ser resolvido através de threads;

o Permite a comunicação apenas entre sistemas desenvolvidos em Java;

Comunicação Orientada por Mensagens.

Sockets.o Define um canal de comunicação entre processos.o Localização dos processos.

Endereço Ip; Número da porta.

o Protocolos. TCP; UDP.

UDP.o User Datagram Protocol;o Utiliza Datagramas;

Estrutura de dados para transmissão em rede através de pacotes.

o Não tem mecanismo de confirmação de entrega das mensagens (Não confiável);

o Não faz retransmissão de mensagem;o Não é orientado à conexão.

Objetivos.o Transmitir dados com maior desempenho possível.

Page 11: Sistemas Distribuídos

Aplicação.o Transmissão de áudio e vídeo.

Limitação.o Tamanho das mensagens: 64 Kbytes.

TCP.o Transmission Control Protocol;o Protocolo da camada de transporte;o Protocolo base da Internet;o Garante a entrega de mensagens (confiável);o É orientado à conexão;o Trata duplicidade e ordenação das mensagens.

Controle de Fluxo:o Controla a velocidade de escrita do emissor e leitura do receptor;

Sem limitação:o Trata internamente a quebra de mensagens;

Aplicação:o HTTP, FTP, Telnet, SMTP.

Princípios de um socket TCP/IP.

Socket – Cria um canal de comunicação;

Atar (Bind) – Associa um endereço ao Socket;

Escutar (Listen) – Espera por novas conexões;

Aceitar (Accept) – Aceita a conexão;

Conectar Connect - Estabelece a conexão;

Enviar (Send) – Envia mensagens;

Receber (Receive) - Recebe mensangens;

Fechar (Close) - Fecha a Conexão.

Tipos de Processos.

Threads; Virtualização; Processos nos Clientes; Processos nos Servidores; Migração de Código; Agentes de Software.

Page 12: Sistemas Distribuídos

Definições:

“Linha de execução”; Divisão de um processo em tarefas que podem ser executadas

simultaneamente.

O sistema operacional é que fornece o suporte necessário à execução de threads.

A execução de processos através de threads provê Transparência de Concorrência.

Sistemas não-distribuídos:

Resolve o problema de comandos que podem travar a execução de um programa;

Provê a execução em paralelo de processos independentes.o Exemplo: Atualização de um dado que dispara diversas

atualizações de dados relacionados. Provê a comunicação entre processos (IPC).

o Exemplo: Sistemas Unix (Pipes, mensagens, memória compartilhada).

Sistema Paralelos e Distribuídos.

Suporte a múltiplas conexões ao mesmo tempo; Cliente multithread.

o Chamada de processos distribuídos sem bloqueio do programa principal.

o Transferência de dados em paralelo. Exemplo: Navegadores carregando uma página com

imagem e texto.o Execução de processos em paralelo.

Servidores multithread.o Sistemas multithread são utilizados principalmente nos servidores

de aplicação distribuídas.o Objetos.

Suportar conexões de vários clientes; Aumentar o desempenho das aplicações; Aumentar a disponibilidade das aplicações.

Virtualização.

Surgiu na década de 70 para mainframes.o Suportar softwares de outros S.O.

Uma única CPU poder simular que existem outras operando em paralelo.

Page 13: Sistemas Distribuídos

Flexibilidade e portabilidade.o Exemplo: JVM.

Processos nos Clientes.

Interfaces com Usuários.o Web;o Celular;o Telefone;o PDA;o Rede Local.

Transparência de Distribuição.o Usuários não devem perceber a comunicação com processos

remotos. Transparência de Acesso.

o O stub do cliente deve fornecer à aplicação cliente a mesma definição de interface do processo que está no servidor.

Transparência de Falhas.o O middleware do cliente é que tem a responsabilidade de

esconder as falhas de comunicação com o servidor. Transparência de Replicação.

o O proxy do cliente pode se comunicar com várias réplicas e passar uma única resposta para a aplicação cliente.

Oferecem serviços aos clientes.o Aguardam requisições;o Garantem resposta.

Exemplos (Protocolo TCP).o HTTP na porta 80.o FTP na porta 21.o SMTP na porta 25.o Telnet na porta 23.

Controle de estados dos clientes.o Stateless.

Não mantém informações sobre o estado dos clientes. Exemplo: Web Server.

o Stateful. Mantém informações sobre o estado dos clientes. Exemplo: Um servidor de arquivos que precisa manter

atualizadas as versões dos arquivos nos clientes. Cookie: Armazenam informações sobre os clientes que

interessam ao servidor. Transferência TCP.

o Handoff. Comutador identificar o melhor servidor e repassa o pacote

de requisição.o Spoofing.

Page 14: Sistemas Distribuídos

Servidor retorna para o cliente um pacote IP cujo cabeçalho possui o endereço IP do comutador como endereço de fonte.

Servidores de Objetos.o Suporte a objetos distribuídos.o Não provê serviços.o Os serviços são oferecidos pelos objetos.o Adaptadores de objetos:

Software que implementam políticas de ativação para os objetos no servidor.

Organização de um servidor de objetos que suporta diferentes políticas de ativação:

o Memória;o Segurança;o Cache.

Migração de Código.

Consiste na migração do código de um processo de uma máquina para outra.

É um procedimento caro e complexo. Necessita de uma forte razão para ocorrer:

o Desempenho (Fila de CPU). Passar de uma máquina sobrecarregada para outra com

maior disponibilidade.o Flexibilidade.

Quebrar a execução de um processo em partes.

Agentes de Software.

Unidades autônomas de software capazes de desempenhar uma tarefa em colaboração com outros agentes, possivelmente remotos.

A diferença dos agentes para um processo comum é a capacidade de tomar decisões por conta própria.

Utilizam princípios de inteligência artificial. Exemplos:

o Agentes que percorrem uma rede para obter determinado tipo de informação.

o Agente de e-mail que filtra informações indesejadas e responde automaticamente determinados tipos de mensagens.

o Jogos digitais.o Exemplo negativo: vírus.

Características:

Propriedade Comum a todos? DescriçãoAutônomo Sim Agir por conta própriaReativos Sim Responde a mudanças no ambiente

Page 15: Sistemas Distribuídos

Proativos Sim Iniciar ações que interferem no ambiente

Comunicativos

Sim Troca informações com usuários e outros clientes

Persistentes Não Ter um longo ciclo de vidaMóveis Não Migrar de um local para outroAdaptativos Não Ter a capacidade de aprendizado

Servidor de Nomes. Introdução; Entidades Nomeadas; Nomeação Simples; Nomeação Estruturada; Nomeação Baseada em Atributo; Removendo Entidades Não-Referenciadas.

Objetivos.

Compartilhamento de recursos; Identificação única de entidades; Obtenção de referências de localizações.

Para resolver nomes, é necessário que seja implantado um “serviço de nomes”.

Exemplos:

www, sistemas de arquivos, objetos distribuídos, etc.

Entidades Nomeadas

Entidade.

Pode ser considerada uma entidade qualquer elemento em um sistema distribuído.

Exemplos:

Servidor, Impressora, Disco, Arquivos, etc. Processos, usuários, caixas postais, páginas Web, mensagens,

interfaces gráficas, etc.

Nomes e endereços.

Nome é um string de bits ou caracteres utilizado para referenciar uma entidade;

Para operar uma entidade, é necessário fazer uma referência a ela através de um Ponto de Acesso;

Um ponto de acesso também pode ser considerado uma entidade; O nome de um ponto de acesso é chamado de Endereço.

Exemplos:

Page 16: Sistemas Distribuídos

Um telefone seria um ponto de acesso para uma entidade pessoa e o número do telefone seria o endereço.

Exemplo em um sistema distribuído:

Ponto de acesso: Host executando um servidor específico (FTP, HTTP, SMTP, etc.);

Endereço: IP + porta.

Nomes independentes de localização.

Um nome identifica uma entidade de forma única; Vários endereços podem estar associados a um mesmo nome; É possível alterar o endereço de uma entidade sem alterar o seu nome; Objetivo: maior flexibilidade para mudanças.

Identificadores.

São nomes com as seguintes propriedades:o Identificam apenas uma entidade;o Cada entidade é referenciada por apenas um identificador;o Um identificador não pode ser trocado ou reutilizado.

Nomeação Simples.

Broadcasting.o Aplicável em redes locais;o Mensagem que contém o identificador da entidade é enviada pela

rede;o Máquinas que podem oferecer um ponto de acesso para a

entidade retornam uma mensagem com o endereço;o Baixa escalabilidade.

Ponteiros repassadores.o Aplicável para entidades móveis;o Cada vez que uma entidade muda de localização ela deixa um

ponteiro na localização anterior; o Para localizar uma entidade, é necessário seguir os ponteiros a

partir da localização inicial; o Para evitar perda de desempenho, é necessário reduzir a cadeia

de ponteiros; o Baixa escalabilidade.

Localização Nativa.o Uma localização nativa (base) deve ser alocada para uma

entidade;o Cada vez que a entidade muda de lugar, ela deve informar a nova

localização à sua base;o Para localizar uma entidade, basta consultar o endereço corrente

em sua base;

Page 17: Sistemas Distribuídos

o Alta escalabilidade;o Problema de centralização de recursos.

Tabelas Hash Distribuídas (DHT).o Aplicável em rede P2P;o Cada nó contém uma tabela de derivação;o Para que um nó resolva uma requisição cujo destino não consta

em sua tabela, ele repassa aos seus vizinhos... o O repasse de requisições pode ser recursivo ou iterativo;o A chave da eficiência está na proximidade dos vizinhos.

Árvore de pesquisa hierárquica.o Uma rede é dividida em domínios;o Domínios podem ser agrupados até um único nível que cubra

toda rede;o Todas as entidades agrupadas em um domínio são conhecidas

pelo domínio superior;o Domínios de nível mais baixo são denominados domínios-folha;o Alta escalabilidade.

Nomeação Estruturada.

Espaços de Nomes.o Sevem para organizar os nomes em um sistema distribuído.o São representados por um grafo direcionado com dois tipos de

nós: Nó folha: Representa uma entidade nomeada. Nó de diretório: Representa a organização intermediária de

todos os caminhos que levam a uma entidade. Resolução de Nomes.

o Processo de recuperação de nomes em um espaço de nomes.o Através de mensagens na rede.

“Entidade X, onde está você?” Sobrecarga na rede.

o Através de um serviço de nomes. “Serviço, onde está a entidade X?” Consistência de dados.

Implementação de espaços de nomes. Espaços de nomes distribuídos

o Camada global. Nó raiz e nós de alto nível com alto grau de estabilidade.

o Camada administrativa. Grupos de organizações ou unidades administrativas.

o Camada gerencial. Composta por nós com menor estabilidade que

representam hosts em uma rede local. Implementação de espaços de nomes.

o Comparação entre as camadas.

Page 18: Sistemas Distribuídos

Item Global Administrativa GerencialEscala geográfica Mundial Organizacional DepartamentalNúmeros de nós Poucos Muitos IncontáveisTempo de resposta

Segundos Milissegundos Imediato

Propagação de atualização

Lento Imediato Imediato

Quantidades de Réplicas

Muitas Poucas Pouquíssimas

Cache nos clientes Sim Sim Algumas vezes

Implementação de resolução de nomes.o Resolução iterativa.

Cada parte de um nome é resolvida através de uma iteração do cliente com o servidor que possui a informação da parte subsequente.

o Resolução recursiva. Os servidores de nível mais alto interagem com os de nível

mais baixo para resolver um nome. Existe apenas uma iteração entre o cliente e o servidor

raiz. Comparação: Iterativa x Recursiva.

o Resolução iterativa. Menor carga nos servidores de nomes; Desempenho depende da distância em clientes e

servidores.o Resolução Recursiva.

Exige maior desempenho dos servidores de nomes. Melhor desempenho em função dos mecanismos de

caching. Menor custo de comunicação em função da proximidade

de alguns servidores. Sistema de Nomes de Domínio (DNS).

o Um dos maiores serviço distribuído de nomes da Internet.o Projeto de mais de 30 anos sem indicação de necessidade de ser

substituído.o Árvore hierárquica cujos rótulos são compostos por caracteres

alfanuméricos. Rótulo: 63 caracteres. Caminho completo: 255 caracteres.

o Cada sub-árvore representa um domínio.

Nomeação Baseada em Atributo.

Fornece a descrição de uma entidade em termos de pareso Atributo + Valor.

Serviço de nomes de objetos.

Page 19: Sistemas Distribuídos

o Exemplo: rmiregistry (Java RMI). Nomeação Estruturada + Baseada em Atributo.

o LDAP (Lightweight Directory Access Protocol).o AD (Active Directory Microsoft).

Removendo entidades não- referenciadas.

Entidades que não podem mais ser localizadas devem ser removidas; A organização de referências em sistemas distribuídos deve remover

automaticamente entidades não referenciadas; Mecanismos de “coleta de lixo”.

o Contador de referências;o Lista de processos;o Rastreamento.

Contador de referências.o Cada referência criada para uma entidade o contador de

referências é incrementado;o Quando a referência é removida, o contador é decrementado;o Quando o contador é zerado, o objeto pode ser removido;

Lista de processos.o Todos os processos que referenciam uma entidade devem ser

mantidos em uma lista;o Quando a lista estiver vazia a entidade pode ser removida;o Mais confiável que o contador;o Baixa escalabilidade;

Rastreamento.o Todas as entidades que são direta ou indiretamente referenciadas

por um determinado conjunto de entidades são marcadas como alcançáveis;

o Entidades não alcançáveis devem ser removidas;o Não é um processo simples, pois a marcação de entidades

alcançáveis deve inspecionar todas as entidades do sistema;o