sistemas distribuídos - instituto de computação - uffsimone/sd/contaulas/aula1.pdf · em um sd...
TRANSCRIPT
SISTEMAS DISTRIBUÍDOSCARACTERÍSTICAS
Slides cedidos pela Professora Aline Nascimento
INTRODUÇÃO
As melhorias que ocorreram na tecnologia de computadores nos últimos 50 anos é muito grande, sem precedentes em outros setores
Rapidamente passamos de máquinas que custavam 100 milhões de dólares e executavam 1 instrução por segundo, para máquinas que custam 1000 dólares e são capazes de executar 10 milhões de instruções por segundo
Hoje em dia o computador mais rápido do mundo é o Tianhe-2. Sua capacidade foi medida em 33.86 petaflop/s
Comparando com o avanço na área automobilística, um RollsRoyce deveria custar 1 dólar!
INTRODUÇÃO
Dois importantes avanços na tecnologia de computadores
surgiram na década de 80
Desenvolvimento de microprocessadores poderosos
Invenção de redes de interconexão de alta velocidade
Assim, foi possível montar sistemas de computadores
compostos por grandes quantidades de componentes
conectados por uma rede de alta velocidade.
DEFINIÇÃO
Um sistema distribuído é uma coleção de computadores independentes que é visto pelo
usuário como um sistema único
Cada computador funciona independentemente de fazer parte ou
não do SD conjunto de componentes autônomos
O usuário não tem ciência que há diversos computadores, nem
onde estes estão localizados ideia de sistema único
Os componentes autônomos do sistema precisam colaborar
COMPUTAÇÃO DISTRIBUÍDA
A computação distribuída envolve o projeto, implementação
e avaliação de algoritmos que executam em processadores
distintos, interconectados por meio de canais de
comunicação
Cenários de SDs: telecomunicações, serviços Web,
computação científica, controle de processos de tempo real,
“cidades inteligentes", etc.
PRINCIPAIS CARACTERÍSTICAS
A diferença entre os componentes e o modo como estes se
conectam estão em grande parte ocultas ao usuário
Os usuários e programas podem interagir com o SD de
maneira uniforme e consistente independentemente de onde
a interação ocorra
Desde poderosos computadores até nós de sensores podem
compor um SD
Os sistemas distribuídos devem ser fáceis de expandir e
escalar
PRINCIPAIS CARACTERÍSTICAS
Usuários não devem notar quando partes do sistema estão
sendo trocadas, adicionadas ou reparadas
A ideia é que o SD esteja continuamente disponível, ainda que
algumas de suas partes estejam desligadas.
Para suportar componentes e interconexões heterogêneas e
fornecer a visão de um sistema único, os SDs costumam ser
organizados por meio de uma camada de software chamada
de middleware
SISTEMA DISTRIBUÍDO
Uma camada de SW é logicamente colocada entre o
usuário/aplicação e o sistema operacional → Middleware
EXEMPLOS
Sistema que suporta um processamento automático de pedidos
Os usuários do departamento de vendas podem estar distribuídos por todo país
Pedidos são feitos de notebooks ou celulares conectados através da rede
Os pedidos chegam, são processados e enviados automaticamente para algum setor disponível
Usuários não sabem por onde os pedidos navegam pelo sistema
Para os usuários, o sistema parece que opera com um único banco de dados centralizado
EXEMPLOS
Internet
A internet oferece um modelo uniforme e consistente de documentos distribuídos
Para ver um documento, o usuário necessita apenas ativar a referência
Não há necessidade de saber de qual servidor vem o documento
Publicar um documento é simples, basta que ele tenha um nome único
Neste caso, a Internet pode ser vista pelo usuário como um enorme sistema centralizado de documentos
OBJETIVOS
Conectar usuários e recursos
Transparência
Abertura
Escalabilidade
Um SD deve oferecer fácil acesso aos recursos; deve ocultar razoavelmente bem o fato que os recursos são distribuídos; deve ser aberto e deve poder ser expandido.
OBJETIVOS
Conectar usuários e recursos
Permitir que recursos remotos sejam facilmente acessados e compartilhados com outros usuários de maneira controlada
Impressoras, computadores, dados, arquivos, redes, páginas web, etc
Uma razão óbvia para o compartilhamento de recursos é a economia
Conectar usuários torna mais fácil a colaboração e troca de informações entre eles
A medida que o compartilhamento e a conectividade aumenta a segurança se torna mais importante
OBJETIVOS
Alguns problemas de segurança:
Compra com cartão de crédito não se comprova que o
comprador é mesmo o dono do cartão, basta conhecer os
números
Rastreamento de comunicações para montar um perfil de
preferências de um usuário violação explícita de privacidade
Malas direta sem permissão
OBJETIVOS
Transparência
Uma meta importante de um SD é esconder de usuários e aplicações que os recursos estão fisicamente distribuídos através de várias plataformas
Um SD que é capaz de se apresentar como um único sistema de computador é denominado transparente
Existem diferentes tipos de transparência em Sistemas Distribuídos
Porém, uma questão mais importante é definir se a transparência é sempre requerida. Isto é, se sempre vale a pena “pagar” por esta característica.
OBJETIVOS
Transparência Descrição
Acesso Oculta diferenças na representação de dados e no modo de acesso a um recurso
Localização Oculta o lugar onde o recurso está localizado
Migração Oculta que um recurso pode ser movido para outra localização
Realocação Oculta que um recurso pode ser movido para outra localização enquanto ele está sendo usado
Replicação Oculta que um recurso é replicado
Concorrência Oculta que um recurso pode ser compartilhado por diversos usuários
Falhas Oculta a falha e a recuperação de um recurso
TRANSPARÊNCIA DE ACESSO
Um SD pode ter sistemas de computação que executam
diferentes sistemas operacionais e possuem máquinas com
diferentes tipos de arquiteturas
Deve existir um acordo sobre como os dados devem ser
representados por máquinas e SOs diferentes
Por exemplo, cada sistema operacional pode possuir suas
próprias convenções para nomeação de arquivos
Diferenças entre nomeação e o modo como os arquivos devem
ser manipulados devem ser ocultos aos usuários
TRANSPARÊNCIA DE LOCALIZAÇÃO
A nomeação em sistemas distribuídos desempenha papel
importante para se conseguir transparência de localização.
Assim, pode-se atribuir nomes lógicos aos recursos.
Os nomes lógicos não indicam a localização de um recurso
Exemplo: www.prenhall.com/index.html
A URL não dá nenhuma pista sobre a localização do servidor
WEB da Prentice Hall
TRANSPARÊNCIA DE MIGRAÇÃO
Acontece quando um recurso é migrado em tempo de
execução e o usuário não percebe esta mudança.
Exemplo: Uso móvel de Laptop, cujos usuários podem
continuar a usá-lo quando vão de um lugar para outro, sem
nem ao menos se desconectarem temporariamente.
TRANSPARÊNCIA DE REALOCAÇÃO
Esta transparência ocorre, quando os recursos podem ser
movimentados sem afetar o modo como eles podem ser
acessados.
Exemplo: www.prenhall.com/index.html
Não é possível determinar se o recurso index.html sempre
esteve na mesma localização ou se foi movido recentemente.
TRANSPARÊNCIA DE REPLICAÇÃO
A replicação é importante para aumentar a disponibilidade
ou aumentar o desempenho do sistema.
Para ocultar a replicação, é necessário que todas as réplicas
tenham o mesmo nome
Normalmente um SD que oferece transparência de
replicação também oferece transparência de localização,
pois caso contrário seria impossível se referir às réplicas em
diferentes localizações.
TRANSPARÊNCIA DE CONCORRÊNCIA
Uma das metas de um SD é fornecer compartilhamento de
recursos
Na transparência de concorrência deve se considerar que o
acesso concorrente a um recurso deve deixá-lo em estado
consistente
Para isso, deve se usar mecanismos que dão a cada
usuário, um por vez, acesso exclusivo ao recurso desejado
TRANSPARÊNCIA DE FALHA
O usuário não deve perceber que um recurso deixou de
funcionar bem, ou que o sistema está se recuperando de
uma falha.
É difícil de se implementar
O sistema é incapaz de distinguir entre um recurso morto ou
insuportavelmente lento
GRAU DE TRANSPARÊNCIA
Um sistema distribuído totalmente transparente é desejável?
A transparência total é uma boa meta de projeto, mas deve
ser considerada com outras questões como:
Desempenho do sistema
Facilidade de compreensão
Quando o usuário conhece as limitações do sistema,
decorrentes do mesmo ser distribuído, ele possuirá maior
compreensão para entender o comportamento inesperado
de um SD
EXEMPLOS
Situações em que tentar ocultar completamente os aspectos
da distribuição para os usuário não é uma boa ideia.
Em um SD de longa distância que conecta processos em São
Francisco a Amsterdã, por exemplo, não é possível enviar
mensagens em menos de 35 ms.
Dependendo da rede pode demorar centenas de milissegundos.
Além de considerar a velocidade de transmissão que é limitada
pela velocidade da luz, existe a capacidade de processamento
dos componentes intermediários.
EXEMPLOS
Situações em que tentar ocultar completamente os aspectos
da distribuição para os usuário não é uma boa ideia.
Garantir que várias réplicas intercontinentais sejam consistentes
o tempo todo.
Uma única operação de atualização pode demorar alguns
segundos
Algo que não pode ser escondido do usuário
EXEMPLOS
Situações em que tentar ocultar completamente os aspectos
da distribuição para os usuário não é uma boa ideia.
Crescimento do uso de dispositivos móveis tornam a noção de
localização e contexto cada vez mais importante.
Pra uma secretária é melhor enviar o trabalho para a impressora
ocupada mais próxima, ou desocupada em um país diferente?
OBJETIVOS
Abertura
Sistemas abertos se caracterizam pelo fato de terem suas interfaces especificadas e publicadas
Um sistema aberto oferece serviços de acordo com regras padronizadas que descrevem a sintaxe e semântica destes serviços
Em redes de computadores as regras são formalizadas através de protocolos
OBJETIVOS
Abertura
Os serviços são especificados por meio de interfaces
Uso da IDL (Interface Definition Language)
Sintaxe especifica com precisão os nomes das funções
que estão disponíveis, tipos dos parâmetros, valores de
retorno, e possíveis exceções que podem surgir.
Semântica feita normalmente em linguagem natural.
OBJETIVOS
Abertura
Especificações devem ser completas e neutras.
Completa indica que tudo que é necessário para uma
implementação, foi especificado.
Neutras refere-se ao fato de que as especificações não
indicam como deve ser a aparência da implementação.
Completude e neutralidade são importantes para
interoperabilidade e portabilidade
OBJETIVOS
Interoperabilidade: até que ponto 2 implementações de
fornecedores diferentes podem coexistir e trabalhar em
conjunto com base na mera confiança mútua.
Portabilidade: até que ponto uma aplicação
desenvolvida para o SD A, pode ser executada sem
modificações em um SD B, que implementa as mesmas
interfaces de A.
OBJETIVOS
Para conseguir flexibilidade em um sistema distribuído
aberto, é importante que ele seja organizado como um
conjunto de componentes relativamente pequenos e de fácil
substituição ou adaptação
Devem ser definidas não somente interfaces de nível mais
alto, mas também definições de interface das partes internas
do sistema e como elas interagem
OBJETIVOS
Escalabilidade
Capacidade de aumentar e manter o desempenho satisfatório
Pode ser medida através de 3 dimensões:
Tamanho: adicionar mais usuários ou recursos
Geografia: usuários e recursos podem estar separados por grandes
distâncias
Administração: fácil de gerenciar mesmo que tenha várias
organizações administrativas diferentes
PROBLEMAS DE ESCALABILIDADE - TAMANHO
Serviços, dados ou algoritmos centralizados podem ser um
gargalo quando o número de usuários aumenta
PROBLEMAS DE ESCALABILIDADE - TAMANHO
O servidor normalmente se transforma no gargalo à medida
que o número de usuários e aplicações cresce.
Mesmo que tenhamos capacidade de armazenamento e
processamento ilimitados a comunicação com o servidor
acaba impedindo o crescimento.
As vezes é inevitável oferecer um serviço centralizado:
Considere um sistema com informações médicas confidenciais ou de contas de banco.
Por questões de segurança é mais fácil gerenciar o serviço em um único servidor.
PROBLEMAS DE ESCALABILIDADE - TAMANHO
Algoritmos Centralizados sobrecarregam o sistema além de
criarem um único ponto de falha.
Devem ser usados algoritmos descentralizados
Nenhuma máquina tem informações completas sobre o estado do sistema.
As máquinas tomam decisões tendo como base somente informações locais.
A falha de uma máquina não arruína o algoritmo.
Não há nenhuma premissa implícita quanto à existência de um relógio global
PROBLEMAS DE ESCALABILIDADE - GEOGRÁFICA
Impossível prover comunicação síncrona para grandes
distâncias.
Comunicação em redes de longa distância não é confiável e
quase sempre é ponto a ponto.
Soluções centralizadas atrapalham a escalabilidade de
tamanho.
Imagine um único servidor de correios utilizado em um país inteiro.
Ao enviar um email ao seu vizinho, ele primeiro viajaria até o servidor central com certeza não é o melhor caminho
PROBLEMAS DE ESCALABILIDADE - ADMINISTRATIVA
Um problema importante é resolver políticas conflitantes em
relação a utilização/pagamento de recursos, gerenciamento
e segurança
Quando um SD se expande pra um outro domínio, é preciso
tomar medidas de segurança:
O SD tem que se proteger contra ataques maliciosos do novo
domínio e vice-versa
O problema é como impor as limitações de segurança
TÉCNICAS DE ESCALABILIDADE
Como tentar resolver os problemas de escalabilidade de
maneira geral?
Os problemas de escalabilidade normalmente aparecem
como problemas de desempenho causados por capacidade
limitada de servidores e rede
Existem basicamente três técnicas para ampliar sistemas:
Ocultar latências de comunicação
Distribuição
Replicação
TÉCNICAS DE ESCALABILIDADE
Uma maneira importante de lidar com a escalabilidade
geográfica é ocultar latências de comunicação.
Tipicamente SD baseados em redes locais utilizam
comunicação síncrona Em um sistema de larga escala e
longas distâncias isto seria impraticável
A ideia é simples: utilizar comunicação assíncrona e tentar
evitar esperar por respostas a requisições remotas.
TÉCNICAS DE ESCALABILIDADE
Ocultar latência de Comunicação
TÉCNICAS DE ESCALABILIDADE
Distribuição: envolve subdividir um componente em partes
menores, e espalhar esses componentes pelo sistema.
TÉCNICAS DE ESCALABILIDADE
Replicação
Replicar componentes em um SD aumenta a disponibilidade e
ajuda a equilibrar a carga entre os componentes
aumentando o desempenho
Por exemplo, em um SD de longa distância, uma cópia por
perto pode diminuir bastante os problemas de latência
Replicação e Utilização de cache geram um outro problema: a
consistência dos dados
PRINCIPAIS CILADAS
Premissas falsas adotadas ao desenvolver uma aplicação
distribuída pela primeira vez
1. A rede é confiável
2. A rede é segura
3. A rede é homogênea
4. A topologia não muda
5. A latência é zero
6. A largura da banda é infinita
7. O custo de transporte é zero
8. Há apenas um administrador