Search
Write a publication
Pull to refresh
0
0
Constantine @banknote

Founder, web, AI developer

Send message

Я обращаю внимание на различия в типах самих транзакций — либо это рандомные транзакции или идет event stream. Плюс насколько часто меняются значения.
В моей ЛИЧНОЙ практике необходимость читать много раз запись неизменной не попадалась. Изменения баланса я делаю обычно атомарной транзакцией: считал значение, записал изменение — за один вызов. Чтобы использовать более высокие уровни изоляции... даже не знаю — это скорее для подведения балансов может быть нужно, когда важно чтобы разные концы базы данных не менялись в течение процесса. Но я бы делал это просто на реплике, либо на снапшоте базы данных. Это надежнее и базу не грузит.
Пишут, что полезно, когда нужно выбирать на какой счет из списка счетов блокировку средств ставить, для меня — теория. Лично не сталкивался.

Возможно у меня профессиональная деформация, так как я постоянно имею дело с фин. транзакциями, и имею большой опыт с ленивыми транзакциями и Django-ой, но проблема здесь для меня была очевидна сразу...
Так как база — это собственно источник информации о состоянии — и он должен быть единственным, то идея правильная, но есть нюанс... В вашем способе факт блокировки записи и является промежуточным "состоянием" процесса платежа.
Это нехорошо: блокировка у вас долгая, и все это время держит базу данных "привязанной" к конкретному процессу — в результате все равно ненадежно. Поэтому в платежах обычно делают два шага: создают (быстро-быстро) намерение, а потом либо его завершают платежом либо фейлят (т. е. неудачный платеж). Так база оказывается более эффективной.
Ну а искать тогда можно не платеж, а намерение (его конечно тоже через select for update надо делать, но это микросекунды).

Очень не хватает конечно асинхронности, но похоже, что либо асинхронность, либо плюшки ОРМ. Я использую Торнадо, когда необходим бескомпромиссный асинк, но фреймворк всё таки нужен.

А вообще джаваскрипт + джанго очень удобное сочетание для большинства проектов.

меня смутил 1 воркер (я ставлю 3); и про сертификаты сейчас писать надо сразу, потому что без HTTPS далеко не уехать. И, конечно, лучше делать конфиг в /etc/nginx/sites-available, и следующим шагом делать ln -s линк в /etc/nginx/sites-enabled. Иначе, когда будете варианты делать, nginx будет с ума сходить от количества противоречивых записей и откажется запускаться.

Мне нравится Торнадо, быстро, очень быстро, и ровно то, что нужно для поддержки JS в темплейтах + асинхронность + алхемия. статик обслуживает nginx. Что ещё нужно для полета в космос?

все батарейки разбора реквестов в наличии.

минус - нет админки (с 10000 строк в м2м поле на выбор ..)

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
JavaScript
Django
API interfaces
Pytorch
Tornado Web Server
PostgreSQL
MongoDB
DevOps
Bash