Sharding na Discordu: jak velcí boti rozdělují své servery
Sharding je způsob, jak velký bot na Discordu rozdělí své servery mezi několik připojení k bráně, nazývaných shardy, aby žádné jednotlivé připojení neneslo příliš mnoho. Discord jej vyžaduje, jakmile je bot na 2 500 serverech, a každý server patří vždy přesně jednomu shardu.
Co je shard
Živé připojení bota k Discordu, brána, zvládne jen omezený objem provozu. Od určité hranice jedno připojení nestačí na události z tisíců serverů. Discord to řeší tím, že bot může otevřít několik připojení a každému sdělit, které servery spravuje. Každé takové připojení je shard.
Jak se servery přiřazují
Shard pro server se odvodí z jeho ID podle vzorce, který vydělí ID guildy (po odsunutí časové části snowflake) počtem shardů a vezme zbytek po dělení. Daný server tak vždy skončí na stejném shardu, pokud se počet shardů nezmění. Přímé zprávy vždy jdou na shard 0.
Při připojení bot odešle dvě čísla: číslo svého shardu a celkový počet shardů. Discord pak posílá události jen pro odpovídající servery.
Kdy se stane vyžadovaným
- Pod 2 500 servery: jedno připojení stačí.
- Na 2 500 serverech: Discord jediné připojení odmítne a bot se musí shardovat.
- Velcí boti obvykle přidávají shardy mnohem dříve než u limitu, aby rozložili zátěž a paměť.
Shardy mohou běžet v jednom procesu nebo na samostatných strojích. Druhá možnost umožňuje restartovat jeden shard, aniž by vypadly ostatní.
Co to znamená pro vás
Většinou nic. Členové žádný rozdíl nepoznají. Praktický dopad se projeví při výpadcích: pokud jeden shard přestane být online, o bota přijdou jen servery na něm, zatímco ostatní fungují dál. Pokud je bot offline jen na vašem serveru, zatímco u ostatních funguje, je to spíš známka problému se shardem než něčeho, co jste změnili vy.
Sharding souvisí také s limity rychlosti. Spouštět mnoho shardů najednou je omezeno, takže velký bot je restartuje po dávkách.
Sharding a Noxyr
Pro Noxyr nemusíte nic nastavovat. Stránka stav a ping ukazuje, zda bot odpovídá, a průvodce offline botem uvádí, co zkontrolovat jako první. Pokud byste raději provozovali vlastní aplikaci s vlastním připojením, vlastní bot spouští funkce Noxyru pod vaším jménem a článek o hostingových uzlech a dostupnosti vysvětluje, jak se tito boti udržují v chodu.
Časté otázky
Od kolika serverů se musí bot shardovat?
Discord vyžaduje sharding od 2 500 serverů. Mnoho velkých botů se shardovat začne dříve, aby rozložili zátěž.
Může být jeden server na dvou shardech?
Ne. Server vždy patří přesně jednomu shardu, který se vybere podle jeho ID a počtu shardů.
Mění sharding něco pro mé členy?
Ne. Je to interní detail. Projeví se jen při výpadcích, kdy může jeden shard selhat, aniž by to ovlivnilo ostatní.