Open rooobot opened 4 years ago
答:
CAP定理又称为布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
CAP
Consistency
Availability
Partition tolerance
CAP理论是基于分布式环境下的,所以P是前提项(所以就不存在CA模型),是必须要保证的,所以,通常情况下,我们需要对C和A做出选择,要么选择一致性以保证数据的准确性,要么选择可用性以保证服务的可用性。
P
CA
C
A
如果选择了C,客户端在读操作时,一定会读到最新的数据,而不会读到旧数据,但是,在网络环境不稳定时(比如网络延迟可高、网络丢包等网络不通),因为要保证一致性,所以,集群可能因为无法响应最新的数据给客户端,而返回一个出错的信息;
如果选择了A,系统对客户端的查询始终会做出正常的响应,但是,在网络环境不稳定时(比如网络延迟可高、网络丢包等),因为要保证可用性,客户端要读操作时,集群的节点会响应当前时刻自己的最新数据(但可能不是全局最新的数据);
上面的两种选择就对应了我们通常说的CP模型和AP模型。
CP
AP
使用CP模型的软件,如etcd、consul等;使用AP模型的软件,如Cassandra、DynamoDB等。
etcd
consul
Cassandra
DynamoDB
其中,CP模型牺牲了可用性;AP模型牺牲了一致性,取而代之的是以最终一致性,用来代替CP模型中的强一致性。
简述CAP原理
答:
CAP
定理又称为布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足以下三点:Consistency
):等同于所有节点访问同一份最新的数据副本;Availability
):每次请求都能获取非错的响应,但不保证响应的数据为最新的数据;Partition tolerance
):当节点间出现任意数量的消息丢失或高延迟的时候,系统仍然能继续工作;CAP
理论是基于分布式环境下的,所以P
是前提项(所以就不存在CA
模型),是必须要保证的,所以,通常情况下,我们需要对C
和A
做出选择,要么选择一致性以保证数据的准确性,要么选择可用性以保证服务的可用性。如果选择了
C
,客户端在读操作时,一定会读到最新的数据,而不会读到旧数据,但是,在网络环境不稳定时(比如网络延迟可高、网络丢包等网络不通),因为要保证一致性,所以,集群可能因为无法响应最新的数据给客户端,而返回一个出错的信息;如果选择了
A
,系统对客户端的查询始终会做出正常的响应,但是,在网络环境不稳定时(比如网络延迟可高、网络丢包等),因为要保证可用性,客户端要读操作时,集群的节点会响应当前时刻自己的最新数据(但可能不是全局最新的数据);上面的两种选择就对应了我们通常说的
CP
模型和AP
模型。使用
CP
模型的软件,如etcd
、consul
等;使用AP
模型的软件,如Cassandra
、DynamoDB
等。其中,
CP
模型牺牲了可用性;AP
模型牺牲了一致性,取而代之的是以最终一致性,用来代替CP
模型中的强一致性。