Programação em Sistemas Distribuídos
Ano Letivo: 2015/16
Departamento: Informática
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática;
Objetivos da Unidade Curricular
Obter uma visão de conjunto acerca das arquitecturas e modelos para a construção e programação de sistemas distribuídos, interiorizando conceitos, paradigmas e serviços fundamentais dos SDs, adquirindo capacidades para decidir da aplicabilidade das principais arquitecturas e modelos de SDS e dominando as principais técnicas de programação em SDs.
PSD é uma disciplina de fecho da aprendizagem inicial nas matérias de Organização de Sistemas Computacionais, onde o estudante adquire uma visão holística de projecto de sistemas distribuídos, que lhe permitirá resolver problemas concretos pela aplicação selectiva das noções aprendidas anteriormente.
As competências adquiridas com a disciplina consistem em: a consolidação do conhecimento dos fundamentos, paradigmas principais e serviços de sistemas distribuídos; a capacidade de decidir a aplicabilidade das arquitecturas e modelos disponíveis, a situações diversas; o domínio das diversas técnicas de programação em sistemas distribuídos.
Pré-requisitos
- Redes de Computadores (26352)
- Sistemas Distribuídos (26374)
- Redes de Computadores (26704)
- Sistemas Distribuídos (26730)
- Redes de Computadores (28009)
- Sistemas Distribuídos (28018)
Conteúdos
Introdução à Programação em Sistemas Distribuídos.
Complementos de Paradigmas dos SDs.
Serviços Evoluídos de SDs.
Modelos de programação em ambientes distribuídos.
Sistemas e plataformas distribuídas.
Estudo de caso.
Descrição detalhada dos conteúdos programáticos
Componente Teórica
Introdução à Programação em Sistemas Distribuídos: Revisão dos Fundamentos dos SDs; Propriedades não-funcionais dos SDs; Enquadramentos e estratégias para a programação em SDs.
Complementos de Paradigmas dos SDs: Tempo e relógios; Sincronismo; Ordenação; Coerência; Concorrência e Atomicidade.
Serviços Evoluídos de SDs: Sistemas de ficheiros distribuídos; Serviços de tempo; Serviços de directório; Brokers.
Modelos de programação em ambientes distribuídos: Classes de actividades distribuídas; Modelo de cliente-servidor RPC revisto; Modelo orientado para grupos; Modelo baseado em eventos; Modelo de transacções atómicas.
Sistemas e plataformas distribuídas: Plataformas baseadas em RPC e Brokers e plataformas baseadas na Web; Sistemas orientados para grupos e entre-pares; Sistemas de transacções distribuídas.
Estudo de caso.
Componente Teórica-Prática
Pormenores adicionais sobre certos paradigmas
Alguns algoritmos em detalhe
Detalhes acerca de sistemas e serviços seleccionados
Introdução aos trabalhos de projecto
Estudo de caso (tornar o VP’63 distribuído, ver livro de texto)
Outros estudos de caso
Componente Prática
Projecto e concretização de um sistema interactivo de muito grande-escala, distribuído e resiliente.
O propósito deste projecto é projector e concretizar um sistema, logicamente centralizado, com acesso distribuído em muito grande escala, por clientes através da Internet. De modo a corresponder a requisitos de desempenho e confiabilidade, a concretização do serviço deverá ser fisicamente distribuída, embora os detalhes relacionados devam ser transparentes aos utilizadores, que vêem um serviço logicamente central.
Fases do Projecto:
O projecto será desenvolvido em três fases:
I. Projecto e concretização de toda a lógica da aplicação. Projecto e concretização dos geradores de tráfego e de falhas.
II. Demonstração da capacidade de aguentar cargas de trabalho contínuas muito elevadas, E cargas de trabalho de pico muito elevadas, através do projecto e concretização dos mecanismos necessários.
III. Demonstração da capacidade de aguentar a falha de qualquer servidor individual, através do projecto e concretização dos mecanismos necessários a melhorar o projecto anterior.
Bibliografia
Recomendada
P. Veríssimo and L. Rodrigues, Distributed Systems for System Architects, Kluwer Academic Publishers, 2001.
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, 3rd Ed., Addison-Wesley, 2002
Outros elementos de estudo
A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms, Prentice Hall, 2nd ed, 2007.
G. Brose, A. Vogel, K Duddy. Java Programming with CORBA, Wiley, 3rd ed, 2001.
Ciaran McHale. CORBA Explained Simply, http://www.ciaranmchale.com/, 2007.
Reading Modules Module 3 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.576-603, "NFS - Network File system"Module 4 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.548-562, "AFS - Andrew File system"Module 5 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.795-802, "CODA File system"Module 6 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.915-964, "Google Architecture (PageRank, GFS, Chubby, BigTable, MapReduce"Module 7 - Wikipedia, http://en.wikipedia.org/wiki/Ceph. "Ceph File System"Module 8 - WIkipedia, http://en.wikipedia.org/wiki/Network_Time_Protocol. "NTP - Network Time Protocol"Module 9 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.217-225, "Java RMI"Module 10 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.494-525, "CORBA"Module 16 - Wikipedia, http://en.wikipedia.org/wiki/Apache_Hadoop. "Apache Hadoop MapReduce and File System"Module 17 - Wikipedia, http://en.wikipedia.org/wiki/Tuxedo_%28software%29 . "Tuxedo Transactional Middleware Platform"
Métodos de Ensino
* Aulas teóricas: exposição dos temas do curso.
* Sessões teórico-práticas: exposição de material com mais detalhes (por exemplo, protocolos ou pacote de interfaces ou internos), e permitir um conhecimento mais profundo e prático sobre esses temas.
* Sessões de laboratório incluídas nas sessões TP: têm por objectivo permitir ao aluno trabalhar nos projectos.
Métodos de Avaliação
40% - Projecto e Trabalhos
05% - Participação nas aulas
55% - Exame final
Eliminatório: Exame Final, Projecto e Trabalhos
* Projecto e Trabalhos práticos
Conjunto de estudos de papel e caneta e um projecto em várias fases, distribuídos ao longo do semestre.
* Participação em classe e regularidade
Participação activa e a contribuição para os debates estão previstos e serão consideradas.
* Exame Final
é um exame de 2,5 horas e abrangente.
Língua de ensino
Português ou Inglês