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.
- Host: GitHub
- URL: https://github.com/itsryu/arxiv
- Owner: itsryu
- Created: 2025-06-14T21:08:20.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-15T18:40:44.000Z (about 1 year ago)
- Last Synced: 2026-04-11T20:44:37.998Z (3 months ago)
- Topics: java, maven, socket
- Language: Java
- Homepage: https://arxiv.org/
- Size: 38 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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
-
Clone o repositório
git clone https://github.com/itsryu/arXiv.git
-
Posicione os Arquivos de Dados
Mova os arquivosdados_servidor_b.jsonedados_servidor_c.jsonpara o diretório
correto dentro do projeto:src/main/resources/data.
-
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.
-
Terminal 1 - Iniciar Servidor A (Orquestrador)
mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerA"
-
Terminal 2 - Iniciar Servidor B (Nó de Trabalho)
mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerB"
-
Terminal 3 - Iniciar Servidor C (Nó de Trabalho)
mvn exec:java -Dexec.mainClass="br.com.arxiv.ServerC"
-
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).