Page 1
2013-2 Programação de Sistemas Distribuídos e Concorrência
Programação de Sistemas
Distribuídos e Concorrência
Aula 2
Prof: Carlos Eduardo de Carvalho Dantas
([email protected] )
http://carloseduardoxp.wordpress.com
““O medo é o pai da moralidade” – Friedrich Wilhelm Nietzsche
Page 2
2013-2 Programação de Sistemas Distribuídos e Concorrência
Conceito
Sistema distribuído – conjunto de computadores
independentes que se apresenta a seus usuários
como um sistema único e coerente;
Com o desenvolvimento de microprocessadores de
grande capacidade e invenção de redes de
computadores em alta velocidade, foi possível o
desenvolvimento dos sistemas distribuídos
Page 3
2013-2 Programação de Sistemas Distribuídos e Concorrência
Conceito
Sistema distribuído consiste em componentes
(computadores) autônomos;
Usuários (pessoas ou programas) pensam que estão
lidando com um único sistema;
Componentes autônomos precisam colaborar;
A forma como os computadores se comunicam
devem ser ocultas aos usuários;
Usuários devem interagir de forma consistente e
uniforme, independente do local;
Deveria ser fácil expandir e aumentar a escala;
Usuários e aplicações não devem enxergar partes
avariadas de sistemas distribuídos
Page 4
2013-2 Programação de Sistemas Distribuídos e Concorrência
Conceito
Sistema distribuído como um middleware
Page 5
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas
Metas a serem seguidas na construção de um
sistema distribuído para que valha a pena o esforço
Page 6
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas – acesso a recursos
Facilitar aos usuários e às aplicações o acesso aos
recursos remotos e seu compartilhamento;
Conectar usuários e recursos;
Groupware – Software para edição colaborativa,
teleconferência,etc.;
Senhas e mensagens precisam estar criptografadas;
Https ao invés de Http
Page 7
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas – Transparência
Page 8
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Tamanho – facilidade para adicionar usuários e
recursos no sistema;
Termos geográficos – usuários e recursos podem
estar longe uns dos outros;
Termos administrativos – pode ser fácil de gerenciar,
mesmo que abranja muitas organizações
administrativas diferentes.
Page 9
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Vertical - ”escalar para cima”, ou seja, comprar
recursos computacionais como memória, cpu, disco,
e refatorar códigos para deixá-los mais
performáticos;
Horizontal - ”escalar para os lados”, ou seja, distribuir
os serviços, replicando-os ou quebrando-o em
pequenas partes em diferentes lugares.
Page 10
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Page 11
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Ocultar latências → comunicação assíncrona sempre
que possível e evitar desperdício de requisições no
servidor
Page 12
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Distribuição → Tornar um componente em partes
menores, como o DNS
Page 13
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Cache → manter cópias de dados na memória para
evitar acessos a dispositivos/redes que geram
latência.
Page 14
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Abertura
IDL – Interface Definition Languange
Page 15
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Ciladas
Premissas falsas que todos adotam ao desenvolver
um Sistema Distribuído pela primeira vez
Page 16
2013-2 Programação de Sistemas Distribuídos e Concorrência
Exercícios
Page 17
2013-2 Programação de Sistemas Distribuídos e Concorrência
Exercícios
Page 18
2013-2 Programação de Sistemas Distribuídos e Concorrência
Referências Bibliográficase
[1] Sistemas distribuídos – princípios e paradigmas.
Cap 1