赞
踩
CAP理论,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),不能同时成立。
CAP理论是分布式架构中提出来的一种设计思想模型,全称是由Consistency、Availability、Partition Tolerance三个词组成,通过单词便可知其意,其实,这三个词分别代表着不同的含义,在做分布式架构设计时,只能在其三中选其二,并不能同时满足三个思想模型。
分布式理论CAP三者的定义如下:
CAP理论分布模型是基于区域约束来实现的,包含C(一致性)、A(可用性)、P(分区容错性)三者的关系所形成的理论模型。那么CAP理论模型中这三者是怎么联系起来的呢?由于分布式理论CAP特性,只能同时满足三个领域中的两个,所以,我们在思考过程中也知道,可形成三种情况供选择。CAP分布模型图构建和三者之间的关系如下图:
CAP理论是分布式架构设计中心思想,其核心思想是在分布式架构体系下,基于什么样的场景构建稳定、健壮、安全、可用的软件系统。那么多年来,CAP理论在互联网界广为人知,被称为“帽子理论”。 这是Eric Brewer教授在2000年举办的ACM研讨会上提出的著名猜想:一致性、可用性、分区容错性(partition-tolerrity )。 2003年,MIT的Gilbert和Lynch正式证明这三者确实不可兼得。 而且CAP被认为是分布式领域的重要理论,被很多人认为是分布式系统设计的金律。
通过对分布式理论CAP认知,我们都应该了解到软件系统在分布式架构场景下会引发哪些问题,而这些问题的背后又是用什么技术手段或方法去解决的呢?那么我们就带着这个问题去寻找答案,切入点如下图:
我这边画了一张便于理解的系统架构链路分析图,其实,在图中已经解答了我上面所提出的问题。那么图中都隐含了什么呢?下面通过 3 个场景去解答,如下:
1、如何保证数据一致性
首先,需要先理解一致性的概念,指的是在主数据和多副本同步过程中实时保持数据是一致的。CAP理论中所描述的一致性是强一致性的,但在分布式系统场景下是很难保证强一性,通过图中的主库和从库之间一旦发生延迟或超时等其它情况,则无法保证数据的强一致性。而为了避免这种问题,后面又提出了不能保证强一致性的同时,可以保证数据的最终一致性,并不要求实时数据一致的情况。其实,在这里有引入了一个理论,那就是Base理论模型,对于这个理论模型下一篇再深入的进行说明。
2、如何保证系统可用性
那么在分布式架构里面为什么要保证系统可用性,提出的一点就是随着业务量的增长,单系统可承受的压力是受限的,为了解决这个问题,引入了分布式架构多副本、集群模式,这样就解决了系统单点问题。通过图中蓝框部分实现了系统集群化和系统架构高可用,避免因为图中红框里面部分系统中断,造成系统不可用状态。在这里面也隐含的表达了Base理论里面的基本可用特征。
3、为什么要选择分区容错性
在解答这个问题之前,我们先要理解分区容错性的概念,也就是什么是分区容错性。分区容错性是在系统通信层面,能够避免系统的某个分区或网络分区出现问题,导致系统中断不可用状态。那么了解了什么是分区容错性以后,我们接着看图中的蓝框里面的三个系统,在分布式架构下,通常一个请求是由多系统协作完成的。若此时B、C系统内部网络通信发生局部异常,则会直接使系统网络通信之间中断并导致不可用,而在有分区容错性的保证下则会对系统网络通信异常分区隔离,并不会影响整个系统的不可用,所以在分布式架构下分区容错性是必选的,那么对于我们的选择的就只有C和A之间做权衡了。
CAP理论证明限制在原子读写场景中,声明不支持数据库事务等场景。 将分区的容错性总结为关于网络环境的描述,而不是以前的独立条件。
相对于CAP理论应用场景,一般情况下可根据实际业务场景做选择,但我想提的一点就是主要应用于分布式架构当中,为什么这么说呢?因为你的业务足够简单且单应用架构中,像这种场景下是应用不到的。那么CAP一般都适用于哪些场景呢?通过CAP分布模型(实际业务情况下)分为如下三种情况:
分布式理论CAP是基于系统之间的不断重现而精进的,CAP并不是普遍的普通原理和指导思想,它只适用于原子读写的NoSQL和系统架构设计场景,而不适用于数据库系统。现在的分布式系统也不是多年前的简单系统。 如今,分布式系统具有可扩展性、自动化等诸多特性,想成为架构师不仅需要理解 CAP 问题,还需要在设计和开发系统时拓展视野。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。