Sharding no Discord: como bots grandes dividem os seus servidores
Sharding é a forma como um bot grande do Discord divide os seus servidores entre várias conexões de gateway, chamadas shards, para que nenhuma conexão carregue demais. O Discord exige isso quando um bot está em 2.500 servidores, e cada servidor sempre pertence a exatamente um shard.
O que é um shard
A conexão ao vivo de um bot com o Discord, o gateway, só aguenta um certo volume de tráfego. Depois de certo ponto, uma única conexão não consegue acompanhar os eventos de milhares de servidores. O Discord resolve isso permitindo que um bot abra várias conexões e informe a cada uma quais servidores ela controla. Cada conexão é um shard.
Como os servidores são atribuídos
O shard de um servidor vem do ID dele, por meio de uma fórmula que divide o ID do guild (depois de remover a parte de timestamp do snowflake) pelo número de shards e fica com o resto. Assim, um servidor sempre cai no mesmo shard, a menos que a quantidade de shards mude. Mensagens diretas sempre vão para o shard 0.
Ao se conectar, o bot envia um par de números: o número do seu shard e o total de shards. O Discord então envia eventos apenas dos servidores correspondentes.
Quando passa a ser obrigatório
- Com menos de 2.500 servidores: uma conexão basta.
- Com 2.500 servidores: o Discord recusa uma conexão única e o bot precisa usar sharding.
- Bots grandes costumam adicionar shards bem antes do limite, para distribuir a carga e a memória.
Os shards podem rodar em um mesmo processo ou em máquinas separadas. A segunda opção permite reiniciar um shard sem derrubar os outros.
O que isso significa para você
Quase nada. Os membros não vão notar diferença. O efeito prático aparece em quedas: se um shard ficar offline, só os servidores dele perdem o bot, enquanto os outros continuam funcionando. Se o seu bot estiver offline só no seu servidor enquanto os demais estão bem, isso é um indício de problema de shard, e não algo que você tenha alterado.
O sharding também interage com os limites de taxa. Iniciar muitos shards ao mesmo tempo é limitado, então um bot grande os reinicia em lotes.
Sharding e Noxyr
Você não precisa configurar nada para o Noxyr. A página de status e ping mostra se o bot está respondendo, e o guia de bot offline lista o que verificar primeiro. Se você preferir rodar a sua própria aplicação com uma conexão própria, um bot personalizado executa os recursos do Noxyr com o seu nome, e o artigo sobre nós de hospedagem e uptime explica como esses bots são mantidos no ar.
Perguntas frequentes
Com quantos servidores um bot precisa usar sharding?
O Discord exige sharding com 2.500 servidores. Muitos bots grandes usam sharding antes para distribuir a carga.
Um servidor pode estar em dois shards?
Não. Um servidor sempre pertence a exatamente um shard, escolhido pelo ID dele e pelo número de shards.
O sharding muda algo para os meus membros?
Não. É um detalhe interno. Só importa durante quedas, quando um shard pode falhar sem afetar os outros.