分布式事务--CAP理论

概念

cap理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项.

  1. 一致性:对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败;即所有节点拥有数据的最新版本。
  2. 可用性:任何客户端的请求都能得到响应数据,不会出现响应错误;即服务一直可用且响应时间正常
  3. 分区容忍性:大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。

应用

权衡C、A、P

  1. 对于分布式系统而言,P为必选项,因为不选P等于放弃了分布式;
  2. CP架构:放弃可用性,追求一致性和分区容错性。我们熟悉的ZooKeeper就是采用了CP一致性,这意味着面对网络分区时,为了一致性,它是不可用的。
  3. AP架构:放弃强一致性,追求分区容错性和可用性,这是很多分布式系统设计时的选择。Base理论也是根据AP来扩展的。

注意:在不存在网络失败的情况下(分布式系统正常运行时),C和A能够同时保证。只有当网络发生分区或失败时,才会在C和A之间做出选择。

C与A的矛盾

  1. 一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。
  2. 如果保证Partition1和Partition2的一致性,那么 Partition1 必须在写操作时,锁定 Partition2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,Partition2 不能读写,没有可用性。
  3. 如果保证 Partition1和Partition2 的可用性,那么势必不能锁定 Partition2,所以一致性不成立。
  4. 综上所述,Partition1和Partition2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。

posted @ 2023-04-11 10:28  du-z  阅读(51)  评论(0编辑  收藏  举报