|
|
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Есть jpa метод - который обновляет значение в БД , обновление происходит через пессимистический лог записи на уровне базы данных (mysql) в методе идет вызов удаленного rest сервиса - который отвечает с sla 99.95% и его ответ мы как раз и пишем в базу и отпускаем лок. Но бывает ситуация что rest сервис долго не возвращает ответ и база считает что у нас дедлок и выбрасывает ошибку ... Как это архитектурно разрулить ( нужен пример кода!) Идея как в классических задачах типа залочили баланс с деньгами - запросили у удаленного сервиса подтверждение - получили - перевели деньги ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:25 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Нахрена тут "пессимистический лог"? Блокировка, которая зависит от какого-то удаленного сервиса это вообще за гранью. А если ещё вспомнить как фривольно MySQL лочит таблицы, то такая система умрёт уже на нескольких пользователях. Ну, что собственно вы и имеете. Просто унесите блокировку в бизнес-логику. Огородите запись от апдейтов любым другим способом: флагом, статусом, переносом в другую таблицу. Обычно в таких случаях существует таблица транзакций. Транзакции могут быть подтвержденными и не подтвержденными. У вас разве нет пластиковых карт? С резервированием\заморозкой средств никогда не сталкивались? А баланс это не запись в базе, которую нужно блокировать. Это вычисляемое знаение из всех транзакций, кешируемое для пущей производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:36 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Atum1, Ну, и вообще вы форумом ошиблись. Вам нужно базу сначала правильно спроектировать. Например: http://stackoverflow.com/a/4376221 А работа с БД из Spring/JPA, это уже другой вопрос. К проектированию БД он не относится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:38 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНахрена тут "пессимистический лог"? Блокировка, которая зависит от какого-то удаленного сервиса это вообще за гранью. А если ещё вспомнить как фривольно MySQL лочит таблицы, то такая система умрёт уже на нескольких пользователях. Ну, что собственно вы и имеете. Просто унесите блокировку в бизнес-логику. Огородите запись от апдейтов любым другим способом: флагом, статусом, переносом в другую таблицу. Обычно в таких случаях существует таблица транзакций. Транзакции могут быть подтвержденными и не подтвержденными. У вас разве нет пластиковых карт? С резервированием\заморозкой средств никогда не сталкивались? А баланс это не запись в базе, которую нужно блокировать. Это вычисляемое знаение из всех транзакций, кешируемое для пущей производительности. ДА ,спасибо . все верно расписали - одно но это не продакшен решение - это тестовая песочница . и там ненужно до этого момента было городить кучу банковской бизнес логики со всеми этими таблицами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 17:03 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Atum1ДА ,спасибо . все верно расписали - одно но это не продакшен решение - это тестовая песочница. и там ненужно до этого момента было городить кучу банковской бизнес логики со всеми этими таблицами Сначала спросили "Как это архитектурно разрулить". Теперь подводите к вопросу "каким костылём применить?" На вопрос "Нахрена тут "пессимистический лог"?" тоже не ответили. Что он даёт? От каких апдейтов защищает? Защищайтесь от этих апдейтов другим способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 17:27 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Atum1, Действительно, лок по удаленке это за гранью. Как ты додумался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 19:04 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Petro123, Это не я ) нашел в коде . Но рефактрить нет желания Ибо это тесты и критичеость кода мала. Он работает но иногда падает. Ввести версионность ввести оптимистмк лок И так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 21:41 |
|
||
|
jpa spring pessimistic locking timeout and rest servive
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1, Действительно, лок по удаленке это за гранью. Как ты додумался? Очень удрбное решение : одна анотация над методом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 21:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39362744&tid=2123412]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 377ms |

| 0 / 0 |
