•20:00-21:30•online

Book Club DDIA: Capítulo 7. Sharding - Parte 2

Online via Zoom
book-clubddia
Banner para Book Club DDIA: Capítulo 7. Sharding - Parte 2

Segundo encontro sobre o Capítulo 7, "Sharding". Vamos fechar o capítulo saindo de como dividir os dados para como operar um sistema shardeado.

O que vamos discutir

  • Workloads com skew e hot spots: distribuição uniforme de chaves não garante carga uniforme, como no post de uma celebridade com milhões de seguidores. Como isolar uma chave quente num shard só ou dividir as escritas com prefixos aleatórios, o custo disso na leitura e as soluções automáticas dos serviços de nuvem.
  • Rebalanceamento automático vs. manual: o automático é conveniente e permite autoscaling, mas é imprevisível, caro e, junto com detecção automática de falhas, pode causar falhas em cascata. Por que um humano no loop (ou o meio-termo de sugerir e aprovar) costuma ser mais seguro.
  • Roteamento de requisições: falar com qualquer nó, usar uma camada de roteamento ou clientes que conhecem os shards. Quem decide a atribuição dos shards, como os roteadores ficam sabendo das mudanças e o uso de serviços de coordenação (ZooKeeper, etcd), Raft embutido, config servers do MongoDB e gossip.
  • Sharding e índices secundários:
    • Índices locais: escrita em um shard só, mas leitura em todos (scatter/gather) e amplificação da latência de cauda.
    • Índices globais: leitura em um shard só, mas escritas em vários shards, com transações distribuídas ou atualização assíncrona.
  • Principais lições do capítulo: shardear só quando uma máquina não dá conta, key range vs. hash, chaves quentes, uma fonte confiável para a atribuição dos shards e o problema em aberto das escritas entre shards, que leva aos próximos capítulos sobre transações.

Próximos Eventos

•20:00-21:30•online
distributed-systems

Deep Dive - Relógios Lógicos: de Lamport a Bloom Clocks

Em sistemas distribuídos não existe um relógio global confiável. Neste deep dive, o Edward Ribeiro vai de Lamport Clocks a Bloom Clocks, passando por Vector Clocks, Hybrid Logical Clocks, Version Vectors, Dotted Version Vectors e Matrix Clocks, com exemplos do mundo real e os trade-offs de cada abordagem. É o primeiro de dois encontros. O segundo será sobre CRDTs e Operational Transformation.

Online via Zoom

Palestrantes:

  • Edward Ribeiro
•20:00-21:30•online
book-clubddia

Book Club DDIA: Capítulo 7. Sharding - Parte 1

Vamos abrir o Capítulo 7, 'Sharding': a diferença entre sharding e replicação, quando vale (ou não) dividir os dados entre vários nós, shards por tenant em sistemas multitenant e as formas de dividir dados chave-valor: key range, hash mod N (e por que é ruim), número fixo de shards, hash range e consistent hashing.

Online via Zoom