Disciplina: DEE354 – Sistemas Distribuídos
Universidade Federal do Paraná
Professor: Prof. Jéfer – jefer@ufpr.br
Carga Horária: 60 horas (15 semanas, 4h/semana)
Faltas: 60 horas x 0,25 = 15 horas ou 7 aulas
Pré-requisitos: Redes de Computadores, Sistemas Operacionais, Programação Concorrente
Nesta unidade, serão apresentados os conceitos iniciais, a evolução histórica e a relevância dos sistemas distribuídos (SD) na computação moderna, com base em Tanenbaum, Coulouris e Silberschatz. Exploraremos definições, características fundamentais e exemplos práticos que ilustram sua aplicação no mundo real.
Este slide explora a evolução dos sistemas computacionais e o modelo cliente/servidor, destacando como as características fundamentais dos sistemas distribuídos (SD) moldaram seu desenvolvimento, com base em Tanenbaum, Coulouris e Silberschatz.
Este slide apresenta as definições essenciais e os conceitos fundamentais dos sistemas distribuídos (SD), com base em Tanenbaum, Coulouris e Silberschatz, destacando como eles formam a base teórica e prática da área.
Responda as seguintes questões:
Responda as seguintes questões:
Sistemas distribuídos possibilitam o processamento paralelo, maior escalabilidade, tolerância a falhas e melhor aproveitamento de recursos, essenciais para aplicações de alta performance e computação em nuvem (Tanenbaum, Coulouris).
A evolução do modelo cliente/servidor possibilitou a descentralização do processamento, a distribuição de cargas e o desenvolvimento de aplicações escaláveis, fundamentais para os sistemas distribuídos (Coulouris Cap. 2).
Em um sistema distribuído, há transparência, cooperação entre nós autônomos e tolerância a falhas, enquanto uma rede de computadores se limita à comunicação entre dispositivos sem um gerenciamento unificado (Tanenbaum, Silberschatz).
A transparência de localização oculta a posição física dos recursos, permitindo acesso sem saber onde estão localizados. Exemplo: o sistema DNS mapeia nomes para endereços IP sem expor os servidores específicos.
Comunicação síncrona exige que o remetente espere pela resposta (como em uma chamada RPC), enquanto a comunicação assíncrona permite que o remetente continue a execução sem aguardar, melhorando o desempenho e a escalabilidade (Coulouris Cap. 4).
Algoritmos de eleição, como o algoritmo Bully, escolhem um coordenador (geralmente o nó com maior ID) para gerenciar a sincronização e coordenação, garantindo que, mesmo após falhas, haja uma liderança única no sistema (Silberschatz).
A replicação aumenta a tolerância a falhas ao duplicar dados ou serviços em múltiplos nós, permitindo que o sistema continue funcionando mesmo se um nó falhar. Exemplo: o Amazon S3 replica objetos em diversas zonas de disponibilidade para assegurar a continuidade do serviço (Tanenbaum Cap. 7).
A escalabilidade horizontal permite aumentar a capacidade do sistema adicionando mais nós, melhorando o desempenho e evitando pontos únicos de falha. Um exemplo é o uso de clusters de servidores em grandes motores de busca, como o Google, que distribuem a carga entre milhares de máquinas.
A computação em nuvem utiliza a virtualização para fornecer recursos escaláveis e sob demanda, permitindo que empresas acessem infraestrutura e serviços sem investir em hardware próprio. Exemplos incluem AWS EC2, Google App Engine e Microsoft Azure.
Consistência eventual é um modelo em que, após uma atualização, todos os nós se tornam consistentes com o tempo, mesmo que inicialmente alguns retornem valores desatualizados. Essa abordagem favorece alta disponibilidade e tolerância a partições, como implementado no Cassandra.
A sincronização de relógios é crucial para determinar a ordem dos eventos em um ambiente onde não há um relógio físico compartilhado. Algoritmos de relógios lógicos, como os de Lamport, criam uma ordem parcial dos eventos, facilitando a coordenação e garantindo consistência na execução de operações distribuídas.