7.2. Rebalanceamento, roteamento e índices secundários
Mova dados com o mínimo de impacto, saiba qual nó tem cada chave e escolha índice local ou global.
Resumo
- Rebalancear: mover shards quando nós entram ou saem. Muitos shards fixos por nó (ex.: 1000 shards, 10 nós) facilitam.
- Divisão dinâmica: shard que cresce demais se divide (como B-tree). Rebalanceamento manual ou automático: o automático pode agravar uma pane.
- Roteamento: cliente pergunta a qualquer nó, a um roteador ou já sabe. Mapa de shards em ZooKeeper/etcd ou via gossip.
- Índice secundário local (por documento): escrita simples, leitura consulta todos os shards (scatter/gather).
- Índice secundário global (por termo): leitura vai a um shard, escrita toca vários, geralmente assíncrona.
Perguntas-chave
responda de cabeça, depois abraPor que rebalanceamento automático pode ser perigoso?
Um nó lento pode ser tomado como morto; mover dados aumenta a carga dele e dos outros, podendo derrubar mais nós em cascata.
O que é scatter/gather?
Enviar a consulta a todos os shards e juntar os resultados; a latência fica presa ao shard mais lento.
Por que índices globais costumam ser atualizados de forma assíncrona?
Uma escrita mexe em entradas do índice em vários shards; fazer isso de forma síncrona exigiria transação distribuída.
Exercícios de fixação
0/5 respondidas1.
Uma loja busca carros por cor. Os carros estão em shards por ID, com índice local de cor em cada shard. Como é a busca?
2.
Com índice secundário global particionado por termo, qual é o custo?
3.
Por que criar muito mais shards que nós desde o início?
4.
Quem costuma guardar de forma confiável o mapa "shard → nó"?
5.
Um nó está lento por pico de GC. O rebalanceamento automático move shards dele. Risco principal: