Pular para o conteúdo

Design clássico · Pleno

Xadrez online (matchmaking e estado em tempo real)

Projeto de entrevista clássico. Pontos centrais: WebSocket e presença e matchmaking por rating.

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

Resposta curta

Projeto de entrevista clássico. Pontos centrais: WebSocket e presença e matchmaking por rating. Uma plataforma de xadrez online faz três coisas: encontra um oponente de nível parecido, hospeda uma partida em tempo real com um relógio para cada jogador e mantém um ranking global de notas. Isso envolve comunicação em tempo real entre navegador e servidor.

01 · CONTEXTO

O que uma plataforma de xadrez precisa fazer

Uma plataforma de xadrez online faz três coisas: encontra um oponente de nível parecido, hospeda uma partida em tempo real com um relógio para cada jogador e mantém um ranking global de notas. Isso envolve comunicação em tempo real entre navegador e servidor.

O ponto que organiza o desenho aparece logo no enunciado da fonte: o servidor valida todo lance e é dono dos dois relógios, de modo que o jogador não pode dizer que um lance ilegal é válido nem que ainda tem mais tempo.

02 · REQUISITOS E ESCALA

Um formato só e números de referência

O enunciado fixa um único formato, o blitz de três minutos: cada jogador tem três minutos no total e o relógio dele só corre no próprio turno. Com isso, todas as partidas seguem as mesmas regras de matchmaking e de relógio.

Os requisitos centrais são três: achar um oponente por matchmaking baseado em nível e iniciar a partida; jogar em tempo real; e ver o ranking global e a própria posição, com atualização pouco depois de cada partida terminar.

A escala de referência é de 10 milhões de jogadores registrados e 500 mil partidas simultâneas no pico. Como cada partida tem dois jogadores, cada um em sua conexão, são 1 milhão de conexões simultâneas, além da capacidade de validar cada lance e rodar dois relógios por partida.

03 · DESENHO BASE

Primeiro, uma partida só

A fonte propõe construir primeiro uma única partida e só depois atacar, nos aprofundamentos, as partes que ficam difíceis em escala. Este diagrama didático segue essa ordem.

  1. O navegador envia cada lance ao servidor de partida. O desenho tem um único servidor para focar no fluxo de uma partida.

    Diagrama da arquitetura: Xadrez online: uma partida
    CLNavegador do jogador
    CPServidor de partida
    DBBanco de jogadores e partidas
  2. O servidor de partida valida o lance e é dono dos dois relógios: o jogador não pode afirmar que um lance ilegal é válido nem que tem mais tempo.

    Diagrama da arquitetura: Xadrez online: uma partida
    CLNavegador do jogador
    CPServidor de partidaautoridade
    DBBanco de jogadores e partidas
  3. O relógio de cada jogador corre só durante o turno dele, e quem o controla é o servidor, não o navegador.

    Diagrama da arquitetura: Xadrez online: uma partida
    CLNavegador do jogador
    CPServidor de partidarelógio
    DBBanco de jogadores e partidas
  4. Ao final da partida, o servidor grava o resultado no banco, de onde saem as notas e o ranking.

    Diagrama da arquitetura: Xadrez online: uma partida
    CLNavegador do jogador
    CPServidor de partida
    DBBanco de jogadores e partidasnovo

04 · APROFUNDAMENTOS

Onde o problema fica difícil

Segundo a fonte, as partes que ficam difíceis em escala são o matchmaking, a frota de servidores de jogo, o relógio justo sob latências diferentes e a leitura rápida do ranking.

TemaPergunta que a fonte lista
MatchmakingComo impedir que um jogador seja pareado em duas partidas?
Servidores de jogoComo escalar os servidores de jogo para 500 mil partidas simultâneas?
RelógioComo manter o relógio justo apesar de latências desiguais?
RankingComo manter o ranking correto e rápido com 10 milhões de jogadores?

05 · REFERÊNCIA REAL

O que o Lichess documenta

O README do Lichess descreve parte da arquitetura. As conexões WebSocket ficam em um servidor separado, que se comunica por Redis; a lógica pura de xadrez fica em um submódulo próprio; e as partidas ficam em MongoDB, indexadas por Elasticsearch, somando mais de 12 bilhões.

  1. As conexões em tempo real passam por um balanceador e chegam a servidores só de conexão, separados da lógica de jogo, como no Lichess.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexõessó conexões
    CHRedis de mensagens
    CPServiço de matchmaking
    CPServidor de partida
    DBBanco de jogadores e partidas
    QFila de resultados
    CPAtualizador do ranking
    CHRanking em cache
  2. O servidor de conexões conversa com o resto do sistema por um canal em Redis, como descreve o README do Lichess.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexões
    CHRedis de mensagensnovo
    CPServiço de matchmaking
    CPServidor de partida
    DBBanco de jogadores e partidas
    QFila de resultados
    CPAtualizador do ranking
    CHRanking em cache
  3. O pedido de partida segue para o matchmaking, que procura um oponente de nível parecido e aciona um servidor de partida.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexões
    CHRedis de mensagens
    CPServiço de matchmaking
    CPServidor de partidanovo
    DBBanco de jogadores e partidas
    QFila de resultados
    CPAtualizador do ranking
    CHRanking em cache
  4. Durante a partida, o servidor de partida valida cada lance e controla os relógios, recebendo e devolvendo mensagens pelo canal de Redis.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexões
    CHRedis de mensagens
    CPServiço de matchmaking
    CPServidor de partidaautoridade
    DBBanco de jogadores e partidas
    QFila de resultados
    CPAtualizador do ranking
    CHRanking em cache
  5. Quando a partida termina, o resultado vai para uma fila e um consumidor atualiza as notas e o ranking, o que permite que o ranking mude pouco depois do fim das partidas.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexões
    CHRedis de mensagens
    CPServiço de matchmaking
    CPServidor de partida
    DBBanco de jogadores e partidas
    QFila de resultadosnovo
    CPAtualizador do rankingnovo
    CHRanking em cache
  6. As consultas ao ranking leem de um cache dedicado, em vez de ir ao banco a cada pedido.

    Diagrama da arquitetura: Xadrez online: plataforma completa
    CLNavegador do jogador
    NWBalanceador de conexões
    CPServidor de conexões
    CHRedis de mensagens
    CPServiço de matchmaking
    CPServidor de partida
    DBBanco de jogadores e partidas
    QFila de resultados
    CPAtualizador do ranking
    CHRanking em cacheleitura rápida

As notas no Lichess usam o método Glicko-2. A documentação também registra duas regras: partidas perdidas por lag ou desconexão não devolvem pontos, mas, quando o próprio Lichess reinicia e alguém perde no tempo por isso, a partida é abortada.

Perguntas frequentes

O que é Xadrez online (matchmaking e estado em tempo real)?

Projeto de entrevista clássico. Pontos centrais: WebSocket e presença e matchmaking por rating.

O que o design de Xadrez online (matchmaking e estado em tempo real) cobre?

Ele está organizado nestas seções: O que uma plataforma de xadrez precisa fazer, Um formato só e números de referência, Primeiro, uma partida só, Onde o problema fica difícil e O que o Lichess documenta.

Quanto tempo leva Xadrez online (matchmaking e estado em tempo real) 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.