Unidade Curricular: | Código: | ||
Sistemas Distribuídos | 831SDIS | ||
Ano: | Nível: | Curso: | Créditos: |
3 | Licenciatura | Engenharia Informática | 6 ects |
Período Lectivo: | Língua de Instrução: | Nº Horas: | |
Português/Inglês | 78 | ||
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. |