Notas
As notas finais estão disponíveis.
Tema
Vamos trabalhar com
o
ZooKeeper, um sistema que oferece serviços de coordenação para
aplicações distribuídas. O ZooKeeper
é distribuído sob uma
licença livre e é utilizado por empresas como o Yahoo!.
O ZooKeeper já foi utilizado em três oferecimentos anteriores desta
disciplina
(2s2010, verão
2011
e 1s2011). A
ideia é aproveitar a experiência e as dicas desse pessoal e tentar
preparar um material melhor para os próximos oferecimentos.
Critério de avaliação
Os projetos serão desenvolvidos em três fases (pesos 3, 3 e 4) e devem
ser feitos em grupos de 3 ou 4 pessoas. Veja
aqui a lista de alunos matriculados.
Utilizaremos repositórios como github ou bitbucket como repositório (duas opções: um repositório por grupo ou um repositório para a disciplina com cada grupo trabalhando em um branch diferente).
Calendário
Aulas teóricas na sala 316 do IC-03, para desenvolvimento está reservado o laboratório 317 do IC-03. Atendimento de dúvidas na sala 18 do IC-02.
- 28/jan: Apresentação do projeto e formação de grupos
- 29/jan:
- 30/jan:
- 31/jan:
- 01/fev: Prazo final para entrega da fase 1
- 04/fev: Aula sobre barreiras
- 05/fev:
- 06/fev:
- 07/fev:
- 08/fev: Prazo final para entrega da fase 2
- 14/fev:
- 15/fev:
- 18/fev:
- 19/fev: Prazo final para entrega da fase 3
- 20/fev: Entrega de notas para a DAC
Repositórios
- Fase 1:
- Fases 2 e 3:
- Todas as fases:
Detalhamento da fase 1
- Ativar uma conta no cluster do IC-03. Um aspecto muito relevante deste cluster é que todos os nós enxergam o mesmo sistema de arquivos!
- Instalar o ZooKeeper.
-
O Grupo01
do 2s2010 fez um vídeo muito bom que pode servir de guia. Note que a
saída dos servidores é redirecionada para zookeeper.out e não é mais
exibida na tela.
- Cuidado com os zumbis: Muitas vezes processos zumbis de
servidores do ZooKeeper continuam rodando e consumindo recursos. Ainda
não temos nenhum mecanismo automático para acabar com os zumbis, por
isso, verifique se você não deixou nenhum processo deste tipo nas
máquinas antes de deslogar.
- Cuidado com o conflito de portas: cada grupo deverá escolher um
conjunto distinto de portas para operar, caso contrário, erros
inesperados poderão ocorrer.
- Escrever uma aplicação distribuída que utilize o ZooKeeper e que
exercite os conceitos de watcher e nós efêmeros. Seja criativo!
- A aplicação deverá ser explicada e apresentada em sala de aula. O
código da aplicação deverá estar disponível para download em um
repositório git. Deverá ser adicionada documentação que explique o
funcionamento da aplicação.
Detalhamento da fase 2
- Estudar sobre Receitas e Soluções do ZooKeeper.
- Analisar o código sobre Barreiras da receita e do tutorial. Quais são as limitações destes códigos?
- Escrever uma aplicação distribuída que utilize barreiras no
ZooKeeper e que exercite as limitações do código. Seja criativo: pense
em falhas, número variável de processos, etc.
Detalhamento da fase 3
- Considerando os erros e limitações encontrados na fase 2, propor
e implementar alterações no código das barreiras.
Curiosidades
Com o ZooKeeper, você pode participar do
Google Summer of
Code. Veja algumas
ideias
aqui.
Um grupo ajudou a resolver o bug documentado em
Bug in WriteLock recipe implementation. A próxima contribuição pode ser sua.