我一直在阅读一篇关于银行业务中数据一致性的文章。作者强调了一个事实,即银行采用BASE(基本可用,软状态,最终一致)交易来确保其服务的高可用性,这与通常的想法不同。
简而言之,事务被写在不同的分区中以允许快速响应,然后执行数据库一致性。
例如,当您从 ATM 取款时,目的是尽快将钱取回。因此,您的交易操作被单独存储,资金被释放,然后他们注意将交易应用到数据库并使其保持一致。
这是因为通信中的技术限制:如果使用ACID(原子性、一致性、隔离性、持久性)事务,
则无法提供响应式服务。
这当然意味着可能存在不一致:您提取的资金可能会超过可用的资金,而他们无法提前知道,在交易变得一致之前。透支罚款来了,这是你为“透支”支付的费用。
现在的问题是:银行是否引入了“透支”技巧,因为他们从一开始就意识到他们必须面对的限制?就像一种黑客攻击克服技术沟通问题并同时提供可用性?或者它只是另一种“赚钱”的方式,无论如何都会被引入?
在我看来,在这种情况下,这两种选择都同样值得。我的意思是,它们都可以大大提高收入。