Nezha: A Key-Value Separated Distributed Store with Optimized Raft Integration

O artigo apresenta o Nezha, um sistema de armazenamento distribuído que integra separação de chaves-valor com o protocolo Raft para eliminar a sobrecarga de I/O causada por operações de persistência sobrepostas, resultando em melhorias significativas de desempenho em operações de leitura e escrita.

Yangyang Wang, Yucong Dong, Ziqian Cheng, Zichen Xu

Publicado Wed, 11 Ma
📖 5 min de leitura🧠 Leitura aprofundada

Each language version is independently generated for its own context, not a direct translation.

Imagine que você está gerenciando uma biblioteca gigante e caótica onde milhões de pessoas pedem livros (dados) todos os segundos. O problema é que, para garantir que ninguém roube um livro ou que a história seja contada da mesma forma para todos, os bibliotecários precisam seguir regras estritas de segurança (o protocolo Raft).

No entanto, no sistema antigo, para entregar um único livro, o bibliotecário tinha que fazer três cópias do mesmo livro em lugares diferentes apenas para garantir a segurança. Isso deixava o sistema lento, como se fosse um entregador de pizza que tivesse que fazer três viagens para entregar uma única pizza só para "certificar" que a pizza chegou.

O Nezha é o novo sistema de biblioteca que resolveu esse problema de forma inteligente. Aqui está como ele funciona, explicado de forma simples:

1. O Problema: A "Fotocopiadora" Exagerada

Nos sistemas tradicionais de armazenamento de dados (como o que usamos em bancos e redes sociais), quando você salva algo (um "Put"), o sistema faz três coisas pesadas:

  1. Escreve um registro de segurança (o "diário" do Raft).
  2. Escreve um registro de segurança no banco de dados (o "WAL").
  3. Escreve o dado final no disco.

É como se você fosse ao correio para enviar uma carta, mas o carteiro fosse obrigado a fazer três cópias da carta, carimbá-las três vezes e enviá-las por três rotas diferentes antes de finalmente entregar a original. Isso gasta muita energia (I/O) e tempo.

2. A Solução do Nezha: Separar a "Capa" do "Conteúdo"

O Nezha usa uma ideia chamada Separação Chave-Valor. Pense em um livro de receitas:

  • A Chave (Key): É o nome da receita (ex: "Bolo de Cenoura").
  • O Valor (Value): É a receita em si (os ingredientes e o modo de preparo), que pode ser enorme.

No sistema antigo, eles tentavam guardar a receita inteira junto com o nome, repetidamente.
O Nezha faz algo diferente:

  • Ele guarda apenas o nome da receita e um número de página (um "offset") no índice principal.
  • A receita completa (o valor grande) é guardada uma única vez em um arquivo especial de "diário" (ValueLog).

A Analogia do Restaurante:
Imagine um restaurante onde o garçom (o sistema) anota no bloco de pedidos apenas: "Mesa 1: Prato X, Página 45 do livro de receitas".
Ele não escreve o prato inteiro no bloco. Ele apenas anota onde encontrar a receita. Isso torna o bloco de pedidos super leve e rápido. O livro de receitas (o valor) só é escrito uma vez, na cozinha, e não precisa ser copiado três vezes para cada pedido.

3. O Grande Desafio: A "Limpeza" (Garbage Collection)

Ao guardar apenas "números de página" e não os dados completos, o sistema cria um problema: se você quiser ler o "Bolo de Cenoura", o sistema precisa ir até a página 45 do livro de receitas. Se os pedidos chegarem em ordem aleatória, o livro fica bagunçado, e o garçom precisa correr de um lado para o outro procurando páginas (o que é lento para ler).

Além disso, quando um livro fica cheio de "rascunhos" de receitas antigas, é preciso limpá-lo. No sistema antigo, essa limpeza poderia travar o restaurante todo.

4. A Magia do Nezha: O "Faxineiro Inteligente" (GC Raft-Aware)

O Nezha tem um faxineiro especial que trabalha sem parar, mas de forma inteligente:

  • Durante a limpeza: Ele não para o atendimento. Ele cria uma nova área de trabalho para os novos pedidos, enquanto limpa a área antiga.
  • Organização: Ele pega as receitas espalhadas e as reorganiza em ordem alfabética em um novo livro.
  • Índice Rápido: Ele cria um mapa (índice) que diz exatamente onde cada receita está, sem precisar vasculhar o livro todo.

Isso significa que, mesmo que o sistema esteja "faxinando" (reorganizando dados), ele continua rápido para ler e escrever.

5. O Resultado: Mais Rápido e Mais Barato

Os testes mostraram que o Nezha é um monstro de eficiência:

  • Escrever (Salvar): Ficou 460% mais rápido. É como se o entregador de pizza agora entregasse 5 pizzas no tempo que antes levava para entregar 1.
  • Ler (Buscar): Ficou 12,5% mais rápido em buscas simples e 72,6% mais rápido em buscas que envolvem vários itens (como "mostre-me todos os bolos").
  • Segurança: Apesar de ser mais rápido, ele mantém todas as regras de segurança do protocolo Raft. Ninguém perde dados, e o sistema não quebra se um servidor cair.

Resumo Final

O Nezha é como transformar um sistema de entregas burocrático e lento em uma operação de precisão cirúrgica.

  • Ele para de fazer cópias desnecessárias (reduzindo o trabalho repetitivo).
  • Ele separa o que é importante (o nome) do que é pesado (o conteúdo).
  • Ele organiza a bagunça enquanto o sistema continua funcionando.

Para o usuário final, isso significa que aplicativos de banco, redes sociais e jogos serão muito mais rápidos e responsivos, gastando menos energia e dinheiro em servidores.