@ruslite

Как обработать большой поток в Webhook?

С помощью API по Webhook к нам на сервер поступают данные в JSON. Пока сервер справляется, но как поступить, если поток данных будет велик? На ум приходит:
1. Сделать балансировщик, который будет распределять запросы равномерно по серверам. И с этих серверов ставить всё в очередь (тот же RabbitMQ) и далее уже сохранять в базу.
2. Не делать балансировщик и сразу отправлять в RMQ.

Не совсем понимаю уместен ли здесь балансировщик и в какой момент он может понадобиться? В общем мне интересно как масштабировать приём и сохранение данных поступаемых по Webhook?
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
@tumbler
бекенд-разработчик на python
Зависит от ограничений времени на обработку поступающих данных. Если нужна реакция в течение N секунд, то ставить несколько бекендов за одним nginx, если жалко денег на сервера - потратить их на оптимизацию кода, обрабатывающего данные.
Если ограничений нет, то для начала можно начать с варианта №2. При этом обработка запросов распределится во времени, но только до тех пор, пока обработчикам "на другом конце RMQ" будет хватать времени в часы затишья на то, чтобы обработать сообщения, пришедшие в час пик.
Дальше придется добавлять серверы для обработки сообщений RMQ, узким местом станет часть, отвечающая за отправку сообщений в RMQ, в конце концов сам RabbitMQ.

Балансировщик (например, nginx перед uwsgi/gunicorn) в любом продакшне уместен как минимум для того, чтобы сервис не умирал от падения одного из бекенд-серверов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 60 000 до 90 000 руб.
от 70 000 до 120 000 руб.
Aleksandrov-web Александров
от 40 000 руб.
21 авг. 2018, в 11:52
70000 руб./за проект
21 авг. 2018, в 11:28
1000 руб./за проект
21 авг. 2018, в 11:24
40000 руб./за проект