Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Transcript of Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.
Fundamentos
Nazareno AndradeUniversidade Federal de Campina Grande
02/2008
Sistemas Distribuídos
2
FundamentosCoordenando processosConstruíndo sistemasSistemas construídos
3
Fundamentos– O que são sistemas distribuídos– Para que distribuímos sistemas– Referências de sistemas distribuídos– Vocabulário sobre sistemas distribuídos– Arquiteturas de sistemas distribuídos– Modelos de sistemas distribuídos
Coordenando processosConstruíndo sistemasSistemas construídos
4
Objetivos
Idéia clara do que são sistemas distribuídos– Propósito– Vantagens & desvantagens
Repertório de sistemasVisão de questões de projeto
5
Que sistemas distribuídos nós usamos?
6
O que é um sistema distribuído?
7
Em comum:
Componentes independentesCanais de comunicaçãoImagem única
Hardware independente + software unificando
8
“Conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente” -Tanenbaum
“Sistema em que componentes de hardware e software localizados em diferentes computadores interconectados se comunicam e coordenam suas ações trocando mensagens” – CDK
“Sistema onde você não consegue trabalhar por causa de uma falha em um computador que você nunca viu” – Lamport
9
Por que sistemas distribuídos?Compartilhamento
– Documentos, impressoras, telescópios, ...
Escalabilidade– Mais carga → Mais recursos
Custo x benefício– Um PC: dinheiro em dobro ≠ desempenho em dobro
Robustez– Redundância
Limitações da Física– Corpos se movem– Corpos não se movem rápido o suficiente
10
E nós, projetistas?
ConcorrênciaCanais de comunicaçãoFalhas parciaisDescoberta de recursosCoordenação
11
Fundamentos– O que são sistemas distribuídos– Para que distribuímos sistemas– Referências de sistemas distribuídos– Vocabulário sobre sistemas distribuídos– Arquiteturas de sistemas distribuídos– Modelos de sistemas distribuídos
Coordenando processosConstruíndo sistemasSistemas construídos
12
Sistemas de arquivos distribuídos: NFS
Compartilhar arquivos, compartilhar um servidor
13
Web
Compartilhamento de documentos (ao menos inicialmente)Navegadores e servidoresHTTP
http://www.google.com
http://lsd.ufcg.edu.br/~nazareno/xpto.html
LSD
nazareno
xpto.html
14
Sistemas N-camadas
Amazon, Google e quase todo e-commerce que você vir poraí...Tecnologia popular: LAMP - Linux, Apache, MySQL,
Perl/PHP/Python
ApresentaçãoLógica
Banco de dados
15
Computação paralela: clusters
Alta performance, computação paralelaProcessamento numérico, processamento de dados, ...
Tecnologias: PBS, Bewuolf, MapReduce, Hadoop
16
Computação paralela: grids/grades
Alto desempenho, plataforma mais ampla, compartilhamentoTecnologias: Globus, Condor, OurGrid
Domínios administrativos
17
Computação entre-pares, peer-to-peer
Compartilhamento, “bordas” da redeGnutella, Kazaa, BitTorrent, Skype, MSN, ...
18
Computação pervasiva / ubíqua
Computadores estão em todo lugar, e conectados
Celulares, carros, marcapassos, ...
19
Imagem única transparência
20
Fornecendo uma imagem única
Transparência O que é
Acesso Escondemos se recursos são remotos
Localização Escondemos onde eles estão
Migração Escondemos se eles mudam de máquina
Relocação Escondemos se eles se movem
Replicação Escondemos redundância
Concorrência Escondemos compartilhamento
Falha Escondemos falhas
21
Embora isso não seja tão simples
Heterogeneidade– Plataforma, clientes, conexões
Sistemas abertos– Diversas implementações de clientes
Segurança– Nos componentes, nas comunicações, DoS
Escalabilidade – Evitar gargalos
Tolerância a Falhas– Componentes devem lidar com falhas dos demais
Concorrência– Concorrência é a norma
22
Alguns princípios de projeto de SD
23
TransparênciaTransparência para programa, usuário ou programador?
Envolve ao menos:Nomes lógicos
– http://www.google.com– Réplicas têm mesmo nome lógico
Exclusão mútua distribuída– Lembram de SO?Eficiência na comunicação
Transparência é um contínuo, e não binário
Transparência limitada pode ser necessária ou útil– A Física impõe limites– O usuário pode entender melhor o que está acontecendo
24
Desempenho
Medido através de métricas:– Vazão (throughput)– Tempo de resposta (response time, makespan)– Latência– Utilização dos recursos(nem sempre são independentes...)
O custo da comunicação em geral é importante
25
Desempenho e comunicação
Em geral, queremos minimizar comunicação– Overhead de comunicação >> outros overheads
• Canais são recurso mais escasso no sistema– Comunicação == tamanho e freqüência de mensagens
Granulosidade do paralelismo (parallelism granularity)– Fine granularity – grãos pequenos comunicação freqüente– Coarse granularity – grãos grandes comunicação
infreqüente
26
Escalabilidade
Existem SDs em 2, 10 e 10^6 computadores– Google, Amazon EC2, Skype, ...
Métodos para construir sistemas pequenos podem não valer para outras escalas
Escalabilidade == É possível alterar a escala do sistema– Quantidade de usuários ou recursos (custo x benefício)– Escala geográfica– Manter o sistema gerenciável a medida que cresce
Em geral depende de não haver gargalos descentralização
27
Escalabilidade: por que não é simples
Escalabilidade Descentralização Descentralização Complexidade
Princípios de algoritmos descentralizados escaláveis:– Nenhum componente tem informação sobre todo o
sistema– Componentes tomam decisões baseadas em informações
locais– Falhas parciais não inviabilizam resultado– Não há um relógio global único
• Há aproximações bem imperfeitas, como o NTP
28
Mais sobre escalabilidade e o mundo real
Duas lições recentes
1. Quando a escala é grande o suficiente, qualquer coisa acontece
– Mensagens de controle corrompidas na Amazon e no PlanetLab
2. Ações coordenadas de componentes podem ser catastróficas
– Problema do Skype em 2008
29
HeterogeneidadeHardware independente Configurações independentes
Como sempre: níveis de indireçãoNeste caso, middleware
30
Confiabilidade
Confiabilidade = disponibilidade + integridade + segurança
Um sistema distribuído pode ser mais confiável que um monolítico– Tolerância a falhas parciais
Um sistema distribuído não é necessariamente mais confiável– Falhas independentes?– Segurança agora de diversos pontos– Integridade mais complexa
Como resolver tudo isso? Neste curso!
31
Recapitulando
TransparênciaDesempenhoEscalabilidadeHeterogeneidadeConfiabilidade
Vamos usar bastante isso durante o curso...
32
Ciladas em projetos de SD
33
Não assuma que
A rede é confiávelA rede é segura A rede é homogêneaA topologia da rede não mudaA latência é zeroA largura de banda é infinitaO overhead de transporte é zeroHá um só administrador
34
Fim da introdução
35
Recapitulando...
• O que são sistemas distribuídos• Por que distribuir um sistema• Visão geral dos tipos de sistemas distribuídos• Objetivos comuns no projeto de sistemas distribuídos• Desafios particulares nesse projeto• O que não assumir
Em resumo: o que sistemas distribuídos têm de particular
36
Mais sobre esse assunto
End-to-end arguments in computer design– Onde devem ficar as funcionalidades?
A note on distributed computing – Quão transparente deve ser a distribuição para o
programador?
37
Cenas do próximo capítulo
Quais as formas de dividir responsabilidades em um SD? Qual o espaço de projeto?– Centralizado, descentralizado, peer-to-peer, híbridos...
Como estudamos um sistema distribuído analiticamente?– Modelos, dimensões úteis de SDs, resultados...