ACID要求强一致性,通常用于传统的数据库系统。而BASE要求最终一致性,通过牺牲强一致性来达到可用性,通常用于大型分布式系统。BASE理论是对CAP中的一致性和可用性进行权衡的结果,其核心思想是:即使无法做到强一致性,每个应用也都可以根据自身业务特点,采用适当的方式使系统达到最终一致性。
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistency(最终一致性)三个短语的缩写。BASE理论是对CAP中AP的扩展,通过牺牲强一致性来获得可用性,当出现故障时允许部分不可用,但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。满足BASE理论的事务,我们称之为“柔性事务”。
● 基本可用:分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。例如,电商网站交易付款出现问题后,依然可以正常浏览商品。
● 软状态:允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性,即允许系统不同节点的数据副本之间进行同步的过程存在延时。由于不要求强一致性,因此BASE允许系统中存在中间状态(也叫软状态),该状态不影响系统可用性,如订单的“支付中”“数据同步中”等状态,待数据最终一致后状态改为“成功”状态。
● 最终一致性:最终一致性是指经过一段时间后,所有节点数据都将会达到一致,即强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一致的状态。如订单的“支付中”状态,最终会变为“支付成功”或者“支付失败”,使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。