Dostępność hostowanego własnego bota Discord zależy całkowicie od infrastruktury, która za nim stoi. W przypadku Custom Bot w Noxyr jest to zestaw nodów hostingowych, które automatycznie wybierają host dla Twojego bota, sprawdzają go co kilka sekund i mogą go przenieść bez tego, że sam kiedykolwiek dotykasz serwera. Wklejasz token; niczego nie konfigurujesz, nie aktualizujesz i nie restartujesz.
Nie zarządzasz serwerem, zajmują się tym nody Noxyr
Każdy node to jeden proces, który hostuje wszystkie własne boty do niego przypisane. Co krótki cykl sprawdza, które boty powinny działać, uruchamia je, zatrzymuje te, które nie powinny, i zapisuje heartbeat, który odczytuje strona internetowa. To cała praca infrastruktury, którą w innym przypadku musiałbyś wykonać sam na VPS: utrzymać proces przy życiu, pilnować, czy nie padł, i logować się ponownie, gdy Discord rozłączy bota z przyczyny, która nie jest Twoją winą.
Jak wybierany jest host podczas konfiguracji
Automatyczny wybór jest domyślny i większość osób powinna go zostawić. Zawsze wskazuje ten node, który aktualnie ma wolne miejsce. Nody zapełniają się w ustalonej kolejności: jeden jest wykorzystywany do końca, zanim następny zacznie przyjmować nowe boty, zamiast równomiernie rozkładać obciążenie i zostawiać każdy node w połowie pusty. Ręczny wybór konkretnego hosta nadal kieruje Cię do prawdziwego, działającego noda w tle. Jeśli wybrany akurat jest offline lub pełny, używany jest najlepszy dostępny, zamiast po prostu nieudanej konfiguracji.
Co oznacza, że node jest „pełny”
Decydują dwa sprawdzenia, a nie jedno. Node przestaje przyjmować nowe boty, gdy osiągnie własny limit liczby botów, oraz osobno wtedy, gdy kolejny bot podniósłby zmierzone zużycie pamięci blisko jego górnej granicy. Drugie sprawdzenie istnieje, ponieważ sam limit liczby botów nie uwzględnia tego, że bardziej ruchliwe serwery zużywają więcej pamięci na bota niż ciche. Node, który wygląda na mający miejsce według liczby botów, może być nadal zbyt blisko wyczerpania pamięci, by bezpiecznie przyjąć kolejnego. Którykolwiek limit zostanie osiągnięty pierwszy, nowe konfiguracje automatycznie trafiają na następny node.
Przenoszenie bota na inny host
Opcja Change Node na stronie Custom Bot przenosi już działającego bota gdzie indziej. Każde przeniesienie to nowe logowanie do Discorda, a Discord ogranicza, jak często jeden bot może to robić, dlatego między przeniesieniami obowiązuje pięciominutowa przerwa. Rzeczywiste przeniesienie na chwilę restartuje bota, gdy łączy się ponownie na nowym nodzie. Twoje ustawienia, tickety, katalog i wszystko inne pozostają nietknięte, ponieważ wszystko to znajduje się we wspólnej bazie danych, a nie na nodzie, który akurat uruchamia proces.
Co się dzieje, gdy node ma problem
Jeśli heartbeat bota przestaje być aktualny, czyli node przestał otrzymywać od niego odpowiedzi, główny bot Noxyr automatycznie wkracza i ponownie obsługuje ten serwer, więc członkowie nigdy nie zostają bez żadnego bota odpowiadającego. Gdy node lub logowanie się odzyska, własny bot przy następnym sprawdzeniu sam przejmuje serwer z powrotem. W zwykłym przypadku nic z tego nie wymaga zgłoszenia do supportu; to ta sama samonaprawiająca się pętla, która uruchamia Twojego bota za pierwszym razem, gdy go konfigurujesz.
Dlaczego nody zapełniają się w ustalonej kolejności zamiast się rozkładać
Łatwo założyć, że obciążenie rozkłada się równomiernie na wszystkie nody, trochę na tym, trochę na tamtym. Noxyr robi coś odwrotnego, celowo: jeden node zapełnia się całkowicie, zanim następny przyjmie choćby jednego nowego bota. Dzięki temu w danym momencie działa tyle nodów, ile to możliwe przy bieżącym obciążeniu, zamiast lekko obciążać kilka naraz, co ma znaczenie dla efektywności wykorzystania infrastruktury. Nie wpływa to w żaden sposób na zachowanie Twojego bota; pętla synchronizacji i heartbeat działają identycznie, niezależnie od tego, który node ostatecznie go uruchamia.
Co naprawdę oznaczają liczby na panelu
Ping pokazany przy hoście to rzeczywisty pomiar, a nie zgadywanie. Każdy node okresowo mierzy czas żądania do endpointu gateway Discorda i raportuje średnią. Status online/offline noda opiera się na tym, jak niedawno ostatnio się zameldował. Node, który przez krótki czas milczał, jest traktowany jako niedostępny, zamiast zakładać, że nadal jest w porządku. To także uruchamia główny bot Noxyr, który wkracza i obsługuje serwer, na którym własny bot przestał odpowiadać.
Dostępność a płatny VPS
Własny VPS daje pełną kontrolę nad maszyną i pełną odpowiedzialność za zauważenie, kiedy przestaje działać. Hostowany własny bot wymienia tę kontrolę na to, że ktoś inny ma za zadanie zauważyć awarię jako pierwszy. Żadne z tych rozwiązań nie jest zawsze lepsze. Jeśli zastanawiasz się między nimi, zobacz pełne porównanie w artykule Własny bot kontra self-hosting na VPS.
Najczęstsze pytania
Jak sprawdzić, czy mój bot jest teraz online? Strona Custom Bot w panelu pokazuje status na żywo, a nie tylko to, czy bot jest włączony.
Czy stracę ustawienia, gdy bot przeniesie się na inny node? Nie. Ustawienia są we wspólnej bazie danych, niezależnie od tego, który proces noda akurat uruchamia bota.
Czy mogę wybrać konkretny node zamiast opcji Automatic? Tak, ale nawet jeśli wybrany jest w tym momencie pełny lub offline, konfiguracja zawsze trafi na prawdziwy, działający host.
Jak często odświeża się status w panelu? Co kilka sekund. Node, który przestaje otrzymywać odpowiedzi od Twojego bota, jest zauważany szybko, a nie po długiej przerwie.
Czy przestoje są w jakikolwiek sposób rozliczane lub karane? Nie. Nie ma w ogóle żadnej płatności, a problemy z dostępnością nic Cię nie kosztują poza tym, że bot na chwilę nie działa podczas ponownego połączenia.
Pełne wymagania konfiguracji znajdziesz w dokumentacji Custom Bot, a dokładny mechanizm wyboru noda i Change Node opisano w dokumentacji hostingu własnego bota.