Protótipo p-iBus.


Componentes do sistema

NOTA: Pelo menos um dos computadores deverá possui uma unidade de armazenamento não volátil (por exemplo, um disco rígido) de forma a executar o processo "arquivo de mensagens".

Instalação

As instalações do JDK e do iBus deverão ser efectuadas de acordo com os respectivos manuais de instruções.
  1. Instalar o package Ticker. Deverá ser adicionado o caminho para o directório deste package à variável $CLASSPATH do Java;
  2. Instalar o protótipo de avaliação do débito máximo;
  3. Instalar o protótipo de avaliação da latência;
Repetir os procedimentos de instalação para cada um dos computadores do sistema.

Protótipo "débito máximo"

Nesta avaliação as mensagens enviadas pelo editor são compostas por um objecto do tipo ticker. A técnica utiliza consiste em programar o editor para debitar 100 mensagens sequencialmente suspendendo o processo entre cada mensagem durante períodos graduais de entre 1000 até 1 milisegundo e calculando no final o tempo médio para cada conjunto de 100 mensagens enviadas.

Idealmente, o editor, o arquivo e os assinantes volátil e persistente deverão ser executados em computadores separados, de modo a não degradarem o desempenho dos outros componentes.

O arquivo de mensagens recebe e grava todas as mensagens publicadas e, no caso de detectar o regresso ao canal de um assinante persistente, determina as mensagens em falta.

Protótipo analise-debito-maximo.tar.gz:

analise-debito-maximo
|-- Archiver
|   |-- Archiver.class
|   |-- Archiver.java
|   |-- Makefile
|   |-- MembershipMan.class
|   |-- MembershipMon.class
|   |-- ObjectArchiver.class
|   |-- archiver-data/
|   `-- run
|-- Consumer
|   |-- Consumer.class
|   |-- Consumer.java
|   |-- Makefile
|   |-- ObjectReceiver.class
|   `-- run
|-- ConsumerVolatile
|   |-- ConsumerVolatile.class
|   |-- ConsumerVolatile.java
|   |-- ConsumerVolatile.log
|   |-- Makefile
|   |-- ObjectReceiver.class
|   `-- run
`-- Producer
    |-- GenerateTick.class
    |-- Makefile
    |-- Producer.class
    |-- Producer.java
    |-- Producer.log
    `-- run

Protótipo "latência"

Este prótotipo consiste em publicar no canal um conjunto de mensagens simples (news ticker) e um conjunto de mensagens compostas (financial ticker) utilizando o modelo pedido-resposta ao invés de difusão em grupo. Tal como no protótipo anterior, são publicadas 100 mensagens reduzindo gradualmente o intervalo de tempo entre cada mensagem.

Dado que o mecanismo de comunicação utilizado pressupõe uma resposta dos assinantes, pretendia-se calcular no editor a distância (em milisegundos) entre o envio e a recepção da mesma mensagem por, pelo menos, um dos assinantes activos. No entando, os resultados da simulação não foram conclusivos dado que, por limitações da própria linguagem Java, não foi possível calcular com uma precisão inferior a 1 segundo a referida distância, sendo os valores obtidos muito semelhantes quer no canal volátil, quer no canal persistente.

O protótipo serve, no entanto, para validar o funcionamento do arquivo de mensagens. Neste sentido, incluem-se as listagens de dois teste efectuados onde se simula a falha/recuperação de um assinante persistente, e a forma como o arquivo determina as mensagens não recebidas pelo assinante.

Protótipo analise-latencia.tar.gz:

analise-latencia
|-- Archiver
|   |-- Archiver.class
|   |-- Archiver.java
|   |-- Makefile
|   |-- MembershipMan.class
|   |-- MembershipMon.class
|   |-- ObjectArchiver.class
|   |-- archiver-data/
|   `-- run
|-- Consumer
|   |-- Consumer.class
|   |-- Consumer.java
|   |-- GenerateTick.class
|   |-- Makefile
|   |-- ObjectReceiver.class
|   `-- run
|-- ConsumerVolatile
|   |-- ConsumerVolatile.class
|   |-- ConsumerVolatile.java
|   |-- GenerateTick.class
|   |-- Makefile
|   |-- ObjectReceiver.class
|   `-- run
|-- Producer
|   |-- GenerateTick.class
|   |-- Makefile
|   |-- Producer.class
|   |-- Producer.java
|   `-- run
`-- resultados
    |-- teste1
    |   |-- Archiver.txt
    |   |-- Consumer.txt
    |   `-- Producer.txt
    `-- teste2
        |-- Archiver.txt
        |-- Consumer.txt
        `-- Producer.txt

Jorge Morgado