Artigos sobre: Aplicações & Bots

Sharding: Como escalar seu bot na Square Cloud

Sharding: Como escalar seu bot de Discord na Square Cloud


Quando um bot de Discord cresce e atinge a marca de 2.500 servidores, o Discord exige que ele utilize uma técnica chamada Sharding. Mesmo antes dessa marca, o sharding pode ser uma estratégia inteligente para gerenciar recursos e evitar que uma falha em um servidor derrube a conexão do bot em todos os outros.



1. O que é Sharding?


Sharding é o processo de dividir a carga de trabalho do seu bot em várias instâncias ou "pedaços" (shards). Em vez de uma única conexão websocket lidar com todos os eventos de todos os servidores, cada shard cuida de um subconjunto específico de servidores.


Pense no Sharding como abrir várias caixas em um supermercado em vez de ter apenas um caixa atendendo uma fila de quilômetros. Isso evita gargalos de processamento e melhora a resposta do bot.



2. Por que Shardear na Square Cloud?


Hospedar um bot shardado na Square Cloud oferece vantagens estratégicas:


  • Isolamento de Erros: Se um shard encontrar um erro crítico e encerrar, os outros shards continuam operando normalmente.
  • Gerenciamento de Memória: O Node.js e o Python possuem limites de memória por processo. Dividir o bot em shards permite que você utilize melhor a RAM total do seu plano.
  • Limites do Discord: O Discord impõe um limite rígido de 2.500 servidores por shard. Sem sharding, seu bot parará de receber eventos após esse limite. Veja mais aqui.



3. Implementação Técnica


Em JavaScript (Discord.js)

O Discord.js possui um ShardingManager nativo. Você geralmente cria um arquivo shard.js para gerenciar seu arquivo principal (index.js).

const { ShardingManager } = require('discord.js');

const manager = new ShardingManager('./index.js', {
token: 'SEU_TOKEN_AQUI',
totalShards: 'auto'
});

manager.on('shardCreate', shard => console.log(`Iniciando Shard ${shard.id}`));
manager.spawn();


Em Python (Discord.py / Nextcord)

No Python, o sharding costuma ser implementado alterando a classe do bot para AutoShardedBot.


from discord.ext import commands

bot = commands.AutoShardedBot(command_prefix='!')

@bot.event
async def on_ready():
print(f'Bot online com {len(bot.shards)} shards.')

bot.run('SEU_TOKEN_AQUI')



4. Configuração na Square Cloud


Ao realizar o deploy de um bot com sharding, fique atento a dois pontos no seu squarecloud.app:


  1. MAIN: Aponte para o seu arquivo gerenciador (ex: shard.js) e não para o arquivo do bot diretamente, caso esteja usando o ShardingManager do Node.js.
  2. MEMORY: Bots shardados consomem mais memória RAM, pois cada shard é uma nova instância do bot que atende um conjunto de servidores. Certifique-se de que seu plano tenha RAM suficiente para o número de shards pretendido.



5. Cuidados ao Shardear


  • Comunicação entre Shards: Shards são processos isolados. Para trocar informações entre eles, você precisará usar métodos de broadcast da sua biblioteca.
  • Estado Global: Evite armazenar dados importantes em variáveis globais. Use um banco de dados (Redis, MongoDB, PostgreSQL) para manter informações sincronizadas entre os shards.


Atualizado em: 12/05/2026

Este artigo foi útil?

Compartilhe seu feedback

Cancelar

Obrigado!