Sharding Discorda: jak duże boty dzielą swoje serwery
Sharding to sposób, w jaki duży bot Discord rozdziela swoje serwery na kilka połączeń gateway, zwanych shardami, aby żadne pojedyncze połączenie nie niosło zbyt wielu. Discord wymaga go, gdy bot znajduje się na 2500 serwerach, a każdy serwer zawsze należy dokładnie do jednego shardu.
Czym jest shard
Żywe połączenie bota z Discordem, gateway, obsługuje tylko tyle ruchu. Od pewnego momentu jedno połączenie nie nadąża za zdarzeniami z tysięcy serwerów. Discord rozwiązuje to, pozwalając botowi otworzyć kilka połączeń i powiedzieć każdemu, które serwery należą do niego. Każde połączenie to shard.
Jak przydzielane są serwery
Shard dla serwera wynika z jego ID, przy użyciu wzoru, który dzieli ID guildu (po odrzuceniu części czasowej snowflake) przez liczbę shardów i zachowuje resztę. Dzięki temu dany serwer zawsze trafia na ten sam shard, o ile nie zmieni się liczba shardów. Wiadomości prywatne zawsze trafiają na shard 0.
Bot przy połączeniu wysyła parę liczb: swój numer shardu i łączną liczbę shardów. Discord wysyła wtedy zdarzenia tylko dla pasujących serwerów.
Kiedy staje się wymagany
- Poniżej 2500 serwerów: jedno połączenie wystarczy.
- Przy 2500 serwerach: Discord odrzuca pojedyncze połączenie i bot musi użyć shardingu.
- Duże boty zwykle dodają shardy na długo przed limitem, aby rozłożyć obciążenie i pamięć.
Shardy mogą działać w jednym procesie lub na osobnych maszynach. Druga opcja pozwala zrestartować jeden shard bez wyłączania pozostałych.
Co to oznacza dla ciebie
Zasadniczo nic. Członkowie nie zauważą różnicy. Praktyczny skutek widać przy awariach: jeśli jeden shard przejdzie offline, tylko serwery na nim tracą bota, a pozostałe działają dalej. Jeśli bot jest offline wyłącznie na twoim serwerze, a u innych wszystko działa, to wskazówka problemu z shardem, a nie coś, co zmieniłeś.
Sharding współdziała też z limitami żądań. Uruchamianie wielu shardów naraz jest ograniczone, więc duży bot restartuje je partiami.
Sharding a Noxyr
Dla Noxyr nie musisz niczego konfigurować. Strona statusu i pingu pokazuje, czy bot odpowiada, a przewodnik po botach offline wymienia, co sprawdzić w pierwszej kolejności. Jeśli wolisz użyć własnej aplikacji z własnym połączeniem, własny bot uruchamia funkcje Noxyr pod twoją nazwą, a artykuł o hostingu, węzłach i dostępności wyjaśnia, jak utrzymywane są takie boty.
Częste pytania
Od ilu serwerów bot musi używać shardingu?
Discord wymaga shardingu przy 2500 serwerach. Wiele dużych botów dzieli się wcześniej, aby rozłożyć obciążenie.
Czy jeden serwer może należeć do dwóch shardów?
Nie. Serwer zawsze należy dokładnie do jednego shardu, wybranego na podstawie jego ID i liczby shardów.
Czy sharding coś zmienia dla moich członków?
Nie. To szczegół wewnętrzny. Ma znaczenie tylko podczas awarii, gdy jeden shard może zawieść, nie wpływając na inne.