赞
踩
CAP是Consistency、Availablity、Partition-tolerance的缩写,由计算机科学家埃里克·布鲁尔在2000年提出的,所以又称布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点。
任何一个分布式系统只能满足三选二,即只能AP或 CP,必须要有P 。为什么是如此,我们来作简单的分析。
由于我们是分布式系统,所以我们必须要将系统部署在多节点,多网络分区,这才是分布式系统,而存在网络分区,我们就必须要保证P,,分区容错性
假设我们有两个节点A和B,不在同一个网络。
此时A、B之间的网络断开。此时如果我们要满足分区容错性继续对外提供服务,那么我们还能同时满足一致性和可用性吗?
假设现在用户对A节点进行了数据修改操作,而B与A直接网络通信断开了,A的数据修改操作没发同步给B,用户又对B进行了数据请求,那么他们之间的数据就不一致了。这时我们就只能二选一了:
在设计系统时是选择CP还是AP就要看自己系统的业务所决定,不过在一些开源分布式系统中比如zookeeper、mongodb、hbase 他们都是基于CP来实现的即强一致性,如果发生网络分区导致数据不一致则都不能提供服务
BASE 是由 Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)缩写而来的。BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性,让CAP三者同时基本实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。