概述
CAP理论在大数据领域知名度非常高,当前流行的大数据技术普遍把其当作理论基础,是NoSQL数据库的基石,很多架构师都会将其作为分布式系统设计的准则。CAP理论指出任何分布式系统在可用性、一致性、分区容忍性方面,不能兼得,最多只能得其二。但“三选二”的说法有其一定误导性,三特性之间的相互关系过于简单化了,比如业界一直存在一种认识,那就是传统关系型数据库设计选择了CA,NoSQL数据库设计选择了AP。在这里我们有必要深入解读下CAP理论,实际分布式系统中这三种特性都是可以在一定程度上平衡的,绝不是简单的选择其中两项来设计。
“三选二”说法存在几个方面误导性。首先,分区在CAP的经典解释为某节点或网络分区故障,是忽略网络延迟的,但实际是会存在时限要求的,系统如果无法在时限内达成数据一致性,就意味着分区的发生,必须就当前操作在C和A之间做出选择。其次,C与A之间的取舍也会因为系统决策条件的不一样,涉及特定数据或用户而有所不同。最后,三种特性都是可以在一定程度上平衡的,可用性可以在一定区间连续变化,一致性又可分为多级别(强一致性、弱一致性、最终一致性等),连分区也可细分为不同含义(网络故障分区、网络延迟等),如系统内的不同部分是否存在分区也可以有不同的认知。
要理解这些其中细微的差别,这就需要懂得分区的管理,如何处理分区对一致性和可用性的影响是对架构师的挑战。在分区未发生时,CAP允许完美的C和A。但当分区存在或可感知其影响的情况下,就需准备一套方法来探知分区的发生,并显式处理分区对其的影响。这样的策略可分为三个步骤:探知分区的发生,进入显式的分区模式以限制某些操作,启动恢复过程以恢复数据一致性并补偿分区期间发生的错误。在CAP从理论变为现实中,系统需要做出关于分区的一个重要决定,是应该取消操作(降低系统的可用性),还是应该继续操作(损失系统一致性为代价)。
众所周知,依靠多次尝试通信的方法来达到一致性,比如分布式事务一般采用两阶段提交策略来实现,这是一个非常耗时的复杂过程,会严重影响系统效率,在实践中我们尽量避免使用它。在实践过程中,如果我们为了扩展数据容量将数据分布式存储,而事务的要求又完全不能降低。那么,系统的可用性一定会大大降低,在现实中我们一般都采用对这些数据不分散存储的策略。
最后,我们还可以根据期望中的响应时间,有意识地设置时限;时限设得越短,系统进入分区模式越频繁,其中有些时候并不一定真的发生了分区的情况,可能只是网络变慢而已。有时候在跨区域的系统,放弃强一致性来避免保持数据一致所带来的高延迟是非常有意义的。
比如对于分布式数据库系统来说,分区容忍性是基本要求,从而需在一致性和可用性之间取一个平衡,而对于大多数web应用,并不需要强一致性,因此牺牲一致性(强一致性)而换取高可用性,是目前多数分布式数据库产品的方向。
最后
以上就是忧虑水池为你收集整理的关于大数据的CAP理论的全部内容,希望文章能够帮你解决关于大数据的CAP理论所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复