<分区>
我一直在阅读一篇关于 data consistency in banking operations 的文章.
作者强调,与通常的想法不同,银行采用BASE(基本可用、软状态、最终一致)事务来确保其服务的高可用性。
简而言之,交易记录在不同的分区中以允许快速响应,然后进行数据库一致性。
例如,当您从自动取款机取款时,目的是尽快取款。因此,您的交易操作是单独存储的,资金被释放,之后他们负责将交易应用到数据库并使其保持一致。
这是由于通信方面的技术限制:如果使用 ACID(原子性、一致性、隔离性、持久性)事务,将无法提供响应式服务。
这当然意味着可能存在不一致:你提取的钱可能比可用的多,他们无法提前知道,在交易一致之前。随之而来的是 overdraw 罚款,这是您为“超额取款”支付的费用。
现在的问题是:银行引入“过度提款”技巧是因为他们从一开始就意识到他们必须面对的限制吗?像某种hack 来克服技术沟通问题并同时提供可用性?还是无论如何都会引入的另一种“赚钱”方式?
在我看来,在这种情况下,两种选择都同样值得。我的意思是,它们都可以大大增加收入。