Sistemas Distribuídos (MAB733)
Apresentação
- (a) Unidade/Instituição: Instituto de Computação/UFRJ
- (b) Disciplina: Sistemas Distribuídos (MAB733)
- (c) Turma:
- (d) Ano/Semestre: 2021-3
- (e) Professor: Silvana Rossetto
- (f) Dia/horário: Sexta-feira — 9h às 12h
- (g) Materiais, atividades e comunicações serão disponibilizados no
Google Sala de Aula
Objetivos
O objetivo desta disciplina é apresentar as principais motivações e desafios da área de computação distribuída,
e os algoritmos e modelos arquiteturais fundamentais para o desenvolvimento de sistemas distribuídos.
Os tópicos de estudo deverão dar ao aluno a fundamentação teórica e prática necessária para:
definir e projetar especificações precisas sobre o comportamento desejado de um sistema distribuído,
selecionar modelos e ferramentas adequados para a sua implementação, identificar medidas de complexidade
e de desempenho e avaliar o sistema de acordo com essas medidas,
e propor e desenvolver novas soluções para a área de computação distribuída.
Conteúdo programático
- UNIDADE 1 — Visão geral de sistemas distribuídos
Motivação e desafios de sistemas distribuídos. Tipos de sistemas distribuídos.
2 semanas
- UNIDADE 2 - Arquiteturas de sistemas distribudos
Arquitetura lógica (em camadas, orientados a serviço, baseados em recursos, publicação e subscrição).
Arquitetura de sistema (cliente/servidor, par-a-par e híbridas).
2 semanas
- UNIDADE 3 - Comunicação em sistemas distribuídos
Protocolos de comunicação em aplicações distribuídas.
Protocolos da Internet (camada de transporte e de aplicação).
Abstrações de comunicação e programação para aplicações distribuídas.
Camada de middleware (tecnologias de middleware tradicionais e de nova geração).
2 semanas
- UNIDADE 4 - Identificação e localização em sistemas distribuídos
Estratégias de identificação e localização de entidades em sistemas distribuídos (plana,
estruturada e baseada em atributos).
1 semana
- UNIDADE 5 - Replicação, sincronização e consistência em sistemas distribuídos
Razões para replicação em sistemas distribuídos e seus desafios de implementação
para garantir consistência dos dados.
Modelos de consistência centrado em dados e técnicas de implementação.
Técnicas de gerenciamento de réplicas e distribuição de conteúdo.
Sincronização de processos distribuídos. Relógios físicos e lógicos.
2 semanas
- UNIDADE 6 – Técnicas de teste e de tolerância a falhas em sistemas distribuídos
Modelos de falhas. Atributos de dependabilidade. Técnicas de teste e monitoramento em sistemas distribuídos.
Técnicas e algoritmos para tolerância a falhas em sistemas distribuídos. Segurança em sistemas distribuídos.
2 semanas
- UNIDADE 7 – Tópicos avançados em sistemas distribudos
Temas e desafios atuais de pesquisa em sistemas distribuídos.
1 semana
Acompanhamento e avaliação da aprendizagem
- A avaliação do aprendizado levará em conta: a participação do aluno
nas aulas (peso 3), os resultados de exercícios teóricos e práticos realizados ao longo do curso (peso 4)
e a apresentação de um trabalho final relacionado ao tema de pesquisa do aluno ou a um tema de pesquisa geral da área (peso 3).
- A média final será mapeada para os conceitos A, B, C e D da seguinte forma:
0 a 4,9 (D), 5 a 6,9 (C), 7 a 8,9 (B), 9 a 10 (A).
Bibliografia
- M. van Steen and A.S. Tanenbaum, Distributed Systems, 3 ed., distributed-systems.net, 2017
(livro texto).
- Cachin, C.; Guerraoui, R; Rodrigues, L., Introduction to Reliable and Secure Distributed Programming, Springer, 2011.
- Coulouris, G.; Dollimore J.; Kindberg T., Distributed Systems - Concepts and Design, Addison Wesley, 5 ed., 2017.
- Artigos científicos selecionados das principais revistas e conferências da área de computação distribuída.