CAP理论和BASE思想
分布式领域CAP理论
-
一致性(Consistency):所有节点在同一时间的数据完全一致。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统。
一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。
从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。
-
可用性(Availability):服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。通常情况下可用性和分布式数据冗余,负载均衡等有着很大的关联。
-
分区容忍性(Partition tolerance):即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容忍性和扩展性紧密相关。网络分区是指由于某种原因,网络被分成若干个孤立的区域,而区域之间互不相通。
在分布式系统中,CAP理论最多只能实现两点,分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:
- CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
- CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
- AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
BASE思想
BASE是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
- 基本可用(Basically Available):分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。例如:电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
- 软状态(Soft state):允许系统存在中间状态,而该中间状态不会影响系统整体可用性。例如:分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。
- 最终一致(Eventually consistent):最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
ACID和BASE的区别与联系:ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。ACID和BASE代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。