Size: a a a

2020 July 24

G

Gabben in aiogram [ru]
Евгений Петров
Блэт, ещё раз: про масштабирование – это лично мой аргумент, он не написан по ссылке выше (я его даже первым привел, чтобы не было путаницы). Нет, nein, no, не-а. Как ещё-то написать?

Да, чуйка, конечно. Но основанная на ряде предположений.
На обработку событий уходит какое-то время. В идеальном мире обработка одних событий никак не влияет на другие. К сожалению, в реальности это не так. Поэтому когда у тебя много запросов, то одним из вариантов повышения отзывчивости может стать масштабирование процессов бота, скрытых за одной проксей типа nginx. Я не представляю, как это сделать на поллинге, но на вебхуках – очень просто, если твой бот не хранит в своем коде никаких состояний, а выносит их наружу
Вместо nginx твой скрипт, собирающий обновления и раздающий их каким либо способом воркерам
источник

Forevka ÐΞV... in aiogram [ru]
Евгений Петров
Блэт, ещё раз: про масштабирование – это лично мой аргумент, он не написан по ссылке выше (я его даже первым привел, чтобы не было путаницы). Нет, nein, no, не-а. Как ещё-то написать?

Да, чуйка, конечно. Но основанная на ряде предположений.
На обработку событий уходит какое-то время. В идеальном мире обработка одних событий никак не влияет на другие. К сожалению, в реальности это не так. Поэтому когда у тебя много запросов, то одним из вариантов повышения отзывчивости может стать масштабирование процессов бота, скрытых за одной проксей типа nginx. Я не представляю, как это сделать на поллинге, но на вебхуках – очень просто, если твой бот не хранит в своем коде никаких состояний, а выносит их наружу
так в поллинге тоже легко масштабировать
источник

G

Gabben in aiogram [ru]
Ну и если совсем упарываться, то за один запрос полинга ты получаешь несколько обновлений, что выгоднее, чем обрабатывать столько же соединений от вебхука
источник

ЕП

Евгений Петров... in aiogram [ru]
Forevka ÐΞV
так в поллинге тоже легко масштабировать
Расскажи, как. Вообще не представляю
источник

Forevka ÐΞV... in aiogram [ru]
Евгений Петров
Расскажи, как. Вообще не представляю
ну вот у тебя нгиникс получает апдейт и раскидывает всем инстансам
источник

Forevka ÐΞV... in aiogram [ru]
а так будет отдельное приложение на том же питоне которое будет тянуть все апдейты и раскидывать их по инстансам
источник

ЕП

Евгений Петров... in aiogram [ru]
Forevka ÐΞV
а так будет отдельное приложение на том же питоне которое будет тянуть все апдейты и раскидывать их по инстансам
Но это суть проксирование вебхуков :)
источник

Forevka ÐΞV... in aiogram [ru]
я о том что способ получения апдейтов никак не относится к масштабируемости
источник

q

quavo in aiogram [ru]
источник

Forevka ÐΞV... in aiogram [ru]
разве что при поллинге будет один большой пакет
источник

Т

Технопёс in aiogram [ru]
:DDDDD
источник

Forevka ÐΞV... in aiogram [ru]
а при хуках будет много маленьких
источник

ЕП

Евгений Петров... in aiogram [ru]
Технопёс
ты же отталкиваешься от нее разговаривая на тему масштабируемости и кол-ва юзеров
У нас есть человечки 👯. Они все лезут в бота. Когда человечков мало, то твой бот успевает всё обработать быстренько, чтобы человечки были счастливы 😊
Когда человечков становится много, то время обработки каждого апдейта может превысить скорость поступления запросов от человечков, что делает их грустными 😔 (в теории массового обслуживания это когда какое-то там значение больше единицы)

Соответственно, если ты ещё не упёрся в лимитики, но человечки уже недовольны 😔, нужно придумать какую-нибудь штуку 💡, чтобы бот быстрее обрабатывал входящие сообщения 🧠

Один из вариантов — перейти на вебхуки 🎣, потому что чуваки из телеги 🦆  говорят, что это может дать профит 🥳 при сильной нагрузке 🚛.

Развитие этой идеи — запускать несколько процессов бота, чтобы они обрабатывали апдейты параллельно. При помощи вебхуков 🎣 это можно сделать, если твои боты stateless, т.е. не содержат состояний или хранят их во внешнем хранилище 🍾. Берёшь nginx, берёшь несколько процессов бота, проксируешь запросы на эти процессы —> PROFIT 🥳

Тогда человечки будут счастливы 😊 💖
источник

ЕП

Евгений Петров... in aiogram [ru]
Да
источник

Forevka ÐΞV... in aiogram [ru]
а где-то есть пример как проксировать апдейты с нгинкса на много разных инстансов?
источник

‌‌‎lyteloli in aiogram [ru]
Евгений Петров
У нас есть человечки 👯. Они все лезут в бота. Когда человечков мало, то твой бот успевает всё обработать быстренько, чтобы человечки были счастливы 😊
Когда человечков становится много, то время обработки каждого апдейта может превысить скорость поступления запросов от человечков, что делает их грустными 😔 (в теории массового обслуживания это когда какое-то там значение больше единицы)

Соответственно, если ты ещё не упёрся в лимитики, но человечки уже недовольны 😔, нужно придумать какую-нибудь штуку 💡, чтобы бот быстрее обрабатывал входящие сообщения 🧠

Один из вариантов — перейти на вебхуки 🎣, потому что чуваки из телеги 🦆  говорят, что это может дать профит 🥳 при сильной нагрузке 🚛.

Развитие этой идеи — запускать несколько процессов бота, чтобы они обрабатывали апдейты параллельно. При помощи вебхуков 🎣 это можно сделать, если твои боты stateless, т.е. не содержат состояний или хранят их во внешнем хранилище 🍾. Берёшь nginx, берёшь несколько процессов бота, проксируешь запросы на эти процессы —> PROFIT 🥳

Тогда человечки будут счастливы 😊 💖
Но ведь у нас веб сервер на аиснке, тогда получается у него тоже свои лимиты и это будет явно не параллельно
источник

Forevka ÐΞV... in aiogram [ru]
они то прилетают на одни и тот же роут
источник

T

Tishka17 in aiogram [ru]
Forevka ÐΞV
а где-то есть пример как проксировать апдейты с нгинкса на много разных инстансов?
Почти так же как на один
источник

ЕП

Евгений Петров... in aiogram [ru]
Forevka ÐΞV
они то прилетают на одни и тот же роут
через upstream, кажется. Я когда-то давно ради прикола пробовал, но у меня боты очень нишевые, там народу мало
источник

Forevka ÐΞV... in aiogram [ru]
Tishka17
Почти так же как на один
это понятно но мне интересно что гуглить
источник