@goodlike_by

Как оптимизировать запросы к API?

Всем привет! Суть вопроса:

Есть API на Laravel.

Есть react приложение, суть которого собирать из чата в заданный промежуток времени (например 1 минуту) верные ответы пользователей и закидывать их через АПИ в БД и по истечении заданного времени, подсчитывать кол-во правильных ответов и раздавать баллы. Но так как запросов к БД очень много, получается мини ддос и сервер либо блокирует обращения к бд, либо запросы настакиваются и приходит например 10 ответов от 1 человека и 0 от второго.

Соответственно возник вопрос как это всё дело оптимизировать. Правильно ли я копаю в сторону асинхронных запросов в реакте и очереди запросов и джобы в Laravel? Или что-то еще посмотреть?

Буду очень благодарен за помощь

UDP по цифрам:

1. Время сбора ответов 30 секунд или минута
2. Пользователей от 3000 до 5000
3. Задержка между ответами для пользователей 5 секунд
4. Группа пользователей (около 100 человек), которые не имеют задержки между ответами и могут выдать в среднем около 10 ответов в секунду
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
Adamos
@Adamos
Если баллы подсчитываются только в конце, на кой писать каждый ответ? Собираем их на фронте и отправляем пачкой в конце.
Запрос на проверку в БД включает ответ пользователя? Логичнее брать из базы правильные ответы (запрос скэшируется и не будет дергать базу) и сравнивать их с ответами пользователя в скрипте, обращаясь к базе только для того, чтобы записать ответы и результат - один раз.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Использовать RabbitMQ для очереди и Redis в качестве БД.
Либо делай шардинг, если у тебя реляционная БД типа MSSQL, MySql или PostgreSql
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы