Комментарии 16
Главное ограничение масштабирования тгботов - лимит на количество сообщений в единицу времени.
Развертывание нескольких экземпляров бота: Это может быть выполнено с помощью контейнеризации (например, Docker) и оркестрации (например, Kubernetes), что облегчает развертывание и управление множеством экземпляров.
Как это реализовано в aiogram?
Вангую, НИ КАК!!!! апи телеги 1 на всех.
Это не так. Распределение запросов в адрес Telegram Bot API происходит через шардирование (определённые боты ходят на определённые серверы). При необходимости вы можете самостоятельно развернуть такой сервер у себя.
просветите плз, какой лимит на количество сообщений в единицу времени у тг?
конкретно в aiogram это нереализовано, но можно это реализовать с помощью Docker Compose
об этом и других способах писал здесь https://habr.com/ru/companies/otus/articles/760890/
Вопросы сходу:
Весь ваш код не рабочий, т.к.
pip install aiogram
установит третью версию aiogram, а ваш код заточен под вторую версию. Третья и вторая версия имеют разную архитектуру и не имеют обратной совместимости."Модульная Архитектура" теперь реализована с помощью роутеров, ваш подход неоптимален.
В распределенной архитектуре Телеграм‑бота используются несколько серверов или экземпляров бота для распределения нагрузки.
Как вы предлагаете запустить несколько экземпляров одного бота? Попытка запустить второй экземпляр бота приводит к "Terminated by other getupdates request; make sure that only one bot instance is running"Хотя интеграция с ELK Stack (Elasticsearch, Logstash, Kibana) на уровне кода может быть сложной
. В чём сложность логгировать в json?В разделе "Оптимизация взаимодействия с БД" вы предлагаете выполнять подключение к БД при вызове бизнес-функции. Вы серьёзно?? Подключение - одна из самых затратных операций. Куда правильней на уровне мидлвири добавлять сессию в update, а подключение выполнять при инициализации бота.
Развертывание нескольких экземпляров бота: Это может быть выполнено с помощью контейнеризации (например, Docker) и оркестрации (например, Kubernetes)
- ещё раз спрошу, как вы собрались запустить несколько экземпляров одного бота?
Проблема создания нескольких инстансов не разрешается реализацией через webhook?
Для развёртывания нескольких экземпляров бота нужно использовать вебхуки. В статье, к сожалению, этого не описано.
А это разве должно помочь? На один бот вешается один вебхук, а количество юзеров может быть любым
А как это поможет?
Ну Ок, поставили мы обратный прокси, в который телега кидает апдейты и они раскидываются по очередям, экземплярам итд. А что потом? Потом надо отвечать обратно в телегу. И там куча ограничений от самой телеги.
API не позволит отправлять более 30 сообщений в секунду.
Бот не сможет отправлять в одну и ту же группу более 20 сообщений в минуту.
Отправляя сообщения внутри определенного чата, избегайте отправки более одного сообщения в секунду.
Как это помогут обойти вебхуки?
Другой случай - одна программа и несколько токенов бота на одном компьютере. Я это сделал через systemd-запускаю сервис с параметром. А программа анализирует параметр и выбирает токен бота который надо запустить
Масштабирование телеграм-ботов на примере aiogram