Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRodrigo Crespo Alterado mais de 9 anos atrás
1
Nazareno Andrade Universidade Federal de Campina Grande 02/2008
Sistemas Distribuídos Fundamentos 4,45 Nazareno Andrade Universidade Federal de Campina Grande 02/2008
2
Coordenando processos Construíndo sistemas Sistemas construídos
Fundamentos Coordenando processos Construíndo sistemas Sistemas construídos 9-25
3
Coordenando processos Construíndo sistemas Sistemas construídos
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 processos Construíndo sistemas Sistemas construídos 9-25
4
Objetivos Idéia clara do que são sistemas distribuídos
Propósito Vantagens & desvantagens Repertório de sistemas Visão de questões de projeto
5
Que sistemas distribuídos nós usamos?
Quem já é experiente no assunto? Quais seriam exemplos de sistemas distribuídos em 2, em 10, em mil máquinas?
6
O que é um sistema distribuído?
Quem já é experiente no assunto? Quais seriam exemplos de sistemas distribuídos em 2, em 10, em mil máquinas?
7
Em comum: Componentes independentes Canais de comunicação Imagem ú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ência Canais de comunicação Falhas parciais
Descoberta de recursos Coordenação
11
Coordenando processos Construíndo sistemas Sistemas construídos
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 processos Construíndo sistemas Sistemas construídos 9-25
12
Sistemas de arquivos distribuídos: NFS
Compartilhar arquivos, compartilhar um servidor
13
Web Compartilhamento de documentos (ao menos inicialmente)
Google LSD nazareno xpto.html Compartilhamento de documentos (ao menos inicialmente) Navegadores e servidores HTTP
14
Sistemas N-camadas Apresentação Banco de dados Lógica Amazon, Google e quase todo e-commerce que você vir poraí... Tecnologia popular: LAMP - Linux, Apache, MySQL, Perl/PHP/Python
15
Computação paralela: clusters
Alta performance, computação paralela Processamento numérico, processamento de dados, ... Tecnologias: PBS, Bewuolf, MapReduce, Hadoop
16
Computação paralela: grids/grades
Domínios administrativos Alto desempenho, plataforma mais ampla, compartilhamento Tecnologias: Globus, Condor, OurGrid
17
Computação entre-pares, peer-to-peer
Compartilhamento, “bordas” da rede Gnutella, 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 Figuras
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ência Transparência para programa, usuário ou programador?
Envolve ao menos: Nomes lógicos 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
Heterogeneidade Hardware independente Configurações independentes
Como sempre: níveis de indireção Neste 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ência Desempenho Escalabilidade Heterogeneidade
Confiabilidade Vamos usar bastante isso durante o curso...
32
Ciladas em projetos de SD
33
Não assuma que A rede é confiável A rede é segura A rede é homogênea
A topologia da rede não muda A latência é zero A largura de banda é infinita O overhead de transporte é zero Há 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? Colocar mais aqui!
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...
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.