Unidade Curricular:Código:
Sistemas Distribuídos832SDIS
Ano:Nível:Curso:Créditos:
3LicenciaturaEngenharia Informática6 ects
Período Lectivo:Língua de Instrução:Nº Horas:
Português/Inglês78
Objectivos de Aprendizagem:
Nesta unidade curricular pretende-se que os alunos dominem os objetivos e práticas de gestão de sistemas distribuídos. Mais concretamente:
• Identificar e descrever os objectivos dos sistemas distribuídos
• Distinguir e caracterizar os principais modelos de comunicação e middleware
• Explicar os mecanismos e funcionamento de serviços de identificação e descoberta de recursos/entidades distribuídas
• Listar e descrever soluções de sincronização e coordenação de processos distribuídos
• Identificar e descrever modelos de consistência e gestão de replicação e actualizações em sistemas distribuídos
• Descrever os tipos de falhas e caracterizar e aplicar técnicas de tolerância a falhas bem como protocolos de consenso usados em sistemas distribuídos
• Elencar tipos de ataques em sistemas distribuídos e descrever mecanismos e soluções para o estabelecimento de canais seguros
• Utilizar ferramentas de middlware no desenvolvimento/implementação de aplicações distribuídas
Conteúdos Programáticos:
1. Introdução aos Sistemas Distribuídos: definição, objectivos, middleware e modelo cliente-servidor
2. Comunicação e Processamento: camadas protocolares, tipos de comunicação entre processos (RPC/RMI/CORBA, MoM e fluxos de dados), organização de processamento distribuído (cf. processos, threads, agentes)
3. Nomes e Espaços de Nomes: identificação de recursos/entidades, espaços de nomes e resolução de nomes
4. Sincronização de Recursos: sincronização temporal ou lógica, coordenadores e eleição, gestão de concorrência e exclusão mútua
5. Replicação de Recursos e Consistência: modelos de consistência forte e fraca, replicação e actualização de recursos, protocolos de implementação de consistência
6. Tolerância a Falhas: modelos de falhas, grupos e mascaramento de falhas, consenso e commit distribuído (2PC)
7. Protecção e segurança: ataques, criptografia (sym, asym) e canais seguros
8. Ferramentas e Serviços Remotos: objectos remotos (RMI) e middleware orientado a mensagens (MoM)
Demonstração da Coerência dos Conteúdos Programáticos com os Objectivos da Unidade Curricular:
O conteúdo programático cobre os objectivos previstos, uma vez que se organiza em módulos que endereçam especificamente os conceitos aplicados na distribuição de serviços e resolução de problemas concretos de sincronização e coordenação. Os conceitos básicos são abordados nos módulos 1 e 2 (cf. objectivos e modelos de comunicação e distribuição de aplicações) e os conceitos avançados são abordados nos módulos 3 a 7 (cf. espaços de nomes, replicação e consistência, tolerância a falhas e segurança). O capítulo 8 acompanha as aulas PL, abordando tecnologias utilizadas na implementação de exemplos concretos de aplicações distribuídas. Os módulos TP abordam os conceitos teóricos associados a cada tema, sendo acompanhados por exemplos de aplicação nas aulas PL. Estimula-se assim a resolução de exercícios guiados em cada módulo e, adicionalmente, propõem-se pequenos desafios para serem explorados individualmente.
Metodologias de Ensino (Avaliação Incluída):
Os conteúdos teóricos (T) são expostos recorrendo tipicamente a exemplos simples e ilustrativos. Paralelamente as aulas práticas-laboratoriais (PL) aplicam padrões de design ajustados à resolução de exercícios concretos de sincronização e coordenação de processos distribuídos, utilizando middleware adequado e complementando assim o esfroço das aulas TP. Os alunos recebem um conjunto de shell scripts que permitem automatizar a instalação e execução (cf. deployment) das diferentes packages que vão sendo desenvolvidas em cada aula da UC. Os scripts são adaptados pelos alunos a cada exercício semanal proposto. São tipicamente propostos 5 protocolos utilizando comunicação síncrona e padrões de design adaptados a diversos aspectos de gestão distribuída; adicionalmente são propostos 5 protocolos utilizando comunicação assíncrona, aplicando também diversos padrões de gestão de mensagens.
A avaliação compreende os seguintes elementos: 25% Teste 1 + 35% Teste 2 + 40% Projecto
Demonstração da Coerência das Metodologias de Ensino com os Objectivos de Aprendizagem da Unidade Curricular:
A metodologia de ensino foca-se na compreensão dos conceitos mais relevantes associados à modelização e gestão de arquitecturas distribuídas aplicadas à resolução de problemas concretos e reais. Os exemplos de exercícios propostos direccionam-se para a compreensão dos mecanismos disponíveis nas diversas ferramentas (cf. RMI e RabbitMQ) para o desenvolvimento e coordenação de processos distribuídos. A resolução de exercícios, aplicando padrões de design, pretende estimular a aplicação dos conhecimentos sobre os mecanismos de gestão e coordenação de processos distribuídos. Esta prática pretende ainda consolidar o domínio sobre as ferramentas utilizadas em todo o processo de desenvolvimento, desde a concepção até à implementação e execução de exemplos de aplicação concretos.
Bibliografia:
[1] Steen, M. van and Tanenbaum, A.S. , Distributed Systems, 3rd ed., distributed-systems.net, 2017.
[2] Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and Design, 5th Ed., Addison-Wesley 2012.
[3] Marques, J. A., Guedes, P., Tecnologia de Sistemas distribuídos, FCA, 2003.