Discord-Sharding: Wie große Bots ihre Server aufteilen
Sharding ist die Methode, mit der ein großer Discord-Bot seine Server auf mehrere Gateway-Verbindungen verteilt, die Shards heißen, damit keine einzelne Verbindung zu viel trägt. Discord verlangt es, sobald ein Bot in 2,500 Servern ist, und jeder Server gehört immer genau einem Shard.
Was ein Shard ist
Die Live-Verbindung eines Bots zu Discord, das Gateway, schafft nur eine begrenzte Menge an Datenverkehr. Ab einem gewissen Punkt kommt eine einzelne Verbindung mit den Ereignissen von Tausenden Servern nicht mehr mit. Discord löst das, indem ein Bot mehrere Verbindungen öffnen darf und jeder Verbindung mitteilt, welche Server sie betreut. Jede Verbindung ist ein Shard.
Wie Server zugewiesen werden
Der Shard eines Servers ergibt sich aus seiner ID, mit einer Formel, die die Guild-ID (nachdem der Zeitstempel-Teil des Snowflakes abgeschnitten wurde) durch die Anzahl der Shards teilt und den Rest behält. Ein Server landet also immer auf demselben Shard, solange sich die Shard-Anzahl nicht ändert. Direktnachrichten gehen immer an Shard 0.
Beim Verbinden sendet der Bot zwei Zahlen: seine Shard-Nummer und die Gesamtzahl der Shards. Discord schickt dann nur Ereignisse für die passenden Server.
Wann es Pflicht wird
- Unter 2,500 Servern reicht eine Verbindung.
- Bei 2,500 Servern lehnt Discord eine einzelne Verbindung ab, und der Bot muss sharden.
- Große Bots fügen Shards meist deutlich vor dem Limit hinzu, um Last und Speicher zu verteilen.
Shards können in einem Prozess oder auf getrennten Maschinen laufen. Die zweite Variante erlaubt, dass ein Shard neu startet, ohne die anderen mitzureißen.
Was es für dich bedeutet
Meist nichts. Mitglieder merken keinen Unterschied. Der praktische Effekt zeigt sich bei Ausfällen: Fällt ein Shard aus, verliert nur der Server auf diesem Shard den Bot, während die anderen weiterlaufen. Wenn dein Bot nur auf deinem Server offline ist, während andere funktionieren, deutet das eher auf ein Shard-Problem hin als auf etwas, das du geändert hast.
Sharding hängt auch mit Rate-Limits zusammen. Das gleichzeitige Starten vieler Shards ist begrenzt, deshalb startet ein großer Bot sie in Gruppen neu.
Sharding und Noxyr
Für Noxyr musst du nichts konfigurieren. Die Seite Status und Ping zeigt, ob der Bot antwortet, und die Anleitung Bot ist offline nennt, was du zuerst prüfen solltest. Wenn du lieber deine eigene Anwendung mit einer eigenen Verbindung betreiben willst, führt ein Custom Bot die Funktionen von Noxyr unter deinem Namen aus. Der Artikel über Hosting-Nodes und Verfügbarkeit erklärt, wie diese Bots am Laufen gehalten werden.
Häufige Fragen
Ab wie vielen Servern muss ein Bot sharden?
Discord verlangt Sharding ab 2,500 Servern. Viele große Bots sharden früher, um die Last zu verteilen.
Kann ein Server auf zwei Shards liegen?
Nein. Ein Server gehört immer genau einem Shard, der aus seiner ID und der Shard-Anzahl bestimmt wird.
Ändert Sharding etwas für meine Mitglieder?
Nein. Es ist ein internes Detail. Es ist nur bei Ausfällen relevant, wenn ein Shard ausfallen kann, ohne die anderen zu betreffen.