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!