CAP原则中究竟什么是P

首先我们来看下什么是CAP,关于CAP原则的文章在网络上有很多,比如下面这段文字:

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A):保证每个请求不管成功或者失败都有响应。
分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。

以上内容摘自百度百科

CAP的C,一致性

一致性就是在分布式系统中,某个客户端对一个值进行更改后,其他客户端总是获取到最新更改过的值,而不是没有更改的老值。由于在分布式系统中,客户端读取值所访问的服务实例和客户端更新值所访问的服务实例会不同,所以在某个值由一个客户端发起更新后,分布式系统需要将更新结果从客户端访问的实例同步到其他所有实例去,为了保证一致性,在同步的过程中就不能让客户端从某个实例中读取该值,也就是造成短暂的不可用。
例如如下图所示的一个分布式系统:
在这里插入图片描述
在这个例子中,分布式系统有4个实例,分别是ServerA、ServerB、ServerC以及ServerD,他们共同对外提供服务,同时有两个客户端连接到这个分布式系统中。
假设现在ClientA通过ServerB更新了一个值A,同时ClientB通过ServerD来读取值A,这个过程如下图:
在这里插入图片描述
在保证一致性的系统中,步骤1、2、3一定是顺序执行的,在同步的过程中,ClientB是不能读取值的,它必须等待同步完成后才能获取到值A,或者给客户端返回一个获取值失败的结果。
所以为了保证一致性,必然降低可用性。

CAP的A,可用性

可用性就是客户端在任意时刻通过任意服务实例读写值都能成功且不需要等待。像上面这个例子,保证可用性的话,在同步的过程中,ClientB依然可以获取到值A,但是它获取到的值有可能因为从ServerB同步到ServerD还没完成,从而不是ClientA更新的值。
可用性关注的是分布式系统是不是能快速的对客户端的请求做出反应,显然要达到这样的目的,就不得不牺牲掉数据的一致性。

CAP的P,分区容错性

要理解分区容错性,首先要理解什么是分区。还是之前的那个分布式系统的例子,当某些未知的原因,导致在这个系统中,ServerA只能和ServerB互相通信,ServerC只能和ServerD互相通信,ClientA也只能和ServerA及ServerB通信,ClientB只能和ServerC及ServerD进行通信,这个时候我们就说这个分布式系统产生了两个分区。
在这里插入图片描述

  1. 分区不容错,就是在产生分区的时候,各个分区都不能对外提供服务。像这个例子中,ClientA通过ServerB访问分布式系统,ServerB发现访问不到ServerC和ServerD了,就认为系统发生了故障,这个时候就给ClientA返回一个错误,告诉它“我现在找不到C、D了,我不能为你提供服务”,同样的ClientB也会在访问这个分布式系统时得到相同的结果。
  2. 具有分区容错性的话,在产生分区的时候,各个分区将各自对外提供服务。像这个例子中,ClientA通过ServerB访问这个分布式系统,ServerB同样发现ServerC和ServerD访问不到了,但它将不再在意ServerC和ServerD的意见了,它只需要问问ServerA的意见,然后就成功给ClientA返回结果。同样的ClientB在通过ServerD访问这个分布式系统也能成功得到结果,这个结果只征询了ServerC和ServerD的意见,不会在意ServerA和ServerB的意见。

以上就是我对CAP理论的一些认识,有不妥之处还望指正。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAP定理又称布鲁尔定理,是分布式系统设计的一个基本原则。它指出,对于一个分布式系统来说,一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个要素,最多只能同时满足其的两个,无法三者兼备。 C:一致性(Consistency)指的是数据在多个副本之间是否保持一致的特性。在一个一致性的系统,读操作总是能够读取到最新的数据,并且写操作对所有的后续读操作都是可见的。一致性往往是指强一致性,即所有节点的数据都是一致的。 A:可用性(Availability)指的是系统提供的服务必须一直处于可用状态,对于用户的请求必须保证能够得到及时的响应。在一个可用性的系统,节点可以随时宕机,但是系统依然可以继续提供服务,只是可能会引起一些部分的延迟或者降级。 P:分区容错性(Partition tolerance)指的是系统在遇到网络分区的情况下依然能够正常工作的能力。在一个分布式系统,节点之间的通信是基于网络进行的,网络分区是不可避免的,因此系统需要具备分区容错性来保证数据的一致性和可用性。 根据CAP定理,我们可以在设计系统时,根据实际需求选择满足其两个要素,而舍弃另一个要素,以达到最优的系统效果。例如,互联网公司的大型分布式系统往往更注重可用性和分区容错性,而牺牲一致性;而银行等金融机构则更注重一致性和分区容错性,而牺牲可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值