@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
Либо делай шардинг, если у тебя реляционная БД типа MSSQL, MySql или PostgreSql