An open API service indexing awesome lists of open source software.

https://github.com/itsryu/arxiv

Sistema de busca distribuído utilizando sockets em artigos científicos do arXiv.
https://github.com/itsryu/arxiv

java maven socket

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

          

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).