Pular para o conteúdo

Arquitetura de software · Dados · 6 min de leitura

Replicação e sharding

Replicar copia os dados para ter leitura extra e tolerância a falhas; fazer sharding divide os dados entre máquinas para escalar a escrita.

Aplicação → Primário: gravagravaPrimário → Réplica: replicareplicaAplicação → RoteadorRoteador → Shard ARoteador → Shard BAplicaçãoAplicaçãoPrimário — escritasPrimárioescritasRéplica — leituraRéplicaleituraRoteador — hash da chaveRoteadorhash da chaveShard A — clientes A–MShard Aclientes A–MShard B — clientes N–ZShard Bclientes N–Z

Arraste para o lado para ver o diagrama inteiro.

Em cima, replicação (mesmos dados, várias cópias). Embaixo, sharding (dados diferentes em cada máquina, escolhidos por uma chave).

Replicação

Um primário recebe as escritas e as envia para réplicas. Elas atendem leituras e assumem se o primário falhar. Na replicação assíncrona a réplica pode estar alguns instantes atrasada: quem acabou de gravar pode não ver o dado se ler de uma réplica.

Sharding

Quando um único servidor não aguenta as escritas ou o volume, os dados são divididos por uma chave de partição (cliente, região). A escolha da chave é crítica: chaves ruins criam hot spots e consultas que cruzam shards ficam caras.

Antes de dividir

  • Otimize consultas e índices, use cache e réplicas de leitura.
  • Shard só quando necessário: é uma decisão difícil de desfazer.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →