Is there a known architectural solution for a highly-distributed OLTP situations where pre-conditions apply? For example, let's use a banking example. Person A wants to transfer $N to Person B. The pre-conditions for this to succeed are that Person A must have more than $N in their account.
From the perspective of Person A, they log into some web application. They create a transfer from themselves to Person B for $N. Keep in mind that in the background, money is being withdrawn and deposited from Person A's account in real-time as this transfer is being applied and as the transfer is being created. The money may exist before the create, but once the transfer is applied, it may not. In other words, this couldn't be a client-side validation. Person A would like to know that this transfer has succeeded or failed synchronously. Person A would not like to submit the transfer asynchronously and then return later to a queue or some notification that the transfer has failed.
Is there a known architecture that solves this problem at large-scale? If all accounts are in a single RDBMS, then you can do something like this via built-in transactional capabilities. But if you are using an eventually consistent NoSQL style datastore, or a log/message based infrastructure like Kafka, in there a known solution to problems like this?