Как правильно бороться с параллелизмом в рельсах с пумой? - PullRequest
0 голосов
/ 01 октября 2018

У меня есть приложение Rails, работающее на многопоточном веб-сервере Puma.С ростом числа пользователей я начинаю видеть некоторые из моих моделей с уникальной активной проверкой записи по имени пользователя, вставляемому дважды в БД с двумя одновременными вызовами в моих API.

Как это возможно?С чего мне начинать отлаживать это?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Расширяя @ ответ Андрея .. Я предлагаю вам прочитать о ActiveRecord :: Locking .Это предотвратит доступ нескольких потоков к одному ресурсу.Этот метод особенно важен, если вы работаете с финансовыми данными.

0 голосов
/ 01 октября 2018

Проверки / ограничения на уровне модели хороши, но они не гарантируют целостность данных, как вы уже испытали.Для обеспечения реальной целостности данных ваше решение only ограничено уровнем базы данных.

...