From 966facaf8412b14f7d3e072e1e8a0d1af8801975 Mon Sep 17 00:00:00 2001 From: guide Date: Fri, 28 May 2021 08:22:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20CAP=20=E7=90=86=E8=AE=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/system-design/distributed-system/CAP理论.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/system-design/distributed-system/CAP理论.md b/docs/system-design/distributed-system/CAP理论.md index 045581b9..d12ffaa1 100644 --- a/docs/system-design/distributed-system/CAP理论.md +++ b/docs/system-design/distributed-system/CAP理论.md @@ -46,13 +46,13 @@ CAP 理论的提出者布鲁尔在提出 CAP 猜想的时候,并没有详细 > > 简而言之就是:CAP 理论中分区容错性 P 是一定要满足的,在此基础上,只能满足可用性 A 或者一致性 C。 -因此,**分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。** +因此,**分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。** 比如 ZooKeeper、HBase 就是 CP 架构,Cassandra、Eureka 就是 AP 架构,Nacos 不仅支持 CP 架构也支持 AP 架构。 -**为啥无同时保证 CA 呢?** +**为啥不可能选择 CA 架构呢?** 举个例子:若系统出现“分区”,系统中的某个节点在进行写操作。为了保证 C, 必须要禁止其他节点的读写操作,这就和 A 发生冲突了。如果为了保证 A,其他节点的读写操作正常的话,那就和 C 发生冲突了。 -举个例子:若系统出现“分区”,系统中的某个节点在进行写操作。为了保证 C, 必须要禁止其他节点的读写操作,这就和 A 发生冲突了。如果为了保证 A,其他节点的读写操作正常的话,那就和 C 发生冲突了。 +**选择 CP 还是 AP 的关键在于当前的业务场景,没有定论,比如对于需要确保强一致性的场景如银行一般会选择保证 CP 。** -**选择的关键在于当前的业务场景,没有定论,比如对于需要确保强一致性的场景如银行一般会选择保证 CP 。** +另外,需要补充说明的一点是: **如果网络分区正常的话(系统在绝大部分时候所处的状态),也就说不需要保证 P 的时候,C 和 A 能够同时保证。** ### CAP 实际应用案例