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



@goodlike_by

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

Есть API на Laravel.

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

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

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

UDP по цифрам:

1. Время сбора ответов 30 секунд или минута
2. Пользователей от 3000 до 5000
3. Задержка между ответами для пользователей 5 секунд
4. Группа пользователей (около 100 человек), которые не имеют задержки между ответами и могут выдать в среднем около 10 ответов в секунду


Решения вопроса 0


Ответы на вопрос 2



@Adamos

Если баллы подсчитываются только в конце, на кой писать каждый ответ? Собираем их на фронте и отправляем пачкой в конце.
Запрос на проверку в БД включает ответ пользователя? Логичнее брать из базы правильные ответы (запрос скэшируется и не будет дергать базу) и сравнивать их с ответами пользователя в скрипте, обращаясь к базе только для того, чтобы записать ответы и результат — один раз.



@samodum

Использовать RabbitMQ для очереди и Redis в качестве БД.
Либо делай шардинг, если у тебя реляционная БД типа MSSQL, MySql или PostgreSql

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *