{"id":29018190,"url":"https://github.com/itsryu/arxiv","last_synced_at":"2026-04-11T20:44:46.801Z","repository":{"id":299141415,"uuid":"1002161324","full_name":"itsryu/arXiv","owner":"itsryu","description":"Sistema de busca distribuído utilizando sockets em artigos científicos do arXiv.","archived":false,"fork":false,"pushed_at":"2025-06-15T18:40:44.000Z","size":39882,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-11T20:44:37.998Z","etag":null,"topics":["java","maven","socket"],"latest_commit_sha":null,"homepage":"https://arxiv.org/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itsryu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-14T21:08:20.000Z","updated_at":"2025-07-14T19:09:56.000Z","dependencies_parsed_at":"2025-07-18T11:50:45.470Z","dependency_job_id":null,"html_url":"https://github.com/itsryu/arXiv","commit_stats":null,"previous_names":["itsryu/arxiv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/itsryu/arXiv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsryu%2FarXiv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsryu%2FarXiv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsryu%2FarXiv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsryu%2FarXiv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsryu","download_url":"https://codeload.github.com/itsryu/arXiv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsryu%2FarXiv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31695165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T20:18:30.949Z","status":"ssl_error","status_checked_at":"2026-04-11T20:18:29.982Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","maven","socket"],"created_at":"2025-06-25T23:39:25.321Z","updated_at":"2026-04-11T20:44:46.789Z","avatar_url":"https://github.com/itsryu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbody\u003e\n    \u003ch1\u003eSistema de Busca Distribuída de Artigos\u003c/h1\u003e\n    \u003chr\u003e\n    \u003ch2\u003eO que é o Projeto?\u003c/h2\u003e\n    \u003cp\u003e\n        Este projeto implementa um sistema de busca distribuído em Java 17, utilizando Sockets para a comunicação em\n        rede. A arquitetura simula um ambiente real onde dados são particionados e processados por diferentes máquinas\n        para otimizar o desempenho e garantir escalabilidade.\n    \u003c/p\u003e\n    \u003cp\u003eO sistema é composto por quatro componentes principais:\u003c/p\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cb\u003eCliente:\u003c/b\u003e Uma interface de linha de comando (CLI) que permite ao usuário final realizar buscas.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eServidor A (Orquestrador):\u003c/b\u003e Atua como um gateway. Ele recebe as requisições do cliente, as distribui\n            para os servidores de trabalho e, por fim, agrega os resultados antes de devolvê-los ao cliente.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eServidor B (Nó de Trabalho):\u003c/b\u003e Responsável por buscar em uma metade do conjunto de dados de artigos.\n        \u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eServidor C (Nó de Trabalho):\u003c/b\u003e Responsável por buscar na outra metade do conjunto de dados.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003chr\u003e\n    \u003ch2\u003eComo Executar\u003c/h2\u003e\n    \u003ch3\u003e1. Pré-requisitos\u003c/h3\u003e\n    \u003cp\u003eAntes de começar, garanta que você tenha os seguintes softwares instalados em seu sistema:\u003c/p\u003e\n    \u003cul\u003e\n        \u003cli\u003eJava 17 (JDK)\u003c/li\u003e\n        \u003cli\u003eApache Maven\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch3\u003e2. Instalação e Configuração\u003c/h3\u003e\n    \u003col\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eClone o repositório\u003c/strong\u003e\u003cbr\u003e\n            \u003ccode\u003egit clone https://github.com/itsryu/arXiv.git\u003c/code\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n            \u003cstrong\u003ePosicione os Arquivos de Dados\u003c/strong\u003e\u003cbr\u003e\n            Mova os arquivos \u003ccode\u003edados_servidor_b.json\u003c/code\u003e e \u003ccode\u003edados_servidor_c.json\u003c/code\u003e para o diretório\n            correto dentro do projeto: \u003ccode\u003esrc/main/resources/data\u003c/code\u003e.\n        \u003c/li\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eCompile o Projeto e Instale as Dependências\u003c/strong\u003e\u003cbr\u003e\n            Abra um terminal na raiz do projeto e execute o seguinte comando Maven. Ele irá baixar as dependências e\n            compilar o código.\n            \u003cpre\u003e\u003ccode\u003emvn clean package\u003c/code\u003e\u003c/pre\u003e\n        \u003c/li\u003e\n    \u003c/ol\u003e\n    \u003ch3\u003e3. Execução do Sistema\u003c/h3\u003e\n    \u003cp\u003eExistem 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.\u003c/p\u003e\n    \u003ch4\u003eMétodo 1: Execução Manual (Recomendado)\u003c/h4\u003e\n    \u003cp\u003eEste método requer a abertura de \u003cstrong\u003equatro (4) janelas de terminal\u003c/strong\u003e separadas. É o método mais\n        estável, especialmente em ambientes de desenvolvimento.\u003c/p\u003e\n    \u003col\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eTerminal 1 - Iniciar Servidor A (Orquestrador)\u003c/strong\u003e\u003cbr\u003e\n            \u003cpre\u003e\u003ccode\u003emvn exec:java -Dexec.mainClass=\"br.com.arxiv.ServerA\"\u003c/code\u003e\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eTerminal 2 - Iniciar Servidor B (Nó de Trabalho)\u003c/strong\u003e\u003cbr\u003e\n            \u003cpre\u003e\u003ccode\u003emvn exec:java -Dexec.mainClass=\"br.com.arxiv.ServerB\"\u003c/code\u003e\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eTerminal 3 - Iniciar Servidor C (Nó de Trabalho)\u003c/strong\u003e\u003cbr\u003e\n            \u003cpre\u003e\u003ccode\u003emvn exec:java -Dexec.mainClass=\"br.com.arxiv.ServerC\"\u003c/code\u003e\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n            \u003cstrong\u003eTerminal 4 - Iniciar Cliente\u003c/strong\u003e\u003cbr\u003e\n            \u003cp\u003eApós os três servidores estarem no ar, inicie o cliente:\u003c/p\u003e\n            \u003cpre\u003e\u003ccode\u003emvn exec:java -Dexec.mainClass=\"br.com.arxiv.Client\"\u003c/code\u003e\u003c/pre\u003e\n        \u003c/li\u003e\n    \u003c/ol\u003e\n    \u003ch4\u003eMétodo 2: Execução Automatizada com Scripts (Apenas Windows)\u003c/h4\u003e\n    \u003cp\u003ePara conveniência no sistema operacional Windows, foram criados arquivos de lote (.bat) que automatizam a inicialização de cada componente.\u003c/p\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003ccode\u003eserver_a.bat\u003c/code\u003e: Inicia o Servidor A (Orquestrador).\u003c/li\u003e\n        \u003cli\u003e\u003ccode\u003eserver_b.bat\u003c/code\u003e: Inicia o Servidor B (Nó de Trabalho).\u003c/li\u003e\n        \u003cli\u003e\u003ccode\u003eserver_c.bat\u003c/code\u003e: Inicia o Servidor C (Nó de Trabalho).\u003c/li\u003e\n        \u003cli\u003e\u003ccode\u003eclient.bat\u003c/code\u003e: Inicia o cliente para interação.\u003c/li\u003e\n        \u003cli\u003e\u003ccode\u003eall.bat\u003c/code\u003e: Script mestre que executa todos os outros, iniciando o sistema completo, cada componente em sua própria janela de terminal.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003cp\u003e\n        \u003cstrong\u003eComo usar:\u003c/strong\u003e Basta executar o arquivo \u003ccode\u003eall.bat\u003c/code\u003e para iniciar todos os\n        servidores e o cliente de uma só vez, ou executar na ordem correta para iniciar cada servidor.\n    \u003c/p\u003e\n    \u003cp\u003e\n        \u003cstrong\u003eAviso:\u003c/strong\u003e A execução de scripts pode apresentar instabilidade dependendo do ambiente (por exemplo,\n        dentro de terminais de IDEs), podendo levar a erros. Caso os scripts falhem, utilize o Método 1 (Execução\n        Manual).\n    \u003c/p\u003e\n\u003c/body\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsryu%2Farxiv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsryu%2Farxiv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsryu%2Farxiv/lists"}