Cursos‎ > ‎

Sistemas Distribuídos 2017.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

31/05:
  1. A Taxonomy and Survey of Cloud Computing Systems (Gleyson)
  2.  Internet of Things: A Survey on Enabling Technologies, Protocols, and Applications/​The Internet of Things: A survey (Rodrigo Parente)
07/06:
  1. Network Virtualization and Software Defined Networking for Cloud Computing: A Survey (Raiane)
  2. A survey of network virtualization (Raiane)
12/06:
  1. Containers checkpointing and live migration (Matheus)
  2. Above the Clouds: A Berkeley View of Cloud Computing  (Matheus)
  3. Performance Evaluation of Container-based Virtualization for High Performance Computing Environments (Gleyson)

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

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 
  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

Trabalho Escolhido:

Algoritmo de eleição: Valentão e Anel
  Daniel Franklin, Maiony Regis, Caio Gomes

Algoritmo de exclusão Mútua: Centralizado, Descentralizado, Distribuído e Anel.
  Emanuel Jefferson, Jefferson Alves, João Victor, Levi Porto, Lui Magno, Renan Vasconcelos, Francisco Gleyson

Algoritmo de Consistência baseada em replica primária: Read-one Write-all, Copia primaria remota e local
  João Luiz, Leandher Bessa, Lucas Luz

Algoritmo de Consistência baseada em escrita: Replicação ativa e Quorum 
  Oriá

Algoritmo busca P2P: Chord, CAN, Pastry, Tapestry
  Matheus Magalhâes, Nash, Raiane

Algoritmo Generais Bizantinos
  Rodrigo Pinheiro, Rodrigo Parente

Programação das apresentações

0x/0x
  1. Aluno (Trabalho)





Comments