Sistemas Operacionais Distribuídos e de Redes  -  1999/1

TRABALHO PRÁTICO - 2° PARTE

MÁXIMO DE 3 ALUNOS POR GRUPO  -  DATA PARA ENTREGA = 14/07/99

 

   Quem faz o que:

                Caroline, Cesar, Otavio - Apostas em corridas de cavalos
                Fabian, Ingrid - Loja virtual de CDs
                Débora, Ariadne, Rosane - Servidor de nomes
                Luciane - Agenda
                Luciane, Marcelo - Leilao
                Ana, Catia, Maira - Servidor de news
                Daniel, Maurício, Tiago - terminal bancário
                Marcelo, cristian - chat
                Thor, Alexandre, Marcelo - Calculadora
 

 

      Disponibilizar algum tipo de serviço na Internet através da implementação de dois programas
em Java: um cliente e um servidor.

     A escolha do serviço a ser implementado fica a cargo do grupo, mas deve ser aprovada pelo
professor. É necessário que o servidor mantenha algum tipo de estado e que existam operações de
"leitura" (não altera o estado do servidor) e de "escrita" (altera o estado do servidor). O serviço e o
protocolo podem ser simples, mas devem incluir no mínimo 4 operações. Exemplos de serviços:
nomes, arquivos, jogo, agenda, leilão, tempo, etc.

     Pode ser usado UDP ou TCP, o que for mais apropriado para o serviço em questão. O
protocolo entre cliente e servidor pode ser criado pelo grupo, adotado algum padrão existente ou
criado a partir da simplificação de um padrão existente.

     Cada grupo deverá implementar um serviço diferente. Em caso de conflito, vale a ordem na
qual os grupos solicitaram a aprovação do professor para o trabalho. O pedido de aprovação deve
ser feito através de um texto que inclua:
- Descrição geral do serviço, propósito, cenário de uso;
- Descrição das informações de estado mantidas pelo servidor;
- Descrição das operações suportadas;
- Descrição do protocolo, incluindo mensagens utilizadas.

     O servidor deverá ser constituido por duas réplicas, executando em computadores diferentes.
As operações deverão ser processadas na mesma ordem pelas duas réplicas, de maneira que elas
apresentem o mesmo estado, após processarem as mesmas operações. No caso de falha em uma das
réplicas, a réplica operacional deve manter o serviço disponível, realizando as operações na ordem
recebida e fazendo o necessário para impedir que os clientes fiquem bloqueados a espera de uma
resposta da réplica indisponível. É suposto que os clientes conhecem apriori os endereços IP das
réplicas, mas as réplicas não conhecem os endereços IP dos clientes, até que sejam informadas
através de mensagens dos próprios clientes.

     Caso o computador de uma das réplicas seja desligado, o serviço deve permanecer
disponível. Além disto, toda operação que tiver sido confirmada para o cliente deverá estar refletida
no estado da réplica que permanece operacional. O grupo tem liberdade para definir a arquitetura de
réplicas a ser utilizada. Entretanto, deverão ser utilizadas réplicas ativas.

     A ênfase do trabalho não está na complexidade do serviço nem na qualidade visual do cliente,
mas sim na construção de um servidor replicado. É preferível dedicar mais tempo ao código do
servidor mesmo que no final o cliente apresente uma interface bem simples.

     A entrega final do trabalho consiste no seguinte:

- Listagem do código fonte;
- Demonstração no computador, com a presença de todos os integrantes do grupo, em horário a ser
combinado. Serão feitas perguntas sobre o trabalho e somente será atribuída nota aos componentes
do grupo que participarem da demonstração.