O documento discute conceitos fundamentais de sistemas distribuídos, incluindo a definição de sistemas distribuídos como um conjunto de computadores independentes que aparecem para os usuários como um único sistema coerente. Também aborda desafios como heterogeneidade, segurança, escalabilidade e tratamento de falhas em sistemas distribuídos. Exemplos de sistemas distribuídos incluem a internet, sistemas de busca na web e computação em nuvem.
2. Bibliografia
Distributed Systems: Concepts and Design (5th
Edition) by: George Coulouris, Jean Dollimore, Tim
Kindberg, Gordon Blair
Sistemas Distribuídos – Desenvolvendo aplicações
de alta performance no Linux
Uirá Ribeiro
3. Definição
“ Um sistema distribuído é um conjunto de
computadores independentes entre si que
se apresenta a seus usuários como um
sistema único e coerente” – Tanenbaum
/Van Steen
Hardware: máquinas autônomas
Software: os usuários pensam do sistema
como um único computador
4. Definição
“ Coleção de computadores autônomos
interconectados por uma rede, com software
projetado para produzir uma aplicação integrada”
Sistemas compostos por hardware e software
localizados em lugares físicos distintos que se
comunicam através de mensagens enviadas via
uma rede de computadores. (Coulouris et al)
5. Sistemas distribuídos
Concorrência:
Execução concorrente de programas é a norma, compartilhando
recursos como páginas Web ou arquivos como necessário.
Processos executam em paralelo (concorrência não é paralelismo)
Não existe relógio global
Coordenação por mensagens
Falhas independentes
Tratamento de exceções, design pensando em falhas
6. Por que ter sistemas distribuídos?
A principal motivação para construir e usar
sistemas distribuídos é proveniente do desejo
de compartilhar recursos (hardware e
software).
7. Exemplos de Sistemas Distribuídos
Finance and commerce eCommerce e.g. Amazon and eBay, PayPal, online
banking and trading
The information society Web information and search engines, ebooks, Wikipedia; social
networking: Facebook and MySpace.
Creative industries and entertainment online gaming, music and film in the home, user-
generated content, e.g. YouTube, Flickr
Healthcare health informatics, on online patient records, monitoring
patients
Education e-learning, virtual learning environments; distance
learning
Transport and logistics GPS in route finding systems, map services: Google Maps,
Google Earth
Science The Grid as an enabling technology for collaboration
between scientists
Environmental management sensor technology to monitor earthquakes, floods or
tsunamis
8. Sistemas distribuídos
Pesquisa na WEB.
10 bilhões por mês;
A tarefa de um mecanismo de pesquisa na
web é de indexar todo o conteúdo da WWW,
abrangendo uma grande variedade de
estilos de informação, incluindo páginas
Web, fontes multimídia e livros.
Exemplo do Google:
Infraestrutura física espalhada ao redor
do mundo
Sistemas de arquivos distribuídos
Um sistema associado de
armazenamento de arquivos
Um modelo de programação
9. Tendências em Sistemas Distribuídos
O surgimento da tecnologia Pervasiva ( estar em todo
lugar, porém, sem ser percebido.)
O surgimento da computação ubíqua, combinado ao
desejo de suportar mobilidade do usuário em sistemas
distribuídos.
A crescente demanda por serviços de multimídia.
A visão dos sistemas distribuídos como um serviço público.
10. Sistemas Distribuídos
Vantagens
Economia: melhor relação custo/desempenho
Eficiência: maior poder total de computação
Distribuição inerente: máquinas espacialmente
separadas
Confiabilidade: se uma máquina falha, o sistema como
como um todo pode ainda sobreviver
Crescimento incremental: poder computacional
adicionado em incrementos
14. Computação móvel e ubíqua
a computação ubíqua é a utilização de vários equipamentos
computacionais de pequeno porte e baratos em residências
ou escritórios.
Já o termo “ubíquo” nos dá a noção de que o acesso aos
serviços está sempre presente, podendo ser acessado em
qualquer lugar (SBA, 2006).
Também se denomina “computação pervasiva”.
Dispositivos incorporados em aparelhos, como máquinas de
lavar, aparelhos de som de alta fidelidade, carros, geladeiras e
etc.
15. Middleware
Campo da computação distribuída, é um
programa de computador que faz a mediação
entre software e demais aplicações.
É utilizado para mover ou transportar
informações e dados entre programas de
diferentes protocolos de comunicação,
plataformas e dependências do sistema
operacional.
Camada de software que fornece uma abstração
de programação
16. WebCasting
O “webcasting” ou “web
streaming” consiste na
transmissão de sinal de audio e
vídeo através da internet, para
qualquer dispositivo que lhe
tenha acesso.
O webcasting consiste na
transmissão de sinal de vídeo
através da internet.
17. Computação Distribuída como um
serviço público
Recursos Físicos
Armazenamento e processamento disponíveis para
computadores ligados em redes, eliminando a necessidade de
possuírem eles próprios os recursos.
Serviços de Software
Alugueis de software
E-mail
Calendários distribuídos
Computação em Nuvem Serviço Público
Uma nuvem é definida como um conjunto de serviços de
aplicativo, armazenamento e computação baseada na internet.
Infraestrutura física ou virtual por meio de software baseados
na utilização em vez de aquisição.
18. Computação em Nuvens
Implementação feita em Cluster de
computadores.
Escala e desempenho
Cluster:
Conjunto de computadores interligados que
cooperam estreitamente para fornecer um único
recurso de computação integrado de alto
desempenho.
Projetos
NOW
Project Berkeley
Beowulf da Nasa
Os servidores blade, Trata-se de um formato
que visa aumentar ainda mais a densidade
dos servidores, permitindo o compartilhamento
de componentes em comum, como discos
ópticos e fontes de alimentação.
19. Desafios
Heterogeneidade:
Conjunto heterogêneo de computadores em redes.
Redes
Hardwares de Computadores
Sistemas Operacionais
Linguagens de Programação
Implementações de diferentes desenvolvedores
20. Desafios
Sistemas abertos ●
…pode ser estendido e reimplementado de várias
maneiras
deve-se publicar a especificação e a documentação
das principais interfaces de software
a integração de componentes escritos por diferentes
programadores é problemática
21. Desafios
Segurança
Confidencialidade (Proteção contra exposição para pessoas não
autorizadas).
Integridade ( Proteção contra alteração ao dano).
Disponibilidade ( proteção contra interferência com os meios de
acesso aos recursos)
Ataque de negação de serviço(denial of service).
Interrupção de serviço por algum motivo.
22. Desafios
Escalabilidade
Escalas diferentes, podendo funcionar desde de uma intranet até a internet
Um sistema é dito escalável quando permanece eficiente quando há o aumento significativo do
número de recursos e usuários.
Controlar o custo dos recursos físicos:
É medida que a demanda por um recurso aumenta, deve ser possível, a um custo razoável,
ampliar o sistema para atende-la.
Controlar perda de Desempenho
A perda de desempenho máxima não deve ser maior que log(n)
Impedir que os recursos se esgotem
Preparar o sistema para suportar um crescimento futuro
Exemplo do IP
Evitar gargalos de desempenho
Os algoritmos devem ser descentralizados para evitar gargalos de desempenho
24. Tratamento de Falhas
Pode ocorrer no hardware e software
Falhas em SDs são consideradas parciais, enquanto alguns componentes
falham outros continuam funcionando.
Detecção de falhas
Soma de verificação verificação de arquivos corrompidos
Mascaramentos de falhas
Retransmissão de mensagens
Gravação de dados em dois discos
25. Tratamento de Falhas
Tolerância a falhas
Maioria dos serviços da internet apresentam falhas.
Recuperação de falhas
Envolve projetar o software de modo que o estado
anterior possa ser recuperado após uma falha.
Redundância:
Haver pelo menos duas rotas diferentes
Banco de dados replicado
Ter pelo menos dois servidores de Nomes replicados
26. Concorrência
Trabalha sobre a possibilidade que vários clientes
possam acessar um recurso compartilhado ao
mesmo tempo
A presença de múltiplos usuários é uma fonte de
pedidos concorrentes para seus recursos
Em ambiente concorrente, cada recurso deve ser
projetado para manter sempre a consistência
27. Desafios
Transparência
É a ocultação da separação dos componentes de um sistema distribuído,
Para que assim, um usuário final ou um programador de aplicativos
perceba ou utilize o sistema como um todo e não como componentes
independentes
Exemplos de transparências:
De Software
De acesso
De Desempenho
De falhas
De localização
Replicação
Mobilidade
de escalabilidade