A Cloudflare revelou detalhes de engenharia relacionados ao serviço experimental de consenso distribuído Meerkat, destinado ao gerenciamento do plano de controle interno (Control Plane) em escala global. O serviço baseia-se em um algoritmo de consenso moderno chamado QuePaxa, publicado pelos pesquisadores "Tennage & Băsescu" em 2023. Esta escolha representa um desvio do comum no campo de sistemas distribuídos, onde a maioria das infraestruturas atuais depende de algoritmos estabelecidos como Raft, Paxos ou Viewstamped Replication.
Desafios dos algoritmos de consenso tradicionais em redes globais
Os algoritmos de consenso tradicionais sofrem quedas acentuadas de desempenho ou interrupção total do serviço quando operados em redes de longa distância (WAN) caracterizadas por flutuações de latência e possíveis interrupções de conexão. Esses protocolos dependem fundamentalmente da existência de um nó líder (Leader Process) que garante a ordem das operações e fornece respostas em um tempo previsível. Quando o líder sofre um aumento na latência ou perda de conexão com a rede, as operações de consenso param completamente até que a falha seja detectada e um novo líder seja eleito.
As principais deficiências dos sistemas tradicionais manifestam-se em dois pontos críticos:
- Interferência Destrutiva (Destructive Interference): No protocolo Paxos, o envio de propostas simultâneas de vários nós leva ao cancelamento mútuo das propostas e a uma espiral de tentativas fracassadas que impedem o progresso do sistema. Embora o protocolo Raft resolva o problema definindo um único líder, a interferência destrutiva reaparece durante os processos de eleição de líder quando ocorre uma perturbação temporária na rede.
- Detectores de Falhas Incapazes (Fault Detectors): Em redes assíncronas como a Internet, é difícil distinguir a lentidão da rede de uma falha total do nó. Estimativas incorretas dos detectores de falhas levam ao desencadeamento de processos desnecessários de eleição de líder, colocando o sistema em um estado de falha semelhante à estabilidade analógica (Metastable Failure) e interrompendo as escritas por várias horas.
Como o QuePaxa aborda as falhas sem um líder obrigatório?
O algoritmo QuePaxa supera esses obstáculos através de três escolhas fundamentais de design: tornar o líder opcional, eliminar completamente os detectores de falhas e adotar a cooperação em vez da competição entre os proponentes (Proposers). O algoritmo baseia-se na divisão de papéis entre proponentes (Proposers) e registradores (Recorders).
O algoritmo baseia-se na atribuição de prioridades aleatórias às propostas. Quando um proponente recebe uma proposta com prioridade superior à de outro registrador, ele adota a nova proposta imediatamente e começa a transmiti-la, fazendo com que todos os nós trabalhem cooperativamente para alcançar a maior prioridade anunciada, em vez de se bloquearem mutuamente. Caso exista um líder, é atribuída a ele a maior prioridade possível, permitindo-lhe resolver o consenso em uma única viagem de ida e volta (Single Round-Trip), desde que a rede esteja estável.
Mecanismo técnico de funcionamento: As quatro fases para alcançar o consenso
O QuePaxa executa rodadas de consenso através de quatro fases consecutivas pelas quais o sistema passa para aprovar os registros:
- Fase 0 (Apresentação e Adoção): Os proponentes geram prioridades aleatórias para suas propostas. Se o líder estiver funcionando corretamente e suas mensagens chegarem primeiro à maioria dos registradores, o consenso é resolvido imediatamente através do "Caminho Rápido" (Fast Path).
- Fase 1 (Propagação): Os proponentes espalham as propostas adotadas para a maioria dos registradores para evitar o retrocesso de propostas com prioridades mais altas posteriormente, com base na interseção de maiorias (Majority Intersection).
- Fase 2 (Verificação e Decisão): Os proponentes consultam os registradores sobre a maior prioridade vista na fase anterior e, se corresponder à sua proposta adotada, ela é formalmente aprovada.
- Fase 3 (Passagem para a próxima rodada): Em caso de não decisão, os nós adotam a melhor proposta disponível em preparação para a próxima rodada, o que aumenta drasticamente a probabilidade de consenso cumulativo.
Por que essa mudança técnica é importante?
A adoção do QuePaxa é um passo prático que muda a forma como os sistemas distribuídos transcontinentais são projetados; ele prova que os sistemas não precisam sacrificar a disponibilidade (Availability) ou parar totalmente quando a rede de Internet sofre perturbações. Os resultados da operação do Meerkat no ambiente real da Cloudflare mostraram que mais de 95% das decisões são resolvidas através do caminho rápido do líder e, quando ocorre uma falha na rede ou queda do líder, o sistema não para, mas sua taxa de produtividade cai para no máximo um terço, enquanto continua processando as solicitações.
O algoritmo também permite técnicas de proteção (Hedging), onde os clientes podem enviar propostas para todas as réplicas com um curto tempo de espera configurado localmente, sem depender da latência da rede, eliminando os períodos de inatividade causados pelos longos tempos de espera de eleição no Raft, que chegam a vários segundos. A Cloudflare está trabalhando atualmente na verificação formal (Formal Verification) do código do algoritmo escrito em Rust para garantir a integridade dos dados durante casos de recuperação de falhas (Crash Recovery).