Uma Biblioteca para Consenso Distribuído Baseada no Algoritmo de Blockchain Raft
Resumo
Este trabalho apresenta uma biblioteca modular em Go que encapsula o algoritmo de consenso Raft por meio de interfaces bem definidas (StateMachine, Transport e Storage), permitindo reutilizá-lo em diferentes sistemas distribuídos sem alterar a biblioteca. As implementações acadêmicas costumam ser acopladas a um domínio e as bibliotecas de produção são de grande porte; a biblioteca proposta oferece uma base de código compacta, adequada a estudo e extensão. Ela foi validada por 31 testes automatizados e por duas provas de conceito em domínios distintos: um key-value store distribuído e uma integração com jogo inspirada no QuakeWorld. Benchmarks demonstraram throughput de até 1.963 cmd/s em rajada e recuperação de falha do líder em menos de 500ms.
Referências
HashiCorp (2024). raft: Golang implementation of the Raft consensus protocol. [link].
Lamport, L. (1998). The part-time parliament. ACM Transactions on Computer Systems, 16(2):133–169.
Neto, P. U. et al. (2023). Raft Unity game. [link].
Ni, L. (2024). Dragonboat: A high performance multi-group Raft library in Go. [link].
Ongaro, D. (2014). Consensus: Bridging Theory and Practice. PhD thesis, Stanford University.
Ongaro, D. and Ousterhout, J. (2014). In search of an understandable consensus algorithm. In Proceedings of the USENIX Annual Technical Conference, pages 305–320, Philadelphia, PA, USA. USENIX Association.
Pozzan, G. and Vardanega, T. (2022). Rafting multiplayer video games. Software: Practice and Experience, 52(4):1065–1091.