Aula 2 - carloseduardoxp.files.wordpress.com · 2013-2 Programação de Sistemas Distribuídos e...
Transcript of Aula 2 - carloseduardoxp.files.wordpress.com · 2013-2 Programação de Sistemas Distribuídos e...
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
http://carloseduardoxp.wordpress.com
““O medo é o pai da moralidade” – Friedrich Wilhelm Nietzsche
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
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
2013-2 Programação de Sistemas Distribuídos e Concorrência
Conceito
Sistema distribuído como um middleware
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
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
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.
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.
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
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Escalabilidade
Distribuição → Tornar um componente em partes
menores, como o DNS
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.
2013-2 Programação de Sistemas Distribuídos e Concorrência
Metas - Abertura
IDL – Interface Definition Languange
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