Sharding di Discord: come i bot grandi dividono i propri server
Lo sharding è il modo in cui un grande bot Discord divide i propri server su più connessioni gateway, chiamate shard, così che nessuna connessione ne gestisca troppi. Discord lo richiede quando un bot è in 2,500 server, e ogni server appartiene sempre a esattamente uno shard.
Cos'è uno shard
La connessione dal vivo di un bot a Discord, il gateway, può gestire solo un certo traffico. Oltre un certo punto, una sola connessione non riesce a stare al passo con gli eventi di migliaia di server. Discord risolve il problema lasciando che un bot apra più connessioni e dicendo a ciascuna quali server possiede. Ogni connessione è uno shard.
Come vengono assegnati i server
Lo shard di un server deriva dal suo ID, con una formula che divide l'ID della guild (dopo aver tolto la parte temporale dello snowflake) per il numero di shard e tiene il resto. Quindi un dato server finisce sempre sullo stesso shard finché non cambia il numero di shard. I messaggi diretti vanno sempre allo shard 0.
Quando si connette, il bot invia una coppia di numeri: il proprio numero di shard e il numero totale di shard. Discord poi invia eventi solo per i server che corrispondono.
Quando diventa obbligatorio
- Sotto i 2,500 server: una connessione basta.
- A 2,500 server: Discord rifiuta una connessione singola e il bot deve usare lo sharding.
- I bot grandi di solito aggiungono shard ben prima del limite, per distribuire carico e memoria.
Gli shard possono girare in un unico processo o su macchine separate. La seconda opzione permette a uno shard di riavviarsi senza fermare gli altri.
Cosa significa per te
Quasi nulla. I membri non notano differenze. L'effetto pratico si vede durante le interruzioni: se uno shard va offline, solo i server su di esso perdono il bot, mentre gli altri continuano a funzionare. Se il bot è offline solo nel tuo server mentre gli altri vanno bene, è un indizio di un problema di shard e non di qualcosa che hai cambiato tu.
Lo sharding interagisce anche con i rate limit. Avviare molti shard insieme è limitato, quindi un bot grande li riavvia a gruppi.
Sharding e Noxyr
Per Noxyr non devi configurare nulla. La pagina stato e ping mostra se il bot risponde, e la guida al bot offline elenca cosa controllare per primo. Se preferisci far girare la tua applicazione con una connessione propria, un bot personalizzato esegue le funzioni di Noxyr con il tuo nome, e l'articolo su nodi di hosting e uptime spiega come questi bot restano attivi.
Domande frequenti
A quanti server un bot deve usare lo sharding?
Discord lo richiede a 2,500 server. Molti bot grandi usano lo sharding prima, per distribuire il carico.
Un server può stare su due shard?
No. Un server appartiene sempre a esattamente uno shard, scelto in base al suo ID e al numero di shard.
Lo sharding cambia qualcosa per i miei membri?
No. È un dettaglio interno. Conta solo durante le interruzioni, quando uno shard può fermarsi senza influire sugli altri.