Splo1ter
@Splo1ter
.NET Developer (9 years+)

Работа с финансами с точки зрения транзакционности, каким образом происходит в банках?

Возник вопрос, как это делают в банках. Так как в купе с горизонтальным масштабированием идет накладка в виде отсутствия поддержки распределенных транзакций. В нормальной форме.
Напоминает чем то такую задачку - https://thecode.media/balance/
Но с технической точки зрения, как это происходит?
Либо выделяется одна система с громадным сервером? В чем очень сомневаюсь.
  • Вопрос задан
  • 718 просмотров
Пригласить эксперта
Ответы на вопрос 5
xez
@xez
TL Junior Roo
одна система с громадным сервером

Вот так
Ответ написан
@vikarti
Как. Используется система которая обеспечивает поддержку транзакций. Обычно это значит - одна большая железка.
Если все же вариант с одной железкой не устраивает, ну значит ищем СУБД которая умеет в multimaster.
По сути - Oracle RAC либо коммерческие доработки Postgres (вроде PostgresPro Enterprise от Postgres Professional, описание от них https://postgrespro.ru/docs/enterprise/15/multimaster )
Либо руками городим что-то через алгоритм Paxos - краткое описание https://blog.the-pans.com/paxos-explained/ и там по ссылкам
Ответ написан
Комментировать
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Что понимать под горизонтальным масштабированием и распределенной транзакцией?
Если Саша хочет перевести деньги из отделения1 условного сбера Маше в отделение2 того же Сбера, то Машиному отделению2 нет необходимости знать кто такой Саша и какой у него счёт. И даже головной системе условного сбера нет нужды хранить данные всех Маш и Саш, достаточно только дебетовать подсчёт отделения1 и кредитовать отделение2. При межбанковских переводах дебитуются/кредитуются корреспондентские счета открытые друг у друга или в центробанке. Свой внутренний баланс отделение или банк ведёт самостоятельно. Для консистентности достаточно обеспечить гарантированную систему передачи сообщений.
В современных системах переводов (swift, Visa, СБП, Мир) гарантии передачи сообщений даёт процессинговый центр.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Более интересный вопрос - как работают меж-банковские переводы. Как SWIFT работает? Как у него
баланс выглядит. И есть ли он там вообще? Как можно жить в условиях CQRS и eventual consistency?

Вот это мне кажется более интересные вопросы чем просто транзакции внутри банка.
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Один из "старых" вариантов как это работает в крупном банке - есть множество отделений, у каждого есть свои операционные расходы на день. Транзакции до определенной суммы подтверждаются автоматом, транзакции свыше - операционистом, а большие - могут локальным директором.
В пределах этих сумм, переводы делаются как-бы "в долг"
В конце операционного дня, все операции замораживаются и идет синхронизация - тут транзакции уже на самом деле проводятся. Между отделениями, между банками.

Это как бы очень поверхностное описание того, что использовалось раньше практически везде.

P.S. Я могу сильно ошибаться, я не спец, когда-то давно читал.
Сейчас могут быть как мелкие оптимизации локально, так и другие варианты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы