Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 January 15

G

Ghefest in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Большая часть прода держится на jQuery
То какая? Прод лендингов? Или легаси код? Ну и там и там справедлива жуквара.
источник

AS

Andrey Saenko in NodeUA - JavaScript and Node.js in Ukraine
живут те за кем стоят большие компании
источник

AS

Andrey Saenko in NodeUA - JavaScript and Node.js in Ukraine
Alexander
пфф, redom
интересно, а есть опыт написания проэкта больше среднего
источник

G

Ghefest in NodeUA - JavaScript and Node.js in Ukraine
Andrey Saenko
живут те за кем стоят большие компании
Ну нестик вот соло игрок. Компании не стоят, а много контор юзает
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Sergey Vydayko
Всем привет, такой вопрос:
Есть аккаунт юзера, у которого на счету 1000$, он может с этих денег донатить и выводить себе на карту.
Использую сиквалайз
Есть проблема в транзакциях, я лочу базу на момент выполнения любого действия с балансом, для того что бы все считалось правильно

Проблема в том что из-за локов долго отвечаю на запросы.

Есть ли какой-то способ обойти проблему долгих запросов, при этом что бы не было проблем с балансом

Без лока сейчас есть проблема, если донатить и выводить одновременно, тогда при донате есть моменты когда достаю баланс, донатю и записываю по сути новое значение, но если в этот момент вывести деньги, то после доната запишется не верный баланс, т.к. на момент доната сумма была другая

не уверен что смог правильно описать, буду очень благодарный за помощь
А что там за лок? Лок одной записи или всей таблицы? Неужели так много действий с балансом что почти постоянно залочено?
источник

SV

Sergey Vydayko in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
А что там за лок? Лок одной записи или всей таблицы? Неужели так много действий с балансом что почти постоянно залочено?
Лок записи, да, люди есть которые постоянно донят, но пытаются вывести деньги в другой вкладке, если им надонили н-ю сумму
источник

OG

Oleg Gorelkin in NodeUA - JavaScript and Node.js in Ukraine
ну хорошо, а какая БД?
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Варианты
а) В суровых банковских системах записывается не баланс, а все действия. Таким образом существующие записи не апдейтятся а добавляются новые. Например +10, +10, -5, -5, -15. И когда человек запрашивает текущий баланс то он вычисляется по этим записям. Здесь вот баланс -5
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
А у вас тормозит только когда к одной и той же записи обращения идут? Мне кажется это должно быть много запросов чтобы оно заметно тормозило. Транзакции они ж быстрые?
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Бывает такая ошибка когда слишком рано начинают транзакцию. Или слишком долго ее держат, можно раньше отпускать. К примеру, в коде нужно снять деньги и отправить письмо о снятии. Транзакцию можно "отпускать" после снятия денег не дожидаясь пока еще и письмо отправится.
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
Варианты
а) В суровых банковских системах записывается не баланс, а все действия. Таким образом существующие записи не апдейтятся а добавляются новые. Например +10, +10, -5, -5, -15. И когда человек запрашивает текущий баланс то он вычисляется по этим записям. Здесь вот баланс -5
Лок и двойная бух запись. Как самый простой вариант
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Еще вариант решения сделать вывод асинхронным. Когда они запрашивают вывод денег просто принимать эту заявку. Писать пользователю "Почекайте". И потом как-то сообщить ему когда вывод сделан (письмо, нотификация, etc)
источник

D

David in NodeUA - JavaScript and Node.js in Ukraine
Это интересно где люди без опыта пишут финансы ?
источник

SV

Sergey Vydayko in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
Варианты
а) В суровых банковских системах записывается не баланс, а все действия. Таким образом существующие записи не апдейтятся а добавляются новые. Например +10, +10, -5, -5, -15. И когда человек запрашивает текущий баланс то он вычисляется по этим записям. Здесь вот баланс -5
По сути как резерв идёт. Т.е. Записали все действия, и отдали результат. Я так и думал сделать в следующей версии, но нужно пофиксить то что накрутили до меня, а там уж очень много не качественного кода
источник

SV

Sergey Vydayko in NodeUA - JavaScript and Node.js in Ukraine
Спасибо за подсказки
источник

SV

Sergey Vydayko in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
Бывает такая ошибка когда слишком рано начинают транзакцию. Или слишком долго ее держат, можно раньше отпускать. К примеру, в коде нужно снять деньги и отправить письмо о снятии. Транзакцию можно "отпускать" после снятия денег не дожидаясь пока еще и письмо отправится.
Вот я это поправил, у нас с самого начала транзакция держалась, я сделал только в момент сохранения, и сразу же отпускаю, вроде бы уменьшились ответы в процентов 30-40 но нужно ещё оптимизация
источник

IG

Ivan Granat in NodeUA - JavaScript and Node.js in Ukraine
David
Это интересно где люди без опыта пишут финансы ?
а бож, элементарный обменник крипты накодить, чем тебе не финансы?
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
А что за база интересно? Если mysql/myisam то он возможно всетаки лочит таблицу а не строку
источник

SV

Sergey Vydayko in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
А что за база интересно? Если mysql/myisam то он возможно всетаки лочит таблицу а не строку
MySQl
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
И там нужно посмотреть какой движок на таблице.
источник