Uber revoluciona gestão de dados em larga escala com subclusters M3DB
Aprofundamento CEVIU
Aprofundamento
A Uber encarou um desafio significativo com seu banco de dados de séries temporais M3DB em larga escala. O algoritmo de sharding tradicional, que distribui a posse dos shards livremente entre os nós, começou a apresentar pontos fracos operacionais. Ele criava um impacto muito amplo durante falhas e exigia manutenção serializada, afetando grande parte do cluster e dificultando operações paralelas.
Para resolver isso, a empresa desenvolveu um algoritmo de alocação de subclusters. Agora, os nós são particionados em subgrupos de tamanho fixo, os subclusters, cada um com uma fatia exclusiva do espaço total de shards. Isso garante que a recuperação de falhas seja contida a um subcluster específico e permite que a automação realize manutenções em múltiplos subclusters de forma paralela, sem sobrecarga de coordenação. A previsibilidade melhora bastante, já que o conjunto de nós que interagem entre si é menor e fixo.
O que mudou
Antes, o algoritmo de sharding da Uber distribuía a posse de shards de forma livre entre todos os nós do cluster M3DB, criando dependências amplas e um raio de impacto maior em caso de falhas. Isso forçava a serialização de operações de manutenção para evitar instabilidade. Com a nova arquitetura, os nós são agrupados em subclusters auto-suficientes, cada um gerenciando um espaço de shards distinto e não-sobreposto. Essa mudança significa que as falhas são agora contidas dentro de um subcluster, e as operações de manutenção podem ser feitas em paralelo, reduzindo custos operacionais.
Outra evolução notável é a introdução do algoritmo de migração do tipo 'guloso'. O método anterior de reequilíbrio após a migração de shards gerava custos elevados por movimentar dados duas vezes. O novo algoritmo, porém, otimiza a ordem das doações de shards de antemão. Ele simula qual shard, ao ser removido, deixaria o subcluster doador mais equilibrado, minimizando o 'skew' e eliminando a necessidade de uma segunda passagem de reequilíbrio. Isso representa um ganho substancial em eficiência operacional e desempenho durante a escalabilidade.
Por que isso importa
Para engenheiros de plataforma e equipes de DevOps, a solução da Uber para o M3DB é um caso de estudo crucial em escalabilidade e confiabilidade de sistemas distribuídos. A transição para subclusters demonstra como é possível refinar a arquitetura de banco de dados para mitigar riscos, otimizar a performance em cenários de alta demanda e reduzir o custo operacional de sistemas complexos. A capacidade de isolar falhas e paralelizar manutenções em um ambiente de larga escala é um marco na engenharia de plataformas.
Este aprimoramento é fundamental para empresas com dados críticos e volumosos. Ele oferece uma abordagem robusta para manter a disponibilidade e a performance, mesmo sob pressão extrema de crescimento e falhas inesperadas. A inovação no algoritmo de alocação de shards e a migração eficiente sinalizam um caminho para gerenciar infraestruturas de dados cada vez maiores de forma mais inteligente e autônoma.
Linha do tempo
Uber Engineering descentraliza data warehouse Hive, movendo para bancos de dados menores.
Airbnb desenvolve sistema de armazenamento de métricas tolerante a falhas com <em>shuffle sharding</em>.
Stripe aprimora remediação de bancos de dados com grafos e automação de <em>sharding</em>.
turbopuffer otimiza gestão de infraestrutura de dados com <em>state machines</em> locais em clusters.
PlanetScale apresenta abordagem de backup massivamente paralelo para Postgres com design fragmentado.
Uber otimiza entrega de dados com camada de abstração, desacoplando acesso de tabelas físicas.
Uber revoluciona gestão de dados em larga escala com subclusters M3DB.
Perguntas frequentes
O que é M3DB e qual a sua função na Uber?
M3DB é um banco de dados distribuído de séries temporais desenvolvido pela Uber. Ele é usado para armazenar e gerenciar grandes volumes de métricas e dados de monitoramento, sendo essencial para a observabilidade e o desempenho de toda a infraestrutura da empresa.
Qual problema o Uber enfrentava com o algoritmo de sharding original?
Em clusters de grande porte, o sharding tradicional distribuía a posse dos shards de forma muito livre, resultando em um "raio de explosão" amplo em caso de falhas de nó. Isso significava que uma única falha poderia afetar muitos nós, além de forçar a serialização das operações de manutenção, o que limitava o paralelismo e tornava as operações mais lentas.
Como os subclusters melhoram a gestão de dados no M3DB?
Os subclusters particionam os nós em grupos menores, cada um com uma fatia dedicada do espaço de shards. Isso isola as falhas, contendo o impacto, e permite que a manutenção seja realizada em paralelo em diferentes subclusters. Essa abordagem melhora a previsibilidade do sistema e otimiza a eficiência operacional em larga escala.
O que é o algoritmo "guloso" de migração de shards e por que ele é importante?
O algoritmo "guloso" é uma estratégia para migrar shards de forma eficiente durante a escalabilidade do cluster. Ele simula a remoção de cada shard para identificar qual causaria o menor "skew" (desequilíbrio) no subcluster doador. Sua importância está em otimizar a distribuição dos shards desde o início, evitando a movimentação dupla de dados e reduzindo custos operacionais.
Fontes
- uber.comfonte original
- Categoria
- CEVIU DevOps
- Publicado
- 09 de setembro de 2026
- Editoria
- CEVIU DevOps
