Sharding de Discord: cómo los bots grandes reparten sus servidores
El sharding es la forma en que un bot grande de Discord reparte sus servidores entre varias conexiones de gateway, llamadas shards, para que ninguna conexión cargue demasiado. Discord lo exige cuando un bot está en 2,500 servidores, y cada servidor pertenece siempre a exactamente un shard.
Qué es un shard
La conexión en vivo de un bot con Discord, el gateway, solo puede manejar cierto tráfico. Pasado un punto, una sola conexión no puede seguir el ritmo de los eventos de miles de servidores. Discord lo resuelve permitiendo que un bot abra varias conexiones e indicando a cada una qué servidores le pertenecen. Cada conexión es un shard.
Cómo se asignan los servidores
El shard de un servidor sale de su ID, con una fórmula que divide el ID del guild (tras quitar la parte de marca de tiempo del snowflake) entre el número de shards y se queda con el resto. Así, un servidor siempre cae en el mismo shard, salvo que cambie el número de shards. Los mensajes directos siempre van al shard 0.
El bot envía un par de números al conectarse: su número de shard y el total de shards. Discord solo envía entonces los eventos de los servidores que coinciden.
Cuándo se vuelve obligatorio
- Con menos de 2,500 servidores: una conexión basta.
- Con 2,500 servidores: Discord rechaza una sola conexión y el bot debe usar sharding.
- Los bots grandes suelen añadir shards mucho antes del límite, para repartir la carga y la memoria.
Los shards pueden ejecutarse en un mismo proceso o en máquinas separadas. La segunda opción permite reiniciar un shard sin tumbar a los demás.
Qué significa para ti
Casi nada. Los miembros no notan diferencia. El efecto práctico aparece en las caídas: si un shard se desconecta, solo los servidores de ese shard pierden el bot, mientras los demás siguen funcionando. Si tu bot está fuera de línea solo en tu servidor mientras funciona en otros, es una pista de un problema de shard y no algo que hayas cambiado tú.
El sharding también interactúa con los límites de frecuencia. Iniciar muchos shards a la vez tiene límite, así que un bot grande los reinicia por lotes.
Sharding y Noxyr
No necesitas configurar nada para Noxyr. La página de estado y ping muestra si el bot responde, y la guía de bot fuera de línea enumera lo que conviene revisar primero. Si prefieres ejecutar tu propia aplicación con su propia conexión, un bot personalizado ejecuta las funciones de Noxyr con tu nombre, y el artículo sobre nodos de alojamiento y disponibilidad explica cómo se mantienen en marcha esos bots.
Preguntas frecuentes
¿A cuántos servidores debe usar sharding un bot?
Discord exige sharding a partir de 2,500 servidores. Muchos bots grandes lo activan antes para repartir la carga.
¿Un servidor puede estar en dos shards?
No. Un servidor siempre pertenece a exactamente un shard, elegido a partir de su ID y del número de shards.
¿El sharding cambia algo para mis miembros?
No. Es un detalle interno. Solo importa durante las caídas, cuando un shard puede fallar sin afectar a los demás.