Sistemas Distribuídos (2017/2018) - Departamento de Informática
Descrição

Esta é uma UC de consolidação, opcional, em sistemas distribuídos. Esta UC introduz os modelos, métodos e técnicas básicas para o desenvolvimento de sistemas distribuídos.

Nas aulas práticas os estudantes colocam em prática as técnicas abordadas na cadeira desenvolvendo um sistema distribuído de média complexidade.

Objectivos

Esta é uma UC de consolidação, opcional, em sistemas distribuídos. Esta UC introduz os modelos, métodos e técnicas básicas para o desenvolvimento de sistemas distribuídos. Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

Conhecimentos

Aptidões e competências

Programa

1. Introduction

1.1 Examples, characteristics, challenges

2. Direct communication

2.1 Point-to-point communication

2.2 Multicast

3. Remote invocation

3.1 Model

3.2 Interfaces and data representation

3.3 Protocols and semantics in the presence of faults

3.4 Binding and concurrency in the server

4. Remote invocation in the Internet

4.1 Web-services

4.2 REST

4.3 Asynchronous invocation (e.g. AJAX) and push models

5. Indirect communication

5.1 Group communication

5.2 Publish/subscribe

5.3 Message queues

6. Architectures and models

6.1 Architectures: client/server variants, p2p, proxy

6.2 Fault, interaction and security models

7 Security

7.1 Models

7.2 Cryptography

7.3 Case studies: TLS, OAuth

8. Time

8.1 Physical clocks

8.2 Logical clocks

8.3 Vector clocks

8.4 Version vectors

9. Introduction to replication and consistency

9.1 Caching

9.2 Primary/backup replication

10. Naming in distributed systems

10.1 Problems and concepts

10.2 Name services

10.3 Directory services

Bibliografia Principal

Distributed Systems: Concepts and Design

George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

Publisher: Addison Wesley; 5th edition

ISBN-13: 978-0132143011

Requisitos Prévios

Para seguir esta cadeiraos estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

Bons conhecimentos de Programação em Java são essenciais.

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Total de Horas 0
ECTS 6.0