Pular para o conteúdo

Design clássico · Pleno

Perguntas e respostas (Quora)

Projeto de entrevista clássico. Pontos centrais: ranking de respostas e fan-out de feed.

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

Resposta curta

Projeto de entrevista clássico. Pontos centrais: ranking de respostas e fan-out de feed. O Quora é uma plataforma social de perguntas e respostas. O curso de origem o contrasta com os buscadores: enquanto estes priorizam a velocidade, o Quora prioriza a profundidade e a conversa.

01 · CONTEXTO

Profundidade em vez de velocidade

O Quora é uma plataforma social de perguntas e respostas. O curso de origem o contrasta com os buscadores: enquanto estes priorizam a velocidade, o Quora prioriza a profundidade e a conversa.

Onde um buscador pode chegar a um beco sem saída por falta de conteúdo, a comunidade pode gerar novas respostas sob demanda. Segundo o curso, a plataforma atende centenas de milhões de usuários ativos por mês, que geram milhares de perguntas por dia em centenas de milhares de tópicos.

O curso informa que o capítulo se inspira no blog de engenharia do Quora; este artigo descreve o desenho proposto pelo curso.

02 · REQUISITOS

O que o sistema precisa fazer

Os requisitos funcionais do curso são cinco: publicar perguntas e respostas com texto, imagens e vídeos; votar a favor, votar contra e comentar respostas; buscar perguntas existentes; receber um feed personalizado pelos interesses do usuário; e ver as respostas ordenadas por utilidade, com o conteúdo de maior qualidade primeiro.

Requisito não funcionalO que o curso pede
EscalabilidadeCrescer em usuários e funcionalidades sem degradar o desempenho
ConsistênciaConteúdo consistente entre as telas, aceitando que novas publicações e comentários propaguem com pequeno atraso (consistência eventual)
DisponibilidadePermanecer disponível sob muitas requisições concorrentes
DesempenhoBaixa latência para uma experiência fluida

A estimativa de recursos parte de um bilhão de usuários, dos quais 300 milhões ativos por dia. Considera-se que 15% das perguntas contêm uma imagem e 5% contêm um vídeo, com imagens de 250 KB e vídeos de 5 MB.

03 · DESENHO INICIAL

Camadas web e de aplicação, dois armazéns

No desenho inicial, os servidores web aceitam as requisições HTTP e as repassam aos servidores de aplicação. Eles rodam processos gerentes que delegam o trabalho a processos trabalhadores, por meio de uma camada de roteamento; essa camada administra filas de tarefas, nas quais os gerentes enfileiram e os trabalhadores retiram tarefas para executar.

  1. O usuário envia uma requisição HTTP; os servidores web a aceitam e a repassam aos servidores de aplicação.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores webaceita HTTP
    QFilas de tarefas em memória
    CPServidores de aplicação
    DBMySQL
    DBHBase
  2. Um processo gerente, nos servidores web, enfileira a tarefa na camada de roteamento.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memóriatarefa na fila
    CPServidores de aplicação
    DBMySQL
    DBHBase
  3. Os processos trabalhadores, nos servidores de aplicação, retiram as tarefas da fila para executá-las.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memória
    CPServidores de aplicaçãotrabalhador
    DBMySQL
    DBHBase
  4. Perguntas, respostas, comentários e votos são dados críticos que exigem alta consistência e ficam no MySQL.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memória
    CPServidores de aplicação
    DBMySQLdados críticos
    DBHBase
  5. Contagem de visualizações, pontuações de ranking e atributos para recomendação são dados de alta vazão e ficam no HBase.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memória
    CPServidores de aplicação
    DBMySQL
    DBHBasealta vazão
ArmazémTipoO que guarda
MySQLBanco relacionalDados críticos que exigem alta consistência: perguntas, respostas, comentários e votos
HBaseNoSQLDados de alta vazão: contagem de visualizações, pontuações de ranking e atributos extraídos para recomendação

O requisito de ranking tem duas pontas no material: o requisito (respostas ordenadas por utilidade) e o dado (pontuações de ranking no HBase). Como a pontuação é calculada não é detalhado neste artigo.

04 · LIMITES

Onde o desenho inicial falha

O próprio curso aponta limites do desenho inicial. Primeiro, para processar uma requisição, cargas de dados trafegam entre servidores web e de aplicação, o que acrescenta latência de E/S de rede.

Segundo, as filas de prioridade em memória são um ponto único de falha: se uma fila cai ou seu processo termina de forma inesperada, as tarefas enfileiradas podem ser descartadas e exigir reprocessamento manual. Replicar essas filas aumenta o uso de memória.

  1. Para processar uma requisição, cargas de dados trafegam entre servidores web e de aplicação, o que acrescenta latência de E/S de rede.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores websalto de rede
    QFilas de tarefas em memória
    CPServidores de aplicaçãosalto de rede
    DBMySQL
    DBHBase
  2. As filas de prioridade em memória são um ponto único de falha.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memóriaponto único de falha
    CPServidores de aplicação
    DBMySQL
    DBHBase
  3. Se uma fila cai ou seu processo termina de forma inesperada, as tarefas enfileiradas podem ser descartadas e exigir reprocessamento manual.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memóriatarefas podem se perder
    CPServidores de aplicação
    DBMySQL
    DBHBase
  4. Replicar as filas em memória aumenta o uso de memória.

    Diagrama da arquitetura: Desenho inicial de perguntas e respostas
    CLUsuário
    CPServidores web
    QFilas de tarefas em memóriareplicar custa memória
    CPServidores de aplicação
    DBMySQL
    DBHBase

05 · DESENHO FINAL

As correções propostas pelo curso

A resposta do curso combina três mudanças: a fragmentação vertical do MySQL, a troca do HBase, tratado como de alta latência, pelo MyRocks e o uso do Kafka no processamento assíncrono de tarefas.

  1. As requisições chegam a hosts de serviço potentes e homogêneos, que cuidam de cache em memória, filas e roteamento.

    Diagrama da arquitetura: Desenho final de perguntas e respostas
    CLUsuário
    CPHosts de serviçocache, filas e roteamento
    DBMySQL (fragmento A)
    DBMySQL (fragmento B)
    DBMyRocks
    QKafka
    CPProcessos trabalhadores
  2. O MySQL passa a usar fragmentação vertical, que distribui a carga entre servidores MySQL.

    Diagrama da arquitetura: Desenho final de perguntas e respostas
    CLUsuário
    CPHosts de serviço
    DBMySQL (fragmento A)fragmento vertical
    DBMySQL (fragmento B)fragmento vertical
    DBMyRocks
    QKafka
    CPProcessos trabalhadores
  3. O MyRocks entra no lugar do HBase, descrito como de alta latência, para os dados de alta vazão.

    Diagrama da arquitetura: Desenho final de perguntas e respostas
    CLUsuário
    CPHosts de serviço
    DBMySQL (fragmento A)
    DBMySQL (fragmento B)
    DBMyRocksno lugar do HBase
    QKafka
    CPProcessos trabalhadores
  4. O Kafka passa a ser o meio do processamento assíncrono de tarefas.

    Diagrama da arquitetura: Desenho final de perguntas e respostas
    CLUsuário
    CPHosts de serviço
    DBMySQL (fragmento A)
    DBMySQL (fragmento B)
    DBMyRocks
    QKafkatarefas assíncronas
    CPProcessos trabalhadores
PeçaDesenho inicialDesenho final
Tarefas em segundo planoFilas de prioridade em memóriaKafka
Dados de alta vazãoHBaseMyRocks
Dados críticosMySQLMySQL com fragmentação vertical

06 · AVALIAÇÃO

Escala, consistência e recuperação

Na avaliação, o curso descreve o uso de instâncias Amazon EC2 com 32 núcleos, cache compartilhado de 20 MB e alta vazão de rede. Esses hosts potentes cuidam de cache em memória, filas e roteamento, e a uniformidade deles simplifica a escala horizontal. Para o banco, a fragmentação vertical distribui a carga entre servidores MySQL.

A avaliação também trata de modelos de consistência variados, que atendem a necessidades de dados específicas, e de recuperação de desastres, com backups remotos e estratégias de restauração para garantir a durabilidade do sistema.

Perguntas frequentes

O que é Perguntas e respostas (Quora)?

Projeto de entrevista clássico. Pontos centrais: ranking de respostas e fan-out de feed.

O que o design de Perguntas e respostas (Quora) cobre?

Ele está organizado nestas seções: Profundidade em vez de velocidade, O que o sistema precisa fazer, Camadas web e de aplicação, dois armazéns, Onde o desenho inicial falha, As correções propostas pelo curso e Escala, consistência e recuperação.

Quanto tempo leva Perguntas e respostas (Quora) e qual é o nível?

Leva cerca de 14 minutos para ler e tem nível Pleno.

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.