Trabalho sobre Servidor Replicado

Introdução

O uso crescente de servidores web em diversas áreas de aplicação aumenta a necessidade de manter a consistência dos dados mesmo na ocorrência de falhas. Para atender a este requisito, desenvolvedores consideram o uso de replicação de dados. Entretanto, isto implica na implementação de um protocolo de consistência de réplica, também chamado protocolo de replicação, tais como os de replicação primário-backup e de replicação ativa.

No protocolo de replicação ativa, todas as réplicas recebem as requisições do cliente, processam e enviam as respostas ao cliente. Neste protocolo, a replicação de um objeto requer que as condições de Acordo (todas as réplicas não falhas concordam sobre o mesmo conjunto de requisições) e Ordem (todas as réplicas não falhas processam as requisições recebidas na mesma ordem) sejam satisfeitas. Dessa maneira, se todas as réplicas não falhas de um objeto tem estados iniciais idênticos, então saídas idênticas e na mesma ordem serão produzidas por elas.

Para satisfazer as condições de acordo e ordem de forma facilitada, a implementação do protocolo de replicação ativa requer suporte de um mecanismo de multicast confiável com ordenação total de mensagens, tal como o suporte oferecido pela ferramenta Jgroups.

O trabalho consiste em implementar um serviço de backup replicado, segundo o protocolo de replicação ativa, usando a ferramenta Jgroups. O serviço deve realizar backup rotativo de arquivos e pastas de um dado sistema de arquivos. A rotatividade deve ocorrer com dois backups e três réplicas para cada backup, por exemplo, considere que há dois backups B1 e B2, representados pelas réplicas R1B1, R2B1, R3B1 e R1B2, R2B2, R3B2, respectivamente. Ao realizar o terceiro backup B3, ele deve substituir B1, ou seja, as réplicas R1B1, R2B1, R3B1 deve ser sobre escritas por R1B3, R2B3, R3B3.

A implementação deve ser realizada 100% em Java.

Se houver dúvidas procure o professor após a aula.  

Bom trabalho!