Você está na página 1de 141

UNIVERSIDADE ESTADUAL DO PIAUÍ - UESPI

CAMPUS PROFESSOR ANTÔNIO GIOVANNE ALVES DE SOUSA


CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
SISTEMAS DISTRIBUÍDOS

SERVIÇO DE NOMES, DE ARQUIVOS E WEB

Msc. PATRÍCIA DAYANA DE ARAÚJO SOUZA


Material Adaptado
Sistema de Nomes

Nomes,
Identificadores,
Endereços Implementação de um
espaço de nomes
Nomeação Simples Implementação de
Nomeação baseada em resolução de nomes
atributo
Nomeação Estruturad
aa DNS, CDN
Nomeação
⚫ Nomes:
– Compartilhar recursos
– Identificar entidades de maneira única
– Fazer referência a localizações
⚫ Nome deve ser resolvido para a entidade à qual se refere
– Sistema de Nomeação (ex. DNS)
⚫ Em um SD, a implementação de um sistema de nomeação
costuma ser distribuída por várias máquinas
– Modo como é feita a distribuição desempenha papel
fundamental na eficiência e escalabilidade do sistema
Nomes, Identificadores e Endereços
⚫ Um endereço pode ser utilizado como uma
maneira de nomear, identicar uma entidade
– Problema: Entidade pode mudar facilmente
de ponto de acesso!
Como nomear entidades, sem utilizar
especificamente seu endereço, ou seja, nomeá-las
independentemente da sua posição física
(localização)?
Identificadores ou Nomes amigáveis a seres
humanos
Identificadores
⚫ Em muitos casos, são cadeias aleatórias de bits,
com as seguintes propriedades:
– Um identificador referencia, no máximo, UMA entidade
– Cada entidade é referenciada por, no máximo, UM
identificador
– Um identificador sempre referencia a mesma entidade, isto
é, nunca é reutilizado
⚫ Ex:
ISBN de livros; Número de um funcionário dentro
Números de identificação de de uma organização;
produtos de software e hardware; Ethernet Addresses.
Nomes amigáveis

⚫ Nomes representados por uma cadeia de


caracteres
– Pathnames, domínios na internet, números de
processos...
• Ex: /etc/passwd; http://www.uespi.br
Como resolvemos nomes
e identificadores para
endereços?
Sistemas de Nomeação
⚫ Como resolver [nome, identificador ou atributos] em
endereços?
– Tabela de pares (mantém uma vinculação nome-
endereço);
– Contudo, sistemas que abrangem redes de grande
porte, uma tabela centralizada não vai funcionar.

• Em SDs, usualmente o nome é decomposto em várias partes


(Tabelas de hash distribuídas), e a resolução é realizada
por meio de consultas recursivas.
Sistemas de Nomeação

⚫ Três Classes
– Nomeação Simples
– Nomeação Estruturada
– Nomeação Baseada em Atributo
Nomeação Simples
Solução Simples

– Cadeias aleatórias de bits → nomes simples


– Não contém sequer uma informação sobre como localizar
o ponto de acesso de uma entidade associada
• Problema: Dado um identificador, como localizar o ponto
de acesso (endereço)?
– Soluções Simples (broadcasting/ Multicasting);
• Outro Problema: Entidades podem se mover ou mudar de
endereço?
– Ponteiros repassadores;
– Abordagens baseada na localização nativa;
– Tabelas de Hash Distribuídas (DHT);
– Abordagens hierárquicas;
Nomeação Simples
Solução Simples

• Broadcasting e Multicasting
– Broadcasting – uma mensagem que contém o
identificador da entidade é enviada por broadcast a
cada máquina da rede e cada uma delas deve
Nomeação

verificar se tem essa entidade. Somente as


máquinas que podem oferecer AP para a entidade
respondem com mensagem que contém o endereço
daquele AP. (Usado nos protocolos ARP)
• Ineficiente quando a rede cresce;
– Multicasting – Envia apenas para grupos
específicos, limitando o tráfego;
• Também usado para associar réplicas e
localizar a réplica mais próxima.
Nomeação Simples
Solução Simples
• Ponteiros e Repassadores
Nomeação Simples
Solução Simples
• Ponteiros e Repassadores
Nomeação
Nomeação Simples
Abordagens baseadas na localização nativa
Nomeação Simples
Abordagens baseadas na localização nativa

Nomeação
Nomeação Simples
Abordagens hierárquicas
Nomeação

• C a d a domínio t e m u m nó diretório a s s o c i a d o .
– O d e nível m a i s alto é o nó raiz, e s a b e q u a i s s ã o todas e n t i d a d e s .
– Os “nós pais” não guardam informações, mas ele conhece todas as
entidades que os filhos dele guardam;
– Os nós folhas é onde realmente se encontra as informações.
– U m registro d e localização representa u m a e n t i d a d e e m dir(T).
Nomeação Simples
Abordagens hierárquicas
Explora a Localidade
Operação de Consulta:
Nomeação
Nomeação Simples
Tabelas de hash distribuídas
Nomeação Simples
Tabelas de hash distribuídas
Nomeação Simples
Tabelas de hash distribuídas
• Exploração de proximidade da rede
– Requisições podem ser roteadas erraticamente pela
Internet.
– Necessário levar em conta rede subjacente, nas formas:
Nomeação

1.Identificadores de nós designados com base na Topologia:



Nós próximos possuem identificadores próximos.
2.Roteamento por proximidade;

Nós mantêm lista de alternativas para repassar requisição.
3.Seleção de vizinho por proximidade.

Otimiza tabelas de roteamento para o nó mais próximo ser
selecionado como vizinho.

Uso de consultas iterativas ou recursivas.
Nomeação Baseada em Atributo
Nomeação Baseada em Atributo
Nomeação Baseada em Atributo
Nomeação Baseada em Atributo
Nomeação Estruturada
⚫ Identificadores são bons para máquinas, mas não são
convenientes para a utilização de seres humanos.
⚫ Nesse caso, nomes ou identificadores são organizados em
um espaço de nomes;
⚫ Espaços de nomes podem ser representados como um grafo
dirigido, com dois tipos de nós:
– Nó-folha: entidade
– Nó de diretório: entidade que se refere a outros nós
⚫ Nó de diretório possui uma tabela de diretório

<nome aresta, nome nó>


⚫ Sistemas de nomeação comumente suportam nomes
estruturados
– Exemplo: Nomeação de arquivos, hosts na Internet
Nomeação Estruturada
Implementação de um Espaço de Nomes
⚫ Costumam ser organizados em hierarquia
⚫ Segundo Cheriton e Mann (1989) é conveniente dividir os espaço de
nomes em três camadas
– Camada global
• Raiz e seus filhos
• Principal característica: Estabilidade
• Podem representar organizações
– Camada Administrativa
• Nós de diretórios
• Gerenciados por uma única organização
• Relativamente estáveis
– Camada Gerencial
• Nós cujo comportamento típico é a mudança periódica
• Mantidos por administradores de sistemas e usuários finais
Nomeação Estruturada
Implementação de um Espaço de Nomes
Nomeação Estruturada
DNS: Banco de Dados Distribuído e Hierárquico
Root DNS Servers

com DNS servers org DNS servers edu DNS servers

pbs.org poly.edu umass.edu


yahoo.com amazon.com
DNS servers DNS servers DNS servers
DNS servers DNS servers

Cliente procura o IP para www.amazon.com:


❒ Cliente consulta um servidor raiz para encontrar o
servidor DNS .com
❒ Cliente consulta o servidor DNS .com para
encontrar o servidor amazon.com
❒ Cliente consulta o servidor amazon.com para
encontrar o endereço www.amazon.com
Servidores TLD e com autoridade
❒Servidores Top-level domain (TLD) :
❖ Responsáveis pelo domínio de mais alto nível: com, org,
net, edu, etc, e todos os domínios (top-level) de países br,
uk, fr, ca, jp.
❖ Nic.br mantém servidores TLD para “br”, Network
Solutions (EUA) mantém servidores para .com, Educause
para .edu, etc.
❒Servidores DNS com autoridade:
❖ Servidores DNS de uma organização, que fornecem um
host para mapear os nomes dos servidores da
organização em endereços IPs (e.g., Web, mail).
❖ Gerenciados pela própria organização, pelo provedor
de serviço de internet (ISP), ou CDN
Servidor de Nome Local
❒ Não pertence a hierarquia
❒ Recebe a consulta proveniente dos dispositivos finais
(ex.: seu laptop)
❖ O dispositivo faz uma consulta DNS através de algum
local name server
❒ Cada ISP (ISP residencial, empresa, universidade)
tem um.
❖ Também chamado de “default name server”
❒ Atua como um proxy, enviando a consulta aos
servidores da hierarquia
DNS - Exemplo de root DNS server

resolução de Nome
2
❒ Host em cis.poly.edu 3
TLD DNS server
quer o endereço para 4
gaia.cs.umass.edu 5

Consulta iterativa: local DNS server


dns.poly.edu
❒ Contacta o servidor e 6
7
responde com o nome do 1 8
próximo servidor para
contato authoritative DNS server
❒ “Não consigo resolver dns.cs.umass.edu
este nome, mas pergunte requesting host
cis.poly.edu
a este servidor”
gaia.cs.umass.edu
DNS - Exemplo de root DNS server

resolução de Nome
2 3

Consulta recursiva: 7 6

❒ Toda a consulta é feita TLD DNS server


através do servidor raiz
❒ O servidor repassa a
local DNS server
consulta para outro dns.poly.edu 5 4
servidor e aguarda a
resposta. 1 8
❒ “Eu não conheço este
nome, mas vou authoritative DNS server
descobrir e te dns.cs.umass.edu
responder” requesting host
cis.poly.edu

gaia.cs.umass.edu
Como resolver nomes?
⚫ Resolução Iterativa
– Servidor responde somente o
que sabe: o nome do próximo Tipo Carga Cache Comunicação
Camada
servidor que deve ser buscado Global
– Cliente procura iterativamente
os outros servidores
⚫ Resolução Recursiva Iterativa Baixa Menos Custosa
Eficiente
– Servidor passa o resultado para
o próximo servidor que Recursiva Alta Mais Menos
encontrar Eficiente custosa

– Para o cliente, somente existe


uma mensagem de retorno: o
endereço do nome ou 'não
encontrado'
Distribuindo Conteúdo
Como distribuir conteúdo p a r a m i l h ar e s
de pessoas simultaneamente?
ex. biblioteca c o m m i l h õ e s d e f i l m e s

I d eia 0 : um único, “mega servidor”


ponto único de falha
ponto de congestionamento de rede
caminho longo até cliente distantes
várias cópias do mesmo conteúdo
enviadas pelo mesmo enlace
Esta solução não funciona para atender
milhões de clientes
Distribuindo Conteúdo
I d ei a 1 : armazenar e servir conteúdo a
partir de múltiplos servidores em diferentes
locais geográficos
Ideia 0 Ideia 1

Replicar conteúdo e armazenar mais próximo


dos clientes: Content Distribution Network (CDN)
Content Distribution Network
Dois paradigmas para construir uma CDN
enter deep: instalar servidores CDN em muitas
redes de acesso
• mais próximo dos usuários
• usado pela Akamai, presente em +4 0 0 0
localidades em +1 3 0 países
bring home: menor número de cluster de
servidores instalados nos POPs (Points-of-Presence)
• próximo das redes de acesso
• usado pela Limelight, presente em 135 POPs
S e l e ç ã o d e Servidor CDN
desafio: como escolher u m bom servidor CDN para
u m cliente específico?
escolher servidor CDN mais próximo
geograficamente do cliente
escolher servidor CDN com menor latência de
rede até o cliente
Como determinar esses servidores?
1) geolocalização de endereços IPs,
2) ping entre servidores CDN e servidores de nome
de ISPs
alternativa: deixar cliente (aplicativo) decidir – DNS
retorna lista de servidores CDN
cliente pode escolher o melhor (ex. estimar
latência com ping)
E s t u d o d e C a s o: Netflix
30% trafégo de downstream nos EUA em 2011
Possui muito pouca infrastrutura, utiliza serviços
de terceiros
servidores para inscrição e pagamento
Utiliza serviços de nuvem da Amazon
Faz upload master para nuvem da Amazon
Cria multiplas versões do vídeo na nuvem
Upload dos vídeos da nuvem para CDNs
Serviços web da Netflix na nuvem Amazon (login,
navegar, escolher)
Contrato com 3 CDNs para distribuir vídeos:
Akamai, Limelight, Level-3
E s t u d o d e C a s o: Netflix

upload copies of multiple


Amazon cloud
versions of video to
CDNs Akamai CDN

Netflix registration,
accounting servers
3. Manifest file
returned for
2. Bob browses
requested video Limelight CDN
Netflix video 2
3
1

1. Bob manages
Netflix account
Level-3 CDN
4. DASH streaming
Sistemas de arquivos distribuídos
Sistemas de arquivos distribuídos

• Introdução (Objetivos e Definições)


• Sistemas de arquivos Vs Sistemas de
arquivos distribuídos
• Requisitos de um SAD
• Arquitetura de um SAD
• Estudos de casos: NFS e GFS
Objetivo dos Sistemas de
arquivos distribuídos

• Permitir que programas armazenem e acessem


arquivos remotos exatamente como se fossem
locais
• Possibilitando que usuários acessem arquivos a partir de
qualquer computador em uma rede
• Capta a essência do compartilhamento de recursos
pregado pelos desenvolvedores de sistemas
distribuídos
Voltando um pouco aos sistemas de
arquivos “tradicionais”...
• Originalmente desenvolvidos para computadores
centralizados e desktop
• Recurso do sistema operacional que fornece uma
interface de programação conveniente para
armazenamento em disco, permitindo:
• Controle de acesso
• Mecanismos de proteção
• Compartilhamento de dados e programas
Voltando um pouco aos sistemas de
arquivos “tradicionais”...
• Os primeiros computadores executavam seus
programas contando exclusivamente com a
informação carregada na memória primária.
• Que problemas essa abordagem causava?
– O espaço de endereçamento de cada
processo que estava executando era muito limitado
em seu tamanho. Por vezes, aplicações muito
grandes não cabiam inteiramente na memória.
– Quando o processo terminava, toda a
informação que ele manipulava era eliminada da
memória junto com o mesmo.
Voltando um pouco aos sistemas de
arquivos “tradicionais”...
• Outros problemas:
– Falhas no funcionamento do hardware comprometiam a
informação manipulada.
– Múltiplos processos precisavam acessar uma
determinada informação (ou apenas parte dela) ao mesmo
tempo e isso não era possível, pois cada processo tinha seu
próprio espaço de endereçamento protegido do acesso dos
demais.
• A solução para todos estes problemas era uma só: tornar a
informação independente dos processos que a manipulavam
– Assim nasceu o conceito de ARQUIVO
Voltando um pouco aos sistemas de arquivos “tradicionais”...

• Arquivo

Uma sequencia de bytes.

Um sistema especifico de uma estrutura
interna.

Atributos: Tamanho, acesso, datas,
dono.

...
• Diretório (arquivo especial)
✔ Mapeia os nomes para os identificadores.

✔ Pode conter subdiretórios (arvore).


Voltando um pouco aos sistemas de arquivos “tradicionais”...
Sistemas de Arquivos Locais
➢Fat 16: ➢NTFS:
•S.O: 16 bits •S.O: 32 e 64 bits
•Capacidade: 2GB •Capacidade: 5TB
•Qt. de caracteres no nome:8 •Qt. de caracteres no nome: 255
➢Fat 32: •Capacidade por ficheiro: 512GB
•S.O: 32 bits •Sistema de journaling
•Capacidade: 32GB
➢Etx
•Qt. de caract. no nome: 255
➢APFS
•Capacidade por ficheiro: 4GB
Sistema de Arquivos Distribuído
“Permite aos programas armazenareme acessarem arquivos
remotos exatamente como se fossem locais,
possibilitando que os usuários acessem arquivos a partir
de qualquer computador em uma rede. O desempenho
e a segurança no acesso aos arquivos armazenados em um
servidor devem ser comparáveis aos arquivos armazenados
em discos locais.”
– [Coulourus, G.; Dollimore, J.; Kindberg, T. Sistemas Distribuídos Conceitos e
Projeto] – Cap 7.
SAD - Sistemas de Arquivos Distribuídos

• Oferecem:
– Acesso remoto aos arquivos armazenados em um servidor
– Acesso aos dispositivos de E/S de outras máquinas
– Controle de versão e restauração de cópias de segurança
• Os sistemas de arquivos distribuídos devem prover:
– Confiabilidade
– Redundância
– Disponibilidade
– Escalabilidade
Por que adotar SAD?
• Compartilhamento de recursos é sempre um desafio.
– Clientes dispersos
– Ponto de vista centralizado
– Mobilidade e flexibilidade
• SAD oferece um esquema de compartilhamento bem estruturado
– Espaço em disco.
– Administração compartilhada.
– Cada maquina não tem que armazenar arquivos que irá acessar.
O quê um SAD provê ?


Provê acesso a dados armazenados nos servidores de arquivo através das
Interfaces de sistemas de arquivo.


Interfaces são partes do sistema de arquivo com as funções de:


Abrir arquivo, checar estado, fechar.

Ler ou escrever dados em um arquivo
Bloquear um arquivo ou partes dele.


Listar arquivos em um diretório.

➔ Apagar, renomear um arquivo ou diretório, etc


O quê um SAD provê ?
O quê um SAD deve suportar ?

Compartilhamento de informações remotas


Permitir que um arquivo seja acessado
transparentemente em qualquer nó,
independente da sua localização.


Mobilidade do Usuário


Usuário pode trabalhar em qualquer nó em
diferentes momentos (Flexibilidade)
SAD – O que se busca?
• Tolerância a Falhas
– Se um servidor cair ou ficar fora do ar ou da rede, o
sistema de arquivos não pode perder informações e
nem ficar indisponível total ou parcialmente
• Acesso Concorrente
– Vários usuários podem acessar vários arquivos, ou os
mesmos arquivos, sem sofrer danos, perda de
performance ou quaisquer outras restrições
• Replicação de Arquivos
– Com esta funcionalidade, a confiança e a eficiência do
serviço de arquivos é aumentada significativamente
SAD - Requisitos
• Transparência de...
– Acesso: clientes tratam arquivos como locais
– Localização: espaço de nomes uniforme e sem
mudança quando arquivos mudarem
– Concorrência: operações dos clientes não devem
interferir umas com as outras
– Falha: servidores devem operar normalmente na falha
dos clientes, e vice-versa
– Desempenho: não deve variar com altas cargas
SAD - Requisitos
• Usabilidade depende de...
– Heterogeneidade de HW e SW
• Interfaces definidas de forma que possam ser
implementadas por vários HW e SW
– Escalabilidade
• Serviço deve ser extensível para acomodar mudanças de
escala do SD
– Transparência de replicação
• Arquivos podem estar fisicamente replicados e cliente
ignora esse fato
– Transparência de migração
• Arquivos podem mudar de lugar e isso não deve alterar os
clientes
SAD - Requisitos
– E ainda...
• Compartilhamento
– Toda operação em um arquivo deve ser visível a todos processos
– Semântica de sessão: nenhuma modificação é visível aos outros
processos até que o arquivo seja fechado.
• Transações:
– Todas as modificações têm a propriedade do tudo-ou-nada
(atomicidade);
– Serialização (processo para converter uma estrutura de dados ou um
objeto em um formato que possa ser armazenado ou transferido).
SAD – Serviços Básicos
• Serviço de Nomes Distribuído
– O serviço de nomes cuida de indicar a
localização de um determinado arquivo, dado o seu nome ou caminho.
• Serviço de Arquivos Distribuído
– Responsável por fornecer operações sobre os arquivos que compõe o
sistema.
– Os arquivos podem ser armazenados de diferentes formas,
dependendo do seu tipo e uso.
• Serviço de Diretórios Distribuído
– Responsável por manter a organização dos arquivos armazenados no
sistema.
– Ele fornece uma interface para que os usuários possam arranjar seus
arquivos num formato hierárquico, que é estruturado em diretórios e
subdiretórios.
Formas de armazenamento

Arquitetura Modular


Pode ser configurado em modo standalone (1 servidor)


O sistema pode crescer ao tempo de acordo com a
necessidade
Formas de armazenamento

Sistema de arquivos distribuído e descentralizado


Agregação de múltiplas unidades de armazenamento
remotas (bricks) em um único volume


Funcionalidades implementadas através de tradutores
(translators)


Descarta a necessidade da utilização de servidores de
metadados
✓ Funcionalidades implementadas através de tradutores

✔ Replicação e espelhamento em nível de arquivos


✔ Striping em nível de arquivos
✔ Load balancing em nível de arquivos
✔ Volume failover
✔ Scheduling e disk caching
✔ Storage quotas
Arquitetura

Volume Distribuído
Arquitetura

Volume Replicado
Arquitetura

Volume Distribuído e Replicado


Arquitetura

Volume Striped
Exemplos de SAD

NFS (Network File System)
✔ GFS(Global FileSystem)
✔ GFS(Google FileSystem)
✔ GlusterFS
✔ PVFS (parallel virutal file system)
✔ AFS (Andrew FileSystem)

DFS
✔ CODA (Constant Data Availability)
✔ SUN Network Filesystem
✔ Hadoop
✔ Ceph
✔ XteemFS
✔ Lustre
NFS- Network File System

Exemplo Canônico de SAD
✔ Arquitetura simples Cliente-Servidor

Muito popular no Unix

Ideia Fundamental:

Cada servidor de Arquivos fornece uma visão padronizada
de seu sistema local de arquivos
✔ Fornece ao cliente acesso transparente a um sistema de arquivos que
é gerenciado por um servidor remoto

É utilizada um sistema de Arquivo Virtual (VFS)
✔ Todas as requisições ao FS do servidor são realizadas via
RPC (Remote Procedure Call)
NFS
GFS (Google File System)

Bem descrito no artigo de Ghemawet, 2003

O artigo o descreve como:

SAD projetado p/ escalar para grandes aplicações
distribuídas e orientada ao uso de intensivo de dados
(Arquivos)

Provê tolerância a falhas, roda em hardware comum e
economicamente viável, e oferece alta performance
agregada a um conjunto grande de clientes
✔ Cada cluster GFS consiste em vários servidores de dados e
um mestre

Arquivos GFS são divididos em porções de 64Mb

O mestre(servidor de metadados) possui o endereço
onde cada arquivo se encontra no SAD.
GFS (Google File System)
SAD baseados em Cluster


Clusters normalmente são usados para
computação paralela


Algo semelhante pode ser feito em SAD como file
stripping (arquivos em tiras) através dos
servidores

Funciona bem se os dados tiverem uma estrutura bem
regular
✔ Para aplicações de uso geral e dados irregulares e com
diferentes estruturas esse modelo não será muito efetivo


Outra abordagem possível é armazenar arquivos
inteiros em servidores, sem particionar o arquivo
GlusterFS

É um sistema de arquivo open source, que trabalha em


cluster e é capaz de escalar diversos petabytes e gerenciar
milhares de clientes. Se encaixa bem para tarefas “data-
intensive” como armazenamento na núvem e streaming de
media

- GlusterFS User Guide at gluster.readthedocs.io


SAD – Aspectos de
Implementação
• Componentes
– Para preencher os requisitos e
implementar serviços, ajuda
bastante se o SA for
implementado com três
componentes:
• Serviço de arquivo básico
• Serviço de diretório
• Módulo de cliente
– Quem faz o que?
SAD – Aspectos de
Implementação
• Serviço de arquivos básico
– Implementa operações nos arquivos
– Arquivos são referenciados por seus FIDs (File Ids)
• FIDs devem ser únicos no SD
SAD – Aspectos de
Implementação
• Serviço de Diretorio
– Responsável por converter nomes textuais em FIDs
– Diretório
• Nomes textuais e o conjunto de FIDs
• Arquivos de diretório são arquivos, e gerenciados pelo SAB
(Serviço de Arquivo Básico)
• Hierarquia de diretórios
SAD – Aspectos de
Implementação
• Modulo Cliente
– Chamadas de sistema para manipulação de arquivos
• Criar, ler, escrever...
– Armazena localização na redes do serviço de diretório e de
arquivo básico
– Pode gerenciar cache local
SAD – Aspectos de
Implementação
• Interface do Serviço de Arquivo Basico (SAB)
– Aspectos dessa interface
• Manipula usando IA (identificador de arquivo)
• Servidor sem estado (stateless)
– Clientes são responsáveis por saber onde estão
lendo/escrevendo
– No caso de falha, depois do retorno não há
procedimento especial
SAD – Aspectos de
Implementação
• Apenas relembrando...
– Stateless
• Servidor não guarda informação sobre clientes nem
sobre arquivos (IAs)
– Responsabilidade do cliente em manter o estado
– Stateful
• Mantém informação de qual cliente abriu qual arquivo,
e em que bloco está
• Requisições são atendidas mais rápido, pois não precisa
localizar o IA do arquivo
SAD – Aspectos de
Implementação
• Geraçao de IAs
– Devem ser gerados de forma única no
espaço/tempo e difícil de forjar
• Arquivo removido, IA descartado
– IA não é endereço
• Não contém informações sobre localização do arquivo
SAD – Aspectos de
Implementação
• Geraçao de IAs
– Como garantir unicidade e integridade?
• Usar um espaço de números pouco populoso
– IA = ID do grupo + inteiro (não reutilizável)
– Acrescentar uma parte aleatória ao inteiro
– Tornar a distribuição de IAs válidos
– Parte aleatória inacessível aos clientes
SAD – Aspectos de
Implementação
• Modos de Acesso
– Controle de acesso tem por base o IA (identificador
de arquivo)
• Uma chave ou “capacidade” (capability)
• Só fornecer IA a quem tem direito de acesso
– E arquivo compartilhado?
• Dono precisa de direitos especiais
– Incorporar seletividade na capacidade do IA
• Incluir campo de permissão no IA proposto
SAD – Aspectos de
Implementação
• Modos de Acesso
– Bits adicionais indicando permissão
• Leitura
• Escrita/truncamento
• Remover
• Obter/definir permissões

– Na criação, usuário pode tudo


– Durante Lookup (busca), IA retorna apenas com
permissões concedidas ao usuário
SAD – Aspectos de
Implementação
• Modelos de Arquivos
– Arquivos estruturados e não-estruturados
• Arquivos estruturados (sequência ordenada de
registros) são raramente utilizados, podendo ser
indexado ou não-indexado. A maioria dos SO’s
modernos utilizam arquivos não-estruturados.
– Arquivos modificáveis e não-modificáveis
• O modelo mais usado é o modificável. Alguns sistemas
atuais utilizam o modelo não-modificável que permite
um compartilhamento consistente e assim facilita
caching e replicas.
SAD – Aspectos de
Implementação
• Semântica de Compartilhamento
• Controle de concorrência (Quando há mais de
um processo lendo e/ou escrevendo em um
arquivo)
– Quatro tipos básicos de semântica
• Semântica UNIX
• Semântica de sessão
• Arquivos imutáveis
• Transações
SAD – Aspectos de
Implementação
• Semântica UNIX
– Um read que segue um write vê o valor escrito pelo write
• Obrigatoriedade de ordenação total
• Sempre retorna o valor mais atual
– Implementação fácil
• Servidor central que processa requisições na ordem (lógica)
SAD – Aspectos de
Implementação
• Semântica de sessão
– Relaxamento na semântica UNIX
– Mudanças em um arquivo aberto são visíveis apenas
ao processo que modifica o arquivo
– Quando o arquivo é fechado, as mudanças são
visíveis para outros processos. O arquivo fechado é
enviado de volta para o servidor
– Está errado?
• Não
• Amplamente implementado
SAD – Aspectos de
Implementação
• Semântica de sessão (continuação)
• Servidor centralizado trás problemas de gargalo e ponto
central de falha

Gargalo pode ser aliviado com uso de caches nos clientes
– Cliente-1 lê o arquivo (coloca no cache) e altera
– Cliente-2 lê o arquivo (leu a versão antiga do arquivo)
• O que acontece se dois ou mais clientes estão modificando
um mesmo arquivo em suas caches?
– O resultado final depende do último close
– Pode-se usar uma regra arbitrária para decidir
SAD – Aspectos de
Implementação
• Semântica de arquivos não modificados
• Por que se preocupar?
• Arquivos não podem ser alterados
– Apenas READ e CREATE
• E para alterar um arquivo?
– Nenhum arquivo pode, ser alterado, mas pode-se criar um
novo de forma atômica
– Arquivos são imutáveis, mas diretórios não
• Problema : se dois clientes desejam trocar um arquivo no mesmo
tempo?
– Usa-se o último ou adota-se qualquer regra não determinística
SAD – Aspectos de
Implementação
• Semântica de transação
• Tratar operações de forma atômica
– Todas modificações nos arquivos são delimitados
por um Begin e um End transaction
SAD – Aspectos de
Implementação
SAD - Replicação
• SDs geralmente oferecem alguma forma de
replicação de dados
– Múltiplas cópias do mesmo objeto
• Por que?
– Aumentar confiabilidade - a quebra de um servidor não implica na
perda de dados
– Permitir acesso mesmo na caso de falha - mesmo que um servidor
não esteja disponível o acesso continua
– Divisão de carga entre servidores - espalhar a carga de trabalho em
vários servidores
• Principal problema: transparência
SAD - Replicação
• Replicação explícita
– Programador faz todo o “trabalho
sujo”
– Serviço de diretório pode permitir
múltiplos IAs por arquivo
• Recupera todos no lookup
• Quando for manipular, tenta
sequencialmente um por um
dos IAs, até conseguir
– Funciona, mas é muito trabalhoso,
e nada transparente
SAD - Replicação
• Replicação atrasada
– Apenas uma cópia é feita em um
servidor
– O servidor é responsável por...
• Propagar atualizações
• Selecionar outro servidor para
atender, se ele não puder
SAD - Replicação

• Replicação em grupos
– Operação de escrita é feita ao
mesmo tempo em todos os nós
• Multicast atômico (tudo-ou-nada)
Serviços Web
Web Services

• Histórico
• Definições
• Exemplos de Serviços Web
• Conceitos principais
• Características dos Web Services
• Arquitetura
• Para que servem?
• Visão Geral
• Web Service- implementação
HISTÓRICO

Início da Computação
• Programas executados localmente.
Surgimento das Redes de Computadores
• Arquitetura cliente-servidor.
Avanço das Redes de Computadores
• As aplicações necessitavam se comunicar entre si de
forma
dinâmica.
• Web services foram desenvolvidos para realizar
interações aplicação-aplicação, embora também possa
ser utilizada para interações com o usuário.
DEFINIÇÃO 1
Web services
- Serviços de aplicações que podem ser acessados
utilizando os protocolos padrões da Web, como
por exemplo, o http, o https, etc.
- Basicamente, possibilita a comunicação entre os
sistemas distribuídos;
DEFINIÇÃO 2
Web services
- "Web Services" é o conjunto de padrões que
asseguram interoperabilidade entre serviços
especialmente quando esses serviços devem se
comunicar utilizando os protocolos da Web.
DEFINIÇÃO 3
Web services
- Sistema de software projetado para apoiar interações
máquina-máquina interoperáveis pela rede, fornecendo
uma interface descrita em um formato processável por
máquina (WSDL).
Exemplos de Serviços Web
Exemplos de Serviços Web
Exemplos de Serviços Web
Conceitos principais
- Acessível pela Internet. Os serviços se comunicam
utilizando protocolos que são independentes de
plataforma facilitando a integração em plataformas
heterogêneas.
- Web Services define um protocolo de comunicação e
uma interface que pode ser requerida por um cliente
ou fornecida pelo servidor de aplicação
- WSDL (Web Services Description Language) adiciona
uma camada de abstração entre a interface do serviço
com o cliente e sua implementação.
Conceitos principais
- Hoje em dia, a maioria dos serviços integrados à Web
são feitos a partir de um grupo de tecnologias
incluindo:

▪ XML - que fornece uma representação de dados


independente de plataforma;
▪ SOAP - que descreve o protocolo de comunicação e
troca de dados;
▪ WSDL - que descreve o serviço;
▪ UDDI - que fornece uma maneira de encontrar
serviços na Web.
XML
(eXtensible Markup Language)
•Linguagem genérica e padronizada de
marcação.

•É a base principal para o desenvolvimento


dos web services.
XML
XML
Tags ou Elementos
XML
Atributos
XML
Conteúdo
SOAP

Simple Object Access Protocol

• Protocolo padrão de troca de mensagens


estruturado em XML que possibilita a comunicação
entre serviços.

• Define os componentes essenciais e opcionais das


mensagens transmitidas entre os serviços através
do protocolo HTTP.
SOAP
Exemplo de resposta usando SOAP de um servidor de
informações de clima.
WSDL
(Web Services Description Language):
•Modelo e formato XML para descrever web services,
possibilitando a separação entre a funcionalidade
oferecida de sua descrição abstrata.

•A descrição do web service define a sua interface, ou


seja, o conjunto de operações possíveis entre o
provedor e cliente do serviço, bem como as
mensagens que serão trocadas entre eles.
WSDL
UDDI
Universal Description, Discovery, and Integration

• Oferece um mecanismo para que os clientes possam


encontrar um determinado web service.
• Considerado o DNS para os web services, contendo
informações sobre o provedor do serviço, sua localização e
descrições do serviço (WSDL).
• Os repositórios de serviços podem ser públicos ou privados,
sendo que tanto o registro quanto a consulta de serviço são
realizadas por meio de arquivos XML.
UDDI
<import namespace="http://www.getquote.com/StockQuoteService-
interface" location="http://www.getquote.com/wsdl/SQS-interface.wsdl"/>
<service name="StockQuoteService">
<documentation>Stock Quote Service</documentation>
<port name="SingleSymbolServicePort"
binding="interface:SingleSymbolBinding">
<documentation>Single Symbol Stock Quote
Service
</documentation>
<soap:address
location="http://www.getquote.com/stockquoteservice"/>
</port>
PILHA DE PROTOCOLOS
CARACTERÍSTICAS

• Utiliza, principalmente, o protocolo HTTP.

• Utiliza XML ou outros formatos de arquivos, como


JSON, para transferência de dados.

• Integra sistemas diferentes, ou disponibiliza uma série


de serviços de uma aplicação, como o Twitter ou
Google.
CARACTERÍSTICAS

•Popularidade:
• devido à adoção de protocolos e padrões abertos, (HTTP
e XML), soluciona o problema de integrar aplicativos de
sistemas heterogêneos presentes em tecnologias como
CORBA, DCOM e RMI.
•Objetivo:
• oferecer a interoperabilidade entre os sistemas escritos
em diferentes linguagens de programação, desenvolvidos
por fornecedores distintos e em sistemas operacionais
diversos possam se comunicar.
CARACTERÍSTICAS
•Duas entidades:
• consumidores e provedores
•Provedor
• Possui características semelhantes a um servidor que
disponibiliza serviços na rede.
•Consumidores
• Clientes que utilizam os serviços disponibilizados por
provedores de serviços.
• Uma entidade também pode assumir ambos os
papéis ao mesmo tempo, caracterizando a
composição de serviços.
Arquitetura
Para que servem os web services?
- Entrega e a disponibilização de serviços web para o
acesso e o consumo do serviço por um usuário,
facilitando a comunicação entre as aplicações que
residem em múltiplas plataformas (usando diferentes
modelos de objetos e baseados em linguagens
diferentes);
- São Baseados em um conjunto de padrões da internet
definidos pelo W3C. Pois o protocolo HTTP atua como
transporte na comunicação entre o cliente e o Web
Service.
Para que servem os web services?
Aonde são usados?
• Amazon
• Google
• Consulta a Títulos do Tesouro Nacional
• Correios
• Web Service do Sistema de Informações
Organizacionais do Governo Federal (SIORG)
• Etc.
E qual a Diferença entre API e Web Service?

→Web service é uma aplicação enquanto a API facilita a


interface direta com um aplicativo.
→Nem todas as APIs são Web services, porém, todos os Web
Services são APIs.
→Web Services não executam todas as tarefas realizadas ou
não de uma API.
→A API pode utilizar qualquer estilo de comunicação, porém o
serviço Web só executa apenas três estilos de comunicação
que são eles SOAP, REST e XML-RPC.
→A API não precisa de uma rede para seu funcionamento
acontecer, enquanto o Web Server depende disto.
VISÃO GERAL
Web Service- implementação
INSTRUÇÕES NETBEANS
Criação do projeto de um Web Service.

1) Arquivo-> Novo Projeto -> Java Web -> Aplicação Web

2) Escolha o nome WSHelloWorld

3) Em seguida escolha o diretório da aplicação com o Apache


Tomcat 7.0 e escolha a versão JavaEE 6 Web.
WEB SERVICE
Crie o Serviço Web e dê-lhe o nome de HelloWorld.
WEB SERVICE
Serviço Criado
WEB SERVICE
Gerando o WSDL

Escolha a pasta web para que


os usuários possam acessar
O WSDL da aplicação.
WEB SERVICE
Para Testar o provedor de serviço web Hello World basta implantá-
lo pelo Apache Tomcat e logo em seguida acessar a seguinte URL
no navegador web:
http://localhost:8080/WSHelloWorld/HelloWorld?wsdl
CLIENTE DO SERVIÇO
HELLO WORLD
Crie um novo projeto
web com o nome de
WSHWorldCliente e
um novo cliente para
serviço web.
INSTRUÇÕES NETBEANS

Preencha a URL do arquivo WSDL com:


http://localhost:8080/WSHelloWorld/HelloWorld?wsdl
- INSTRUÇÕES NETBEANS
O código página JSP do Cliente Hello World utilizando JAX-WS,
consumidor do SOAP-WSDL
Referências Bibliográficas
● Andrew S. Tanenbaum; Maarten van Steen - Distributed Systems:
Principles and Paradigms, Prentice-Hall, 2007, ISBN-10: 0132392275,
ISBN-13: 9780132392273
… Lectures dos autores Andrew S. Tanenbaum e Maarteen van Steen
(“www.cs.vu.nl” e “www.distributed-systems.net/”)
● George Coulouris; Jean Dollimore; Tim Kindberg – Sistemas
Distribuídos: Conceitos e Projeto, Bookman, 4th Edition, 2007, ISBN
9788560031498
● Notas de Aula do Prof. Ricardo Anido (UNICAMP)
www.ic.unicamp.br/~ranido/
● Notas de Aula do Prof. Geanderson Esteves (Instituto de Ciências Exatas
e Informática): https://homepages.dcc.ufmg.br/~geanderson/aulas/dad/
● Notas de Aula do Prof. Daniel Ratton Figueiredo (UFRJ):
https://www.cos.ufrj.br/~daniel/sd/
REFERÊNCIAS
• Oliveira, Ricardo Ramos. Curso das Tecnologias de Web
Services. Disponível em:
http://garapa.intermidia.icmc.usp.br/mediawiki/images/6/
63/WebServices.pdf.

• Netbeans.org. Introdução aos Web services JAX-WS.


Disponível em:
https://netbeans.org/kb/docs/websvc/jax-
ws_pt_BR.html.

Você também pode gostar