Este projeto fornece uma implementação em TypeScript do protocolo de consenso Raft, acompanhada por um painel de simulação web. A implementação segue a especificação original, cobrindo eleição de líder, replicação de logs e tolerância a falhas. O painel permite visualizar em tempo real o estado do cluster, os logs de cada nó e a troca de mensagens, além de possibilitar a injeção controlada de falhas para observação do comportamento do sistema.
Para aprofundamento teórico sobre o algoritmo Raft, consulte a documentação oficial: https://raft.github.io/
- Visão Geral do Algoritmo - Explicação detalhada do funcionamento do Raft
- Arquitetura do Sistema - Estrutura e organização do código
- Guia de Instalação - Instruções para configuração do ambiente
- Guia de Uso - Como executar e interagir com o sistema
- API Reference - Documentação dos endpoints REST
- Dashboard - Guia de uso da interface web
- Docker - Configuração e orquestração de containers
- Eleição de Líder: Implementação do mecanismo de eleição distribuída
- Replicação de Logs: Sistema de replicação com garantia de consistência
- Simulação de Falhas: Ferramentas para testar partições de rede e recuperação de nós
- Dashboard Interativo: Interface web para monitoramento e controle do cluster
- Métricas em Tempo Real: Visualização de latência, throughput e uso de recursos
- Testes de Performance: Ferramentas integradas para benchmarking
- Containerização: Ambiente completamente dockerizado para facilitar experimentação
- Node.js v20: Runtime JavaScript
- TypeScript 4.7: Tipagem estática
- Express: Framework HTTP
- ZeroMQ 6.0: Comunicação entre processos
- Redis: Cache distribuído (opcional)
- MongoDB: Persistência de dados (opcional)
- React 18: Biblioteca UI
- Vite 5: Build tool e dev server
- Material-UI 5: Componentes visuais
- Chart.js 4: Visualização de métricas
- Axios: Cliente HTTP
- Docker & Docker Compose: Containerização
- HAProxy: Load balancer
- Grunt: Task runner
# Clonar o repositório
git clone https://github.com/DEVitor0/algoritmo-raft-consenso.git
cd algoritmo-raft-consenso
# Instalar dependências
npm install
cd dashboard && npm install && cd ..
# Iniciar cluster com Docker
docker-compose -f docker-compose.raft.dev.yml up
# Acessar dashboard
http://localhost:3000Para instruções detalhadas, consulte o Guia de Instalação.
.
├── core/ # Código principal do servidor
│ ├── auth/ # Sistema de autenticação
│ ├── baseServer/ # Servidor HTTP base
│ ├── models/ # Interfaces e tipos
│ ├── providers/ # Implementações de serviços
│ └── utils/ # Utilitários compartilhados
├── raftNode/ # Implementação do algoritmo Raft
│ ├── models/ # Estruturas de dados do Raft
│ └── providers/ # Eleição e replicação
├── machineDiscovery/ # Descoberta de nós
├── dashboard/ # Interface web React
├── lb/ # Configuração do load balancer
└── docs/ # Documentação completa
DEVitor0
- GitHub: @DEVitor0
- Linkedin: DEVitor0
- Email: [email protected]
- In Search of an Understandable Consensus Algorithm (Extended Version) - Paper original do Raft
- Raft Consensus Algorithm - Site oficial
- The Secret Lives of Data - Raft - Visualização interativa
