O objetivo desse trabalho é desenvolver um sistema distribuído simples capaz de explorar o poder de vários processadores para acelerar o cumprimento de uma tarefa que exige computação intensiva. Em sua implementação, você irá incorporar recursos necessários para criar um sistema robusto, que é capaz de lidar com pacotes perdidos ou duplicados e com as possíveis falhas de clientes e servidores. Você também irá aprender o valor de criar um conjunto de abstrações em camadas na ligação entre protocolos de rede de baixo nível e aplicações de alto nível.
Seu sistema irá implementar um decifrador de senhas distribuído. Mais informações na definição da atividade.
- Ao chegar uma requisição, o server a divide em intervalos iguais (atualmente está definido em intervalos de 500 algarismos).
- Em seguida os intervalos são embaralhados.
- O server adiciona em uma lista de requisições a serem decifradas.
- O server retira uma Requisição da fila e pega um intervalo.
- O server reinsere a Requisição no final da fila.
- O server pega o primeiro Worker disponível.
- Atribui um intervalo para ser verificado pelo worker.
- Quando um worker responde, ele é reinserido na lista de workers disponíveis.
- Execute o server. (src/main/java/dev/felipejrvieira/decifradorsenha/Server.java)
- Execute quantos workers achar necessário. (src/main/java/dev/felipejrvieira/decifradorsenha/Worker.java)
- Execute o requester. A senha a ser quebrada deve estar em SHA1, possuir apenas números inteiros e se especifidado a quantidade de caracteres. (src/main/java/dev/felipejrvieira/decifradorsenha/Requester.java)
*Disciplina cursada em 2013.