Cursos‎ > ‎

Sistemas Distribuídos 2018.1

Introdução


Essa disciplina tem como objetivo apresentar os conceitos de Sistemas Distribuídos visando oferecer um conhecimento básico para um profissional da área de Ciência da Computação. 

Apresentação do Curso

O curso apresenta dois momentos:

No primeiro o professor irá apresentar os conceitos básicos de Gerenciamento de Redes de forma expositiva porém estimulando a participação dos alunos.

No segundo momento os alunos do mestrado irão apresentar uma série de artigos apresentando o estado da arte na pesquisa de gerenciamento quando haverá oportunidade de discussões sobre essas propostas.

Após essas duas etapas haverá a apresentação do trabalho prático desenvolvido pelos alunos, como parte da avaliação da disciplina. 

Material do curso

Bibliografia

Livros Sistemas Distribuídos - Princípios e Paradgmas - Andrew Tanenbaum (8576051427)

Sistemas Distribuídos - Princípios e Paradgmas
Autor: Andrew Tanenbaum, Maarten Van Steen 
Editora: Prentice Hall

Livro - Sistemas Distribuidos: Conceitos E Projetos
Sistemas Distribuídos – Conceitos e Projetos (5a edição)
George Coulouris, Jean Dollimore e Tim Kindberg
Editora Bookman

Slides do curso: 

Slides da disciplina Sistemas Distribuídos.

Avaliação

Não serão aplicadas provas.

A avaliação para os alunos do mestrado será a apresentação dos seminários e a apresentação e a entrega do relatório do trabalho prático final. A nota final será a média da nota da apresentação do seminário e do trabalho final. 

A avaliação para os alunos da graduação será a apresentação e a entrega do relatório do trabalho prático final.

Seminários

Cada aluno do mestrado deverá escolher dois artigo para ler, estudar e fazer uma apresentação de 30 min. Após a apresentação haverá discussão sobre o artigo. Aceito sugestões de outros artigos. Cada aluno deverá mandar um e-mail para o professor indicando o artigo escolhido.

A programação é apresentada abaixo.

Alguns artigos são links para IEEE ou ACM e são acessíveis apenas pelo portal Periódicos da CAPES, sendo assim, são acessíveis apenas de dentro da UECE ou usando o sistema Cafe.

A relação de artigos disponíveis para os seminários de Sistemas Distribuídos.

Programação dos Seminários

29/06:
  • Agrawala Algorithm Mutual Exclusion  (Dyego Henrique)
  • Lamport Time Clocks Ordering (Dyego Henrique)
  • Software Engineering Meets Services and Cloud Computing (Marx Haron) 
  • Service-Oriented Middleware for the Future Internet: State of the Art and Research Directions (Marx Haron) 
06/07:
  • Software-Defined Industrial Internet of Things in the Context of Industry 4.0 (Marcus Diogo)
  • End-to-End Communication Delay Analysis in Industrial Wireless Networks (Marcus Diogo)
13/07:
  • Introduction to Cloud Computing architecture  (Tibério Loureiro)
  • Cloud Computing & Multi-Agent Systems: A New Promising Approach for Distributed Data Mining (Tibério Loureiro)
  • Survey of System Virtualization Techniques   (Pedro Henrique)
  • Virtualização: Conceitos e Aplicações em Segurança (Alexandre Rocha)
  • Security in IoT: Survey (Alexandre Rocha)
  • A survey on reliability in distributed systems (Ana Maria)
  • Elections in a Distributed Computing System (Ana Maria)

Trabalho Prático Final

Construir um protótipo de um sistema distribuído, sugerido abaixo, utilizando o emulador Mininet.

Escolher um tema, escrever um código que implemente o algoritmo indicado, desenvolver um script que automatize a criação dos cenários e realize os testes.

Criar um teste funcional ou performance e exibir os dados (em um gráfico ou tabela, por exemplo). Como sugestão consulte OpenSourceTesting

Para ajudar a implementação do protótipo indico o código de um cliente-servidor  e o script Mininet compartilhado pelo aluno Flávio Alves: Mininet Example

Fazer uma apresentação de no máximo 20 min sobre o trabalho em sala, conforme programação abaixo. A apresentação deve mostrar o algoritmo escolhido, detalhes da implementação (bibliotecas, programas, etc), resultados e comentários sobre a experiência,

Preparar um relatório escrito descrevendo o algoritmo escolhido, detalhes da implementação (bibliotecas, programas, etc), resultados e comentários sobre a experiência. Enviar o relatório e o código fonte por e-mail.

Algumas diretrizes:
  1. Escrever o código do cliente/servidor ou peer em Java ou Python (não é proibido usar outra linguagem ,as acho que essas duas tem mais bibliotecas disponíveis, facilitando o desenvolvimento).
  2. Escolher a forma de comunicação entre os programas. Pode ser socket TCP, UDP, SOA, REST, RMI, etc
  3. O script de criação do cenário e teste deve ser em Python, linguagem do Mininet. Ver exemplos de uso da API do Mininet no site.
  4. Criar topologias heterogeneas: Sugestão, consulte Topology Zoo
  5. Emular no Mininet problemas de rede que o programa deve tratar: (1) Taxa de descarte até 30% e (2) Delay de enlace até 10 seg.
Sugestões de temas (os temas serão discutidos em aula):
  1. Algoritmo de eleição: Valentão e Anel  (Marx Haron) 
  2. Algoritmo de exclusão Mútua: Centralizado, Descentralizado, Distribuído e Anel.
  3. Algoritmo de Consistência baseada em replica primária: Read-one Write-all, Copia primaria remota e local
  4. Algoritmo de Consistência baseada em escrita: Replicação ativa e Quorum 
  5. Algoritmo busca P2P: Chord, CAN, Pastry, Tapestry
  6. Algoritmo Generais Bizantinos

Programação das apresentações

0x/0x
  1. Aluno (Trabalho)



Comments