Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Busca Distribuída de Artigos


O que é o Projeto?

Este projeto implementa um sistema de busca distribuído em Java 17, utilizando Sockets para a comunicação em rede. A arquitetura simula um ambiente real onde dados são particionados e processados por diferentes máquinas para otimizar o desempenho e garantir escalabilidade.

O sistema é composto por quatro componentes principais:

  • Cliente: Uma interface de linha de comando (CLI) que permite ao usuário final realizar buscas.
  • Servidor A (Orquestrador): Atua como um gateway. Ele recebe as requisições do cliente, as distribui para os servidores de trabalho e, por fim, agrega os resultados antes de devolvê-los ao cliente.
  • Servidor B (Nó de Trabalho): Responsável por buscar em uma metade do conjunto de dados de artigos.
  • Servidor C (Nó de Trabalho): Responsável por buscar na outra metade do conjunto de dados.

Como Executar

1. Pré-requisitos

Antes de começar, garanta que você tenha os seguintes softwares instalados em seu sistema:

  • Java 17 (JDK)
  • Apache Maven

2. Instalação e Configuração

  1. Clone o repositório
    git clone https://github.com/itsryu/arXiv.git
  2. Posicione os Arquivos de Dados
    Mova os arquivos dados_servidor_b.json e dados_servidor_c.json para o diretório correto dentro do projeto: src/main/resources/data.
  3. Compile o Projeto e Instale as Dependências
    Abra um terminal na raiz do projeto e execute o seguinte comando Maven. Ele irá baixar as dependências e compilar o código.
    mvn clean package

3. Execução do Sistema

Existem duas maneiras de iniciar o sistema: o método manual, que é mais confiável para desenvolvimento, e o método automatizado via scripts, para conveniência no Windows.

Método 1: Execução Manual (Recomendado)

Este método requer a abertura de quatro (4) janelas de terminal separadas. É o método mais estável, especialmente em ambientes de desenvolvimento.

  1. Terminal 1 - Iniciar Servidor A (Orquestrador)
    mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerA"
  2. Terminal 2 - Iniciar Servidor B (Nó de Trabalho)
    mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerB"
  3. Terminal 3 - Iniciar Servidor C (Nó de Trabalho)
    mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerC"
  4. Terminal 4 - Iniciar Cliente

    Após os três servidores estarem no ar, inicie o cliente:

    mvn exec:java -Dexec.mainClass="br.com.arxiv.Client"

Método 2: Execução Automatizada com Scripts (Apenas Windows)

Para conveniência no sistema operacional Windows, foram criados arquivos de lote (.bat) que automatizam a inicialização de cada componente.

  • server_a.bat: Inicia o Servidor A (Orquestrador).
  • server_b.bat: Inicia o Servidor B (Nó de Trabalho).
  • server_c.bat: Inicia o Servidor C (Nó de Trabalho).
  • client.bat: Inicia o cliente para interação.
  • all.bat: Script mestre que executa todos os outros, iniciando o sistema completo, cada componente em sua própria janela de terminal.

Como usar: Basta executar o arquivo all.bat para iniciar todos os servidores e o cliente de uma só vez, ou executar na ordem correta para iniciar cada servidor.

Aviso: A execução de scripts pode apresentar instabilidade dependendo do ambiente (por exemplo, dentro de terminais de IDEs), podendo levar a erros. Caso os scripts falhem, utilize o Método 1 (Execução Manual).

About

Sistema de busca distribuído utilizando sockets em artigos científicos do arXiv.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages