Обновите 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 для этого, как упомянуто здесь? Или какое-то другое решение будет работать здесь?

Буду благодарен за любые советы!!!

0 ответов

Другие вопросы по тегам