Nota prévia: Este enunciado pode ser refinado, com vista a esclarecer enventuais dúvidas que apareçam durante a sua concretização.
O trabalho consiste em desenvolver um sistema de chamadas a procedimentos remotos e replicados para o sistema Appia. Mais concretamente, este sistema terá dois componentes, a saber:
A camada de chamada a procedimentos remotos (RRPC) esconde da camada aplicação o facto do servidor se encontrar replicado. Cada servidor é identificado pelo grupo de comunicação que gere a replicação desse servidor.
Cada sessão da camada RRPC interage com um único servidor de cada vez. A aplicação interage com a camada RRPC através da troca de eventos. Existe um evento para pedir a execução de um serviço e um evento para indicar a recepção da resposta (o corpo do pedido e da resposta são encapsulados numa mensagem do Appia).
O camada de RRPC deve concretizar as seguintes funcionalidades:
Para suportar a gestão da replicação, a do servidor executa-se sobre um protocolo de coordenação que será também concretizado como uma camada do Appia.
Esta camada executa-se por baixo da aplicação e é responsável por
filtrar e ordenar os diversos pedidos e retransmissões recebidos de um
ou mais clientes. Esta camada interage com duas pilhas Appia: um canal
ponto-a-ponto UDP para interagir com os clientes e um canal de
comunicação em grupo para interagir com as restantes réplicas (este
canal é também fornecido). A interacção entre a camada de coordenação
e as restantes camadas deve ser feita por troca de eventos Appia.
Nota importante: o canal de comunicação em grupo
fornecido já oferece as camadas de sincronia virtual e ordenação total
de mensagens.
A interacção entre o cliente e os servidores é ilustrada pela seguinte
figura.
Quer a camada servidor quer a camada de coordenação podem funcionar em dois modos distintos (na prática, pode ser preferível criar versões distintas para cada modo): modo replicação activa e modo replicação passiva.
A camada de coordenação deve assegurar que cada pedido só é executado apenas uma vez no primário e que a actualização respectiva é aplicada na ordem certa nas restantes réplicas.