梦想还是要有的,万一忘了咋办?

0%

分布式事务:相关概念

分布式事务相关概念:事务、ACID、CAP、BASE、幂等性

ACID

数据库事务的4个特性:

  • 原子性(Atomicity)
    原子性是指事务是一个不可分割的工作单元,事务内的所有动作要么全部成功、要么全部失败;
  • 一致性(Consistency)
    事务不能破坏关系数据的完整性、及逻辑上的一致性。
  • 隔离性(Isolation)
    多个事务并发访问,事务之间是隔离的,一个事务不应该影响其它事务;
  • 持久性(Durability)
    事务一旦被提交,数据的改变应该是永久性的,即使数据库发生故障也不应该对齐有任何影响。

CAP定理

  • 一致性(Consisteny)
    任何客户端每次读操作时必须能够获取最新的数据;
  • 可用性(Availability)
    每个请求都能在合理的时间返回符合预期的响应;
  • 分区容错性(Partition tolerance)
    当某个节点出现故障后,系统仍然可以正常提供服务;

CA组合理论上是不存在的
存在 CA、CP、AP 三种组合方式,节点故障时可预见的必定会发生的问题,因此P是必须要满足的需求了。

BASE理论

eBay架构师Dan Pritchett在ACM的文章中第一次提到BASE理论,BASE理论是对CAP定理的延伸,核心思想是 即使无法做到强一致性,但应该可以采用适当的方式达到最终一致性。

  • BA:基本可用(Basically Available)
    指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。
    电视大促时,为了应对访问量的激增,部分用户可能会被引导至降级页面,服务层可能只提供降级服务。这就是损失部分可用性的体现。
  • 软状态(Soft State)
    允许系统存在中间状态,而该中间状态不会影响系统整体可用性
    分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
  • 最终一致性(Eventual Consistency)
    系统中的所有副本经过一段时间后,最终能够达到一致的状态。
    弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

ACID是传统数据库常用的设计理念,追求强一致性模型。
BASE支持的是大型分布式系统,提出牺牲强一致性获得高可用性。