Gibt es eine bekannte Architekturlösung für hochverteilte OLTP-Situationen, in denen Vorbedingungen gelten? Nehmen wir zum Beispiel ein Banking-Beispiel. Person A möchte $ N an Person B übertragen. Voraussetzung dafür ist, dass Person A mehr als $ N auf ihrem Konto haben muss.Hochverteilte OLTP-Architektur
Aus Sicht von Person A melden sie sich in einer Webanwendung an. Sie erstellen einen Transfer von sich selbst zu Person B für $ N. Denken Sie daran, dass im Hintergrund Geld abgehoben und in Echtzeit auf dem Konto von Person A hinterlegt wird, während diese Übertragung angewendet wird und während die Übertragung erstellt wird. Das Geld kann vor der Erstellung existieren, aber sobald die Übertragung angewendet wird, kann es nicht. Mit anderen Worten, dies könnte keine clientseitige Validierung sein. Person A möchte wissen, dass diese Übertragung synchron erfolgreich war oder fehlgeschlagen ist. Person A möchte die Übertragung nicht asynchron übermitteln und später zu einer Warteschlange oder einer Benachrichtigung zurückkehren, dass die Übertragung fehlgeschlagen ist.
Gibt es eine bekannte Architektur, die dieses Problem im großen Maßstab löst? Wenn sich alle Konten in einem einzelnen RDBMS befinden, können Sie über integrierte Transaktionsfunktionen so etwas tun. Aber wenn Sie einen möglicherweise konsistenten NoSQL-Datenspeicher oder eine Log/Message-basierte Infrastruktur wie Kafka verwenden, gibt es eine bekannte Lösung für solche Probleme?
Ich bin Ich bin mir nicht sicher, ob Sie einen Ansatz oder ein Tool benötigen, aber Sie können sich das einmal ansehen: http://blog.cask.co/2014/11/how-we-built-it-designing-a-globally- konsistente Transaktions-Engine / – guillaume31