Обновите Redis и MySQL для обеспечения согласованности данных
У меня есть приложение PHP с 200+QPS. Это приложение имеет 3 конечных точки, давайте назовем их run
, succeeded
, end
, Полный цикл запроса / ответа для run
а также succeeded
должно занять менее 125 мс.
Поток: каждый из этих 200QPS отправляет запросы run
конечная точка, если все в порядке succeeded
а затем end
конечные точки.
Таким образом, чтобы соответствовать этим 125 мс для run
а также succeeded
Я плотно работаю с Redis (используя Mysql в качестве постоянного хранилища и Redis в качестве хранилища быстрых ключей / значений, обновляя Redis с помощью команды Cron или при обновлении чего-либо в Mysql через панель мониторинга).
Все работает отлично, кроме одной вещи, которую я сейчас реализую. Мне нужно реализовать какие-то бюджетные ограничения. Как это работает: в run
конечная точка Я получаю текущее значение бюджета от Redis и проверяю, больше ли это значение, чем цена, указанная в запросе, и если оно неверно или значение не существует в Redis, возвращается статус 204. Если бюджет превышает значение запроса, мы идем дальше в соответствии с потоком и на end
Конечная точка Мне нужно уменьшить бюджет и сохранить его как для Redis (для быстрого доступа), так и для MySQL. Таким образом, вопрос в том, как я могу уменьшить значение в Redis и MySql, чтобы обеспечить согласованность данных с таким количеством QPS и не сильно превышать бюджет??? Могу ли я использовать Mysql Transaction для этого, как упомянуто здесь? Или какое-то другое решение будет работать здесь?
Буду благодарен за любые советы!!!