目录
1.CAP原则
1.1 CAP原则定义
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。
1.2 特点的理解
(1)Consistency:一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性),就是保持数据在多个副本之间的一致性;
(2)Availability:可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据),就是保证用户请求时,数据是可用的,能响应给用户的;
(3)Partition tolerance:分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障,就是由于分区而可能发生的网络分区问题,这个特点在分区中必然存在的问题。
1.3 CAP原则权衡
通过CAP理论,我们知道无法同时满足一致性、可用性和分区容错性这三个特性,我们必须选择其中两个而舍弃另外一个。
(1)CA:分区容错性在分区中必然存在的问题,但是我们可以不进行分区,在单体应用中,我们可以保证一致性和可用性。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。
(2)CP:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。比如说银行中的应用就必须要求数据的一致性,由于网络分区的问题延长同步,等到问题解决后,同步数据,再实现可用性。
(3)AP:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。这个应用在数据不影响用户实际的场景。
2.BASE理论
2.1 定义
BASE 是 Basically Available(基本可用) 、Soft-state(软状态) 和Eventually Consistent(最终一致性)。BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。
2.2 核心思想
即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。
2.3 特性
(1)Basically Available:基本可用,可以通过两种方式来实现最终一致性,一种是时间的损失,即通过延长用户的响应时间,就是在发生网络分区的问题时,为了保证数据的一致性,用户的请求先进行等待,等数据完成同步时,再对用户进行响应;另一种是功能的损失,即在某种功能的访问量过大时,通过牺牲一些访问量少的功能,来增强某种功能。
(2)Soft-state:软状态,软状态指允许系统中的数据存在中间状态(CAP 理论中的数据不一致),并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
(3)Eventually Consistent:最终一致性,最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。