Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

37
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.

Page 1: 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

Page 2: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

2

FundamentosCoordenando processosConstruíndo sistemasSistemas construídos

Page 3: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuí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

Page 4: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuí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

Page 5: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

5

Que sistemas distribuídos nós usamos?

Page 6: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

6

O que é um sistema distribuído?

Page 7: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

7

Em comum:

Componentes independentesCanais de comunicaçãoImagem única

Hardware independente + software unificando

Page 8: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 9: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 10: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

10

E nós, projetistas?

ConcorrênciaCanais de comunicaçãoFalhas parciaisDescoberta de recursosCoordenação

Page 11: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 12: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

12

Sistemas de arquivos distribuídos: NFS

Compartilhar arquivos, compartilhar um servidor

Page 13: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

13

Web

Compartilhamento de documentos (ao menos inicialmente)Navegadores e servidoresHTTP

http://www.google.com

http://lsd.ufcg.edu.br/~nazareno/xpto.html

Google

LSD

nazareno

xpto.html

Page 14: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 15: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

15

Computação paralela: clusters

Alta performance, computação paralelaProcessamento numérico, processamento de dados, ...

Tecnologias: PBS, Bewuolf, MapReduce, Hadoop

Page 16: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

16

Computação paralela: grids/grades

Alto desempenho, plataforma mais ampla, compartilhamentoTecnologias: Globus, Condor, OurGrid

Domínios administrativos

Page 17: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

17

Computação entre-pares, peer-to-peer

Compartilhamento, “bordas” da redeGnutella, Kazaa, BitTorrent, Skype, MSN, ...

Page 18: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

18

Computação pervasiva / ubíqua

Computadores estão em todo lugar, e conectados

Celulares, carros, marcapassos, ...

Page 19: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

19

Imagem única transparência

Page 20: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 21: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 22: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

22

Alguns princípios de projeto de SD

Page 23: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 24: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 25: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 26: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 27: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 28: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 29: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

29

HeterogeneidadeHardware independente Configurações independentes

Como sempre: níveis de indireçãoNeste caso, middleware

Page 30: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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!

Page 31: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

31

Recapitulando

TransparênciaDesempenhoEscalabilidadeHeterogeneidadeConfiabilidade

Vamos usar bastante isso durante o curso...

Page 32: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

32

Ciladas em projetos de SD

Page 33: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 34: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

34

Fim da introdução

Page 35: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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

Page 36: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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?

Page 37: Fundamentos Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

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...