Sharding Discord : comment les gros bots répartissent leurs serveurs
Le sharding est la façon dont un gros bot Discord répartit ses serveurs sur plusieurs connexions de passerelle, appelées shards, afin qu'aucune connexion ne porte trop de serveurs. Discord l'exige dès qu'un bot est présent sur 2 500 serveurs, et chaque serveur appartient toujours à exactement un shard.
Ce qu'est un shard
La connexion en direct d'un bot à Discord, la passerelle, ne peut gérer qu'un certain volume de trafic. Au-delà d'un seuil, une seule connexion ne suit plus les événements de milliers de serveurs. Discord résout cela en permettant à un bot d'ouvrir plusieurs connexions et d'indiquer à chacune les serveurs dont elle s'occupe. Chaque connexion est un shard.
Comment les serveurs sont attribués
Le shard d'un serveur est calculé à partir de son identifiant, par une formule qui divise l'identifiant de guilde (après avoir décalé la partie horodatage du snowflake) par le nombre de shards, et garde le reste. Un serveur donné arrive donc toujours sur le même shard, sauf si le nombre de shards change. Les messages privés vont toujours au shard 0.
Le bot envoie une paire de nombres à la connexion : son numéro de shard et le nombre total de shards. Discord n'envoie alors que les événements des serveurs correspondants.
Quand cela devient obligatoire
- Moins de 2 500 serveurs : une seule connexion suffit.
- À 2 500 serveurs : Discord refuse une connexion unique et le bot doit se répartir en shards.
- Les gros bots ajoutent généralement des shards bien avant la limite, pour répartir la charge et la mémoire.
Les shards peuvent tourner dans un seul processus ou sur des machines séparées. La seconde option permet de redémarrer un shard sans couper les autres.
Ce que cela signifie pour vous
Presque rien. Vos membres ne verront pas de différence. L'effet pratique se voit lors des pannes : si un shard tombe hors ligne, seuls les serveurs qui s'y trouvent perdent le bot, tandis que les autres continuent de fonctionner. Si votre bot est hors ligne seulement chez vous alors qu'il fonctionne ailleurs, c'est un indice de problème de shard, et non quelque chose que vous avez modifié.
Le sharding interagit aussi avec les limitations de débit. Démarrer de nombreux shards en même temps est limité, donc un gros bot les redémarre par lots.
Sharding et Noxyr
Vous n'avez rien à configurer pour Noxyr. La page statut et latence indique si le bot répond, et le guide du bot hors ligne liste ce qu'il faut vérifier en premier. Si vous préférez faire tourner votre propre application avec sa propre connexion, un bot personnalisé fait fonctionner les fonctionnalités de Noxyr sous votre nom, et l'article sur les nœuds d'hébergement et la disponibilité explique comment ces bots restent en marche.
Questions fréquentes
À partir de combien de serveurs un bot doit-il se répartir en shards ?
Discord l'exige à partir de 2 500 serveurs. De nombreux gros bots se répartissent plus tôt pour répartir la charge.
Un serveur peut-il être sur deux shards ?
Non. Un serveur appartient toujours à exactement un shard, choisi à partir de son identifiant et du nombre de shards.
Le sharding change-t-il quelque chose pour mes membres ?
Non. C'est un détail interne. Il ne compte que lors des pannes, lorsqu'un shard peut tomber sans affecter les autres.