Uma extensão de Raft com propagação epidémica
André Gonçalves, Ana Nunes Alonso, José Pereira, Rui Oliveira
TL;DR
Este trabalho estende o algoritmo Raft com propagação epidémica para descentralizar a replicação, abordando o gargalo do líder. Introduz rounds de AppendEntries disseminados por gossip com uma permutação mutável de seguidores e um relógio lógico $RoundLC$, além de novas estruturas de dados $Bitmap$, $MaxCommit$ e $NextCommit$ para coordenar o avanço descentralizado do $CommitIndex$. A avaliação utiliza uma implementação em Go sob a infraestrutura Paxi com 51 réplicas, revelando que a Versão 1 eleva o throughput (até 6×) e que a Versão 2 distribui melhor a carga ao custo de maior coordenação entre estruturas. Os resultados sugerem ganhos significativos de desempenho e uso de recursos distribuídos, com perspectivas de validação em cenários reais de nuvem (LAN/WAN) e redes não transitivas.
Abstract
The Raft agreement algorithm is recognized for its ease of understanding and practical implementation, and is currently adopted in systems such as Kubernetes. However, it has some limitations in terms of scalability and performance as it concentrates effort on the leader. In this paper we present a new algorithm that expands Raft by incorporating epidemic propagation mechanisms to decentralize the replication effort. Our proposal is evaluated experimentally with a Go implementation and tested with a significant number of processes. -- -- O algoritmo de acordo Raft é reconhecido pela sua facilidade de compreensão e implementação prática, sendo atualmente adotado em sistemas como o Kubernetes. No entanto, tem algumas limitações em termos de escalabilidade e desempenho por concentrar o esforço no líder. Neste trabalho apresentamos um novo algoritmo que expande o Raft com a incorporação de mecanismos de propagação epidémica para descentralizar o esforço da replicação. A nossa proposta é avaliada experimentalmente com uma implementação em Go e testada com um número significativo de processos.
