TOLERÂNCIA A FALTAS DISTRIBUÍDA
Licenciatura e Pós-Graduação em Informática,
2006/2007 - 1 Semestre


Trabalho prático

Nota prévia

Este enunciado pode ser refinado, com vista a esclarecer enventuais dúvidas que apareçam durante a sua concretização.

Plataforma de suporte

Para concretizar o trabalho, os alunos devem utilizar o sistema Appia. Este sistema fornece serviços de filiação e comunicação em grupo com diferentes propriedades e tipos de ordenação.

Descrição

O trabalho consiste em concretizar um sistema de edição-subscrição simplificado. O sistema fornece serviços para dois tipos de clientes, a saber: os editores e os subscritores. O objectivo é permitir que os editores publiquem informação na forma de eventos de forma a que estes sejam recebidos em tempo real por todos os subscritores interessados.

Para simplificar o trabalho, o sistema de edição-subscrição a desenvolver é baseado num espaço plano de assuntos. Cada evento publicado é marcado com uma etiqueta que identifica o assunto (uma string); quando um subscritor pretende receber eventos de um determinado tipo só necessita de indicar o assunto pretendido.

Cada evento é disseminado com uma qualidade de serviço distinta. São os editores que indicam ao sistema qual a qualidade de serviço associada ao assunto que publicam. Assume-se que a cada assunto esta sempre associada a mesma qualidade de serviço (isto é, se existirem dois editores para o mesmo assunto, estes devem indicar a mesma qualidade de serviço). Existem duas qualidades de serviço suportadas: sincronia na vista e ordem total. A qualidade de serviço é armazenada na forma de uma descrição XML da pilha Appia que oferece essa qualidade de serviço. Desta forma será possível extender o sistema no futuro para qualquer número e tipo de qualidades de serviço.

Note-se que, no sistema Appia, cada grupo de comunicação possui um nome. Cabe ao sistema de edição-susbcrição escolher o nome que será utilizado para suportar cada fluxo de eventos.

A interface com os editores deve exportar dois métodos: anunciar e publicar. O primeiro indica ao sistema qual o assunto e a qualidade de serviço dos eventos que o editor pretende publicar. Em resposta o sistema atribui ao editor o nome do grupo a usar para esse fluxo. O método de publicar é concretizado como o envio de uma mensagem para o grupo em causa.

A interface com o subscritor exporta apenas o método subscrever. O susbcritor indica apenas o assunto sobre o qual pretende receber notificações. Em resposta o sistema indica ao subscritor a qualidade de serviço a utilizar e o nome do grupo. O susbcritor cria uma pilha Appia com essa qualidade de serviço e nome. As notificações devem ser geradas assíncronamente quando mensagens são recebidas no grupo em causa.

Apesar da comunicação entre os editores e os subscritores ser feita directamente, o sistema baseia-se na existência de um servidor que mantém a associação entre assuntos e respectivas qualidades de serviço e nomes de grupos. Este servidor deve ser replicado para tolerância a faltas.

O servidor deve ser configurado para não atribuír mais do que N (N é um parametro de configuração) nomes de grupos. N deve ser superior ao número de qualidades de serviço disponíveis (neste caso, superior a 2). Se existirem mais assuntos do que grupos, vários assuntos podem necessitar de ser disseminados usando o mesmo grupo (naturalmente, estes assuntos devem usar a mesma qualidade de serviço). Nesse caso, do lado do cliente, será necessário filtrar as notificações não solicitadas.

Os alunos têm total liberdade para conceber esquemas que limitem o número de notificações não solicitadas que são recebidas (mas filtradas) nos subscritores.

Qualidade do artigo

A qualidade do artigo (estrutura, clareza da exposição, grau de pormenor) é um factor preponderante na classificação. Os alunos devem iniciar a preparação do artigo com a devida antecedência.

A título de exemplo, estão também disponíveis alguns relatórios de anos anteriores:



Luís Rodrigues