Ugrás a tartalomra

Megoldások · Botok

VPS Telegram-bothoz

Egy bot tétlenül száz megabájt alatt fogyaszt, és ideje nagy részében vár, így szinte soha nem a gép a szűk keresztmetszet: a(z) U1-1 havi $6.90 áron megfelelően futtat egyet. Ami valóban eldönti a számlát, az a média, és az, hogy saját Bot API szervert futtat-e. Mindkettő számítás kérdése, és mindkettő lent található.

A döntés mögötti döntés

Webhook vagy long polling

Ez dönti el, nem a csomag, hogy botjának kell-e domain, tanúsítvány és nyitott port.

Long polling

A bot kifelé kapcsolódik a Telegramhoz, és frissítésekre vár. Nem kell domain, TLS-tanúsítvány vagy az internet felé nyitott port, NAT mögött is működik. Ez a leggyorsabb módja, hogy valami működjön, és a legtöbb bothoz tartósan is tökéletes megoldás.

Webhook

A Telegram csatlakozik Önhöz. Nyilvános cím, érvényes tanúsítvány és nyitott port kell hozzá (ezekre bármelyik itteni csomag képes), cserébe nincs lekérdezési ciklus, és valós terhelés mellett jobban skálázódik. Akkor váltson, amikor a terhelés vagy a késleltetés indokolja, nem előbb.

A számítás

Hány botot bír el valójában egy csomag

Botok = (RAM − 300 MB operációs rendszer) ÷ egy bot memóriaigénye. A két oszlop egy állapotmentes parancsbot, illetve egy ORM-et, ütemezőt és gyorsítótárat használó bot.

Botfolyamat-kapacitás és havi adatforgalmi keret csomagonként, aktuális árakkal
CsomagRAMKönnyű botokNehéz botokAdatforgalomÁrÜzembe helyezés
U1-1Egy bot, bármekkora közönséggel1 GB124Unmetered$6.90Üzembe helyezés
C1-1-25Egy bot, mért forgalommal, de olcsón1 GB1241 TB$9.90Üzembe helyezés
GL2-4Több bot, vagy egy bot adatbázissal4 GB6325Unmetered$11.90Üzembe helyezés
BD-8Saját üzemeltetésű Bot API szerver8 GB1315232 TB$12.90Üzembe helyezés

A bot felhasználóinak száma nem szerepel ebben a számításban, mert a problémában sem: a Telegram egyenként adja át a frissítéseket a folyamatnak, nem nyit felhasználónként kapcsolatot. A választ az változtatja meg, amilyen állapotot Ön maga tárol: egy nagy gyorsítótár, egy folyamaton belüli adatbázis, egy modell.

A szám, amely a számlát eldönti

Média, nem memória

Átlagos fájlméret × napi üzenetek × 30. Mindkét irány számít: a fogadott fájl is forgalom.

Havi adatforgalom üzenettípusonként napi száz, ötezer és ötvenezer üzenet esetén
Amit a bot mozgat100/nap5,000/nap50,000/nap
Csak szövegEgy parancs és egy válasz. Gyakorlatilag ingyenes.< 1 GB< 1 GB3 GB
FotókEgy tömörített kép, elküldve és fogadva.< 1 GB44 GB439 GB
Hangüzenetek és rövid videókEgy közösségi bot szokásos terhelése.9 GB439 GB4.3 TB
Dokumentumok és hosszú videókA Telegram saját letöltési felső határa egy egyszerű bot esetén.59 GB2.9 TB28.6 TB

Az egyetlen dolog, ami a gépet megváltoztatja

A nyilvános Bot API-t használó bot legfeljebb 20 MB-os fájlokat tölthet le és 50 MB-osakat tölthet fel (ezek a Telegram korlátai, nem a mieink), és a fájlok soha nem érintik a lemezét. Ha saját Bot API szervert futtat, a felső határ 2 GB lesz, és minden fájl a szerverére kerül. Ettől a ponttól a lemez és az adatforgalom már nem mellékes: a(z) BD-8 100 GB SSD tárhelyet és 32 TB adatforgalmat ad $12.90 áron, ami ehhez illik. Ha nem ezt csinálja, ne fizessen érte.

Őszintén

Amit mi ténylegesen vennénk

Mi magunk is futtatunk Telegram-botot. Ezt a gépet választanánk hozzá.

Egy bothoz

U1-1 · $6.90/hó

1 mag, 1 GB, 15 GB SSD, és nincs forgalommérés, így egy váratlanul médiát mozgató bot sem okozhat váratlan számlát. Tegye a botot systemd alá Restart=always beállítással, és onnantól csak a saját kódja miatt állhat le. Ha kinövi, a bot költöztetése egy könyvtár és egy token átmásolása.

Kérdések

Amit vásárlás előtt kérdezni szoktak.

Mennyi RAM kell egy Telegram-botnak?
Sokkal kevesebbet, mint amennyit általában eladnak. A bot hosszan futó folyamat, amely ideje szinte egészében vár: egy állapotmentes parancsbot kb. 60 MB-ot használ, egy ORM-et, ütemezőt és gyorsítótárat használó pedig inkább 150 MB-ot. Miután az operációs rendszer elveszi a nagyjából 300 MB-ját, egy 1 GB-os gépen még 4 nehéz vagy 12 könnyű botnak marad hely. A FELHASZNÁLÓK száma alig számít, mert a Telegram egyenként juttatja el a frissítéseket a folyamathoz, nem felhasználónként egy kapcsolattal. Ami megváltoztatja a választ, az az Ön által memóriában tartott állapot: egy nagy gyorsítótár, egy folyamaton belüli adatbázis, egy modell.
Webhook vagy long polling?
Kezdésnek long polling, webhook, amikor számít. Long pollingnál a bot kimenő kapcsolatot nyit a Telegram felé, és vár: nincs szüksége domainre, tanúsítványra vagy nyitott portra, így NAT mögött is működik, és ez a leggyorsabb módja annak, hogy valami elinduljon. Webhooknál a Telegram csatlakozik ÖNHÖZ, így nyilvános cím, érvényes TLS-tanúsítvány és az internet felé nyitott port kell, cserébe teljesen megszűnik a lekérdezési ciklus, és jobban skálázódik, ha a bot valóban terhelt. Mindkettő jól fut az itteni legkisebb gépen is. A váltás őszinte oka a terhelés vagy a késleltetés, nem a divat.
Mekkorák a fájlméret-korlátok?
A Telegram saját korlátai, nem a miénk: a nyilvános Bot API-t használó bot legfeljebb 20 MB-os fájlokat tölthet le és 50 MB-osat tölthet fel. Saját Bot API szerver futtatásával ez 2 GB-ra nő, és ami fontosabb, a fájlok a szervere lemezére kerülnek, nem a Telegramén haladnak át. Ez az egyetlen változás, amely valóban befolyásolja, milyen gépre van szüksége: hirtelen számít a lemez és az adatforgalom, ezért a fenti táblázat ehhez a sorhoz rendeli a(z) BD-8 csomagot, a többihez nem.
Elfogy a sávszélesség?
Szöveges bot soha. Médiabot talán, és megér harminc másodpercnyi számolást: átlagos fájlméret × napi üzenetek × 30. Napi ötvenezer 3 MB-os hangüzenet havonta kb. 4.3 TB, ami a legtöbb olcsó csomag keretét meghaladja, de messze elmarad a(z) BD-8 32 TB-jától, vagy az Unmetered termékvonaltól, ahol a kérdés fel sem merül. Mindkét irány számít: a bot által fogadott és küldött fájl egyaránt forgalom.
Hogyan tarthatom futásban a botot a terminál bezárása után?
Systemd unit, nem screen munkamenet. Írjon egy kis service fájlt Restart=always beállítással, engedélyezze, és a bot összeomlás és újraindítás után is visszaáll, anélkül hogy ébren kellene lennie. Ez a leggyakoribb oka annak, hogy egy bot „leáll” egy VPS-en, és ez nem tárhelyprobléma: a kézzel indított folyamat azzal az SSH-munkamenettel együtt hal meg, amely elindította. Az újraindítási szabállyal futó Docker ugyanezt elvégzi, ha inkább így csomagolná.
Futtathatok több botot egy szerveren?
Igen, és a legtöbbeknek érdemes. Mindegyik külön folyamat saját systemd unittal és saját tokennel; a gépen és igény szerint az adatbázison osztoznak, máson nem. A táblázatban szereplő számítás pontosan erre a kérdésre felel: egy 4 GB-os gép 25 nehéz botot bír el, mielőtt a memória szűk keresztmetszetté válik. Ha különböző embereknek szólnak, tartsa őket külön portokon és külön felhasználók alatt.
Melyik régióban fusson a bot?
Bárhol, ahol a felhasználói elérik, és a Telegramhoz mért késleltetése elfogadható: a bot a Telegram infrastruktúrájával kommunikál, nem közvetlenül a felhasználóival, így a szokásos „legyen közel a közönséghez” szabály itt kevésbé fontos, mint egy weboldalnál. Ha a bot webes irányítópultot vagy API-t is kiszolgál ugyanezeknek a felhasználóknak, ahhoz igazítsa a régiót. Ha bizonytalan, helyezzen üzembe óránkénti díjazással két régióban, mérjen, és törölje azt, amelyik rosszabbul teljesít: óránként $0.0113 mellett ez olcsó kísérlet.