Pular para o conteúdo

Design clássico · Staff

Servir dados a partir de vários data centers

Projeto de entrevista clássico. Pontos centrais: rede: DNS e BGP.

17 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: rede: DNS e BGP. Servir dados a partir de vários datacenters tem nome: multihoming, operar a partir de vários datacenters ao mesmo tempo. O desafio aparece na lista de perguntas adicionais de entrevista do System Design Primer e é um tema de arquitetura multi-região.

01 · CONTEXTO

Por que sair de um datacenter só

Servir dados a partir de vários datacenters tem nome: multihoming, operar a partir de vários datacenters ao mesmo tempo. O desafio aparece na lista de perguntas adicionais de entrevista do System Design Primer e é um tema de arquitetura multi-região.

Há duas razões para fazer isso. A primeira é a falha: datacenters falham por vários motivos. A segunda é o desempenho: a geolocalidade permite aproximar as operações do usuário, e estar mais perto só é possível se os dados também estão perto dele.

O resumo da palestra que serve de fonte lembra que operar em um único datacenter é fácil, e que o difícil é aceitar escritas em mais de um lugar.

  1. O ponto de partida: usuários, um balanceador, o serviço e o banco, todos no mesmo datacenter.

    Diagrama da arquitetura: Um único datacenter
    CLUsuários
    NWBalanceador
    CPServiço
    DBBanco de dadostudo no mesmo lugar
  2. Essa é a opção mais fácil de operar.

    Diagrama da arquitetura: Um único datacenter
    CLUsuários
    NWBalanceador
    CPServiçosimples de operar
    DBBanco de dados

02 · LEVAR O USUÁRIO ATÉ O DATACENTER

DNS, latência e geolocalização

A primeira decisão é como cada usuário chega a um datacenter. O DNS traduz um nome de domínio em um endereço IP, e alguns serviços de DNS conseguem rotear o tráfego por vários métodos, entre eles a latência e a geolocalização.

No roteamento por latência, o serviço de DNS descobre qual região dá a menor latência ao usuário e responde com o valor do registro dela. A própria documentação avisa que a latência real pode variar bastante dos dados da AWS quando os recursos não estão numa região da AWS.

No roteamento por geolocalização, a escolha do recurso vem de onde o usuário está. Isso funciona mapeando endereços IP a localizações, e é possível criar um registro padrão para os IPs que não têm mapeamento.

  1. O usuário pergunta ao DNS pelo nome do serviço e recebe um endereço IP.

    Diagrama da arquitetura: Roteando o usuário até um datacenter
    CLUsuários
    NWDNS com roteamentotraduz o nome
    NWBalanceador A
    CPServiço A
    NWBalanceador B
    CPServiço B
  2. Com roteamento por latência, o DNS escolhe a região de menor latência para aquele usuário e responde com o endereço dela.

    Diagrama da arquitetura: Roteando o usuário até um datacenter
    CLUsuários
    NWDNS com roteamentoescolhe a região
    NWBalanceador Aregião escolhida
    CPServiço A
    NWBalanceador B
    CPServiço B
  3. Com roteamento por geolocalização, a escolha parte de onde o usuário está.

    Diagrama da arquitetura: Roteando o usuário até um datacenter
    CLUsuários
    NWDNS com roteamentopela localização
    NWBalanceador A
    CPServiço A
    NWBalanceador B
    CPServiço B
  4. Com o endereço em mãos, o usuário fala com o balanceador da região indicada, que repassa a um serviço.

    Diagrama da arquitetura: Roteando o usuário até um datacenter
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço Aatende o usuário
    NWBalanceador B
    CPServiço B

Uma CDN faz algo parecido para conteúdo: serve de locais mais próximos do usuário.

03 · OS DADOS ENTRE DATACENTERS

As opções de replicação e o que cada uma custa

Levar o usuário até um datacenter é a parte fácil. Difícil é decidir o que acontece com os dados. O resumo da palestra lista as opções de multihoming: backups, mestre e réplica, multi-master, commit em duas fases (2PC) e Paxos. Para compará-las, vale olhar a consistência: na forte, qualquer leitura depois de uma escrita devolve o que foi escrito; na eventual, você acaba vendo o que escreveu, mas não de imediato.

No mestre único, um datacenter mestre recebe as escritas e os demais replicam dele. A replicação costuma ser assíncrona, o que traz risco de perda de dados se o mestre falhar antes de as escritas novas chegarem aos outros nós.

  1. O datacenter A tem o banco mestre; o B tem uma réplica que recebe cópias dele.

    Diagrama da arquitetura: Mestre único entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco mestremestre
    NWBalanceador B
    CPServiço B
    DBBanco réplicaréplica
  2. A replicação costuma ser assíncrona, e há risco de perda de dados se o mestre falhar antes de as escritas novas chegarem à réplica.

    Diagrama da arquitetura: Mestre único entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco mestre
    NWBalanceador B
    CPServiço B
    DBBanco réplica
  3. A geolocalização serve as leituras perto do usuário, mas as escritas continuam limitadas a um datacenter.

    Diagrama da arquitetura: Mestre único entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco mestrerecebe as escritas
    NWBalanceador B
    CPServiço B
    DBBanco réplica
  4. Se o mestre sai do ar, o failover pode ficar só leitura até o mestre ser movido para outro datacenter.

    Diagrama da arquitetura: Mestre único entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco mestremestre fora
    NWBalanceador B
    CPServiço B
    DBBanco réplicasó leitura

No multi-master, todos os datacenters servem leituras e escritas. Em troca, é preciso mesclar as escritas depois, e o melhor que se obtém é consistência eventual. Para mesclar, é preciso impor uma ordem a todas as escritas, e não há relógio global.

  1. Os dois bancos aceitam leituras e escritas locais.

    Diagrama da arquitetura: Multi-master entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco Aescreve
    NWBalanceador B
    CPServiço B
    DBBanco Bescreve
  2. As escritas de um lado são enviadas ao outro e mescladas depois; o melhor resultado possível é consistência eventual.

    Diagrama da arquitetura: Multi-master entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco A
    NWBalanceador B
    CPServiço B
    DBBanco B
  3. Mesclar exige impor uma ordem a todas as escritas, e não há relógio global.

    Diagrama da arquitetura: Multi-master entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco A
    NWBalanceador B
    CPServiço B
    DBBanco B
  4. Se um datacenter sai do ar, o failover é fácil porque o outro já aceita escritas.

    Diagrama da arquitetura: Multi-master entre datacenters
    CLUsuários
    NWDNS com roteamento
    NWBalanceador A
    CPServiço A
    DBBanco Afora do ar
    NWBalanceador B
    CPServiço B
    DBBanco Bsegue aceitando escritas

Em sistemas multi-master, a resolução de conflitos pesa mais conforme se adicionam nós de escrita e a latência cresce, e a maioria é fracamente consistente ou tem latência de escrita maior por causa da sincronização. O resumo ainda diz que usar mais de dois datacenters é fundamentalmente mais difícil.

ConsistênciaCusto apontado
BackupsGeralmente fracaPerde-se o que foi gravado desde o último backup
Mestre e réplicaFraca ou eventual, salvo muito cuidadoReplicação assíncrona, boa para latência e vazão
Multi-masterEventual, no melhor casoEscritas precisam ser mescladas depois
Commit em duas fases (2PC)ForteLatência alta pela coordenação extra

No commit em duas fases, grava-se em todos os datacenters ou em nenhum, com consistência forte e transações. O preço é que as transações passam serializadas por um coordenador. O Paxos é totalmente distribuído, ao contrário do commit em duas fases, e basta a maioria dos nós concordar para considerar um dado persistido; mesmo assim, as escritas têm latência alta pelas rodadas extras de coordenação.

04 · UMA DECISÃO REAL

O que o Google App Engine escolheu, segundo a palestra

O resumo de que partimos descreve uma palestra de Ryan Barrett, líder do datastore do Google App Engine, na conferência Google I/O de 2009. Os números abaixo são os do resumo, da época, e não valores atuais.

A meta central era um modelo de consistência forte para quem programa. Além disso, o App Engine queria sobreviver a falhas de datacenter e ter desempenho de escrita não muito distante do de um banco relacional típico.

Com essas metas, o 2PC nunca foi considerado a sério porque a vazão de escrita era muito importante; as escritas poderiam ficar na casa dos duzentos milissegundos. O Paxos também ficou de fora: o resumo diz que não queriam pagar o custo de cerca de cento e cinquenta milissegundos nas escritas.

A escolha foi mestre e réplica entre datacenters: multihoming de verdade adiciona latência pelo salto extra entre datacenters, e mestre e réplica dá a maior parte dos benefícios das formas melhores, mantendo escritas de menor latência. Na época, o datastore usava esse mecanismo, com escritas entre trinta e quarenta milissegundos.

05 · NA ENTREVISTA

Como organizar a resposta

Uma resposta forte separa três perguntas. Primeiro, como o usuário chega a um datacenter, o que é uma decisão de roteamento. Segundo, onde as escritas são aceitas, o que define a consistência possível. Terceiro, o que acontece quando um datacenter cai, o que mostra o custo real da escolha anterior.

Quem escolhe mestre e réplica deve falar da janela de perda de dados e do modo só leitura no failover. Quem escolhe multi-master deve falar de como as escritas conflitantes são ordenadas e mescladas. Quem escolhe consenso ou commit em duas fases deve falar do preço em latência.

Perguntas frequentes

O que é Servir dados a partir de vários data centers?

Projeto de entrevista clássico. Pontos centrais: rede: DNS e BGP.

O que o design de Servir dados a partir de vários data centers cobre?

Ele está organizado nestas seções: Por que sair de um datacenter só, DNS, latência e geolocalização, As opções de replicação e o que cada uma custa, O que o Google App Engine escolheu, segundo a palestra e Como organizar a resposta.

Quanto tempo leva Servir dados a partir de vários data centers e qual é o nível?

Leva cerca de 17 minutos para ler e tem nível Staff.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.