分布式事务
ACID和BASE
ACID是指原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration)。
- 原子性 事务中的所有操作要么都成功要么都失败
- 一致性 外界访问数据库中的数据时,不会访问到事物的中间状态,只会访问到最终的状态
- 隔离性 事务之间不会相互影响,避免脏读、幻读给业务带来数据不一致问题
- 持久性 事务一旦执行成功,其最终状态会被持久化存储下来,不会失效。
BASE是指基本可用(Base Available)、柔性状态(Soft State)、最终一致性(Eventual Consistency)。
- 基本可用 是指分布式系统出现故障时,允许损失部分可用性,保障系统基本可用。
- 柔性状态 是指允许系统出现中间状态,而该中间系统并不会影响系统的整体可用性。
- 最终一致性 系统在经过一段时间之后,系统中的所有副本最终会达到一致的状态。
ACID和BASE代表了两种截然相反的设计哲学。ACID是传统数据库常用的设计理念,追求强一致性模型;BASE支持的是高效的分布式数据库,通过牺牲强一致性来获得高可用性。不同的业务场景对数据的一致性要求不一样,因此这两种设计理念也可能会结合在一起使用。