Задать вопрос
@goodlike_by

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

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

Есть API на Laravel.

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

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

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

UDP по цифрам:

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽