Design clássico · Pleno
Leilão online (eBay)
Projeto de entrevista clássico. Pontos centrais: reservas e concorrência e WebSocket e presença.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: reservas e concorrência e WebSocket e presença. Um serviço de leilão online permite que usuários anunciem itens à venda e que outros usuários compitam para comprá-los. A competição acontece por lances: cada novo lance precisa superar o lance mais alto atual, até o leilão terminar, e quem tiver o maior lance leva o item.
01 · CONTEXTO
Competir por um item até o leilão acabar
Um serviço de leilão online permite que usuários anunciem itens à venda e que outros usuários compitam para comprá-los. A competição acontece por lances: cada novo lance precisa superar o lance mais alto atual, até o leilão terminar, e quem tiver o maior lance leva o item.
Este artigo usa apenas a parte pública da página de referência; o que ela mantém fechado não é afirmado aqui.
02 · REQUISITOS
Três ações e um limite de escopo
Os requisitos centrais são três. Publicar um item com preço inicial e data de término; dar lance num item, sendo o lance aceito apenas se for maior que o lance mais alto atual; e ver um leilão, incluindo o lance mais alto atual.
Ficam de fora, de forma explícita, a busca de itens, o filtro por categoria, a ordenação por preço e a consulta ao histórico de leilão de um item.
03 · FLUXO BÁSICO
O caminho de publicar, dar lance e consultar
O esboço abaixo é uma leitura própria dos três requisitos, não um desenho reproduzido da fonte: um serviço de leilões atrás de um gateway, com um banco que guarda itens e lances. Ele ainda não resolve concorrência nem tempo real; serve de base para as perguntas da próxima seção.
Quem vende envia o item com preço inicial e data de término; o pedido entra pelo gateway.
O serviço de leilões grava o item no banco, que passa a representar um leilão aberto.
Um comprador envia um lance para o item.
O serviço só aceita o lance se ele for maior que o lance mais alto atual do item.
Quem consulta o leilão recebe o item com o lance mais alto atual.
04 · APROFUNDAMENTOS
Onde o problema realmente aperta
A página lista quatro perguntas de aprofundamento: como garantir consistência forte para os lances, como tornar o sistema tolerante a falhas e durável, como exibir o lance mais alto atual em tempo real e como escalar para dez milhões de leilões simultâneos.
| Aprofundamento | Pergunta da página |
|---|---|
| Consistência dos lances | Como garantir consistência forte para os lances? |
| Falhas e durabilidade | Como tornar o sistema tolerante a falhas e durável? |
| Tempo real | Como exibir o lance mais alto atual em tempo real? |
| Escala | Como escalar para dez milhões de leilões simultâneos? |
05 · PADRÕES
Disputa e atualização ao vivo
A página classifica o problema com dois padrões: disputa por um mesmo recurso (Dealing with Contention) e atualizações em tempo real (Real-time Updates).
Para estudar a primeira, vale revisar consistência e suas garantias; para a segunda, os protocolos de comunicação, e para leituras frequentes do valor atual, os fundamentos de cache.
O segundo esboço mostra apenas uma forma possível de levar um lance aceito a quem acompanha o leilão, usando uma fila de eventos e um serviço de difusão. É uma ilustração do raciocínio do curso, não a solução da fonte.
Quem dá o lance o envia ao serviço de lances.
O serviço valida o lance contra o lance mais alto atual e grava o resultado no banco.
Para cada lance aceito, o serviço publica um evento na fila.
O serviço de difusão consome o evento sem prender a gravação do lance.
Quem acompanha o leilão recebe o novo valor sem recarregar a página.
Perguntas frequentes
O que é Leilão online (eBay)?
Projeto de entrevista clássico. Pontos centrais: reservas e concorrência e WebSocket e presença.
O que o design de Leilão online (eBay) cobre?
Ele está organizado nestas seções: Competir por um item até o leilão acabar, Três ações e um limite de escopo, O caminho de publicar, dar lance e consultar, Onde o problema realmente aperta e Disputa e atualização ao vivo.
Quanto tempo leva Leilão online (eBay) 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.