分布式系统CAP定理

CAP定理是啥?

C:

consistency[kənˈsɪstənsi],浓度; 连贯; 符合; 前后一致(百度翻译)。

所以,C就是指一致性。不过这里的一致性是代表强一致性,即更新操作是一个事务,所有的节点都会被同时更新。

A:

Availability[əˌveɪlə'bɪlətɪ],有效; 有益; 可利用性; 可得到的东西(百度翻译)。

所以,A代表可用性。即所有的请求操作都能得到正常响应。

P:

Partition tolerance,分区耐受性; 分区容错性; 分割耐性;(百度翻译)。

分区容错性到底是个什么意思?请参见:CAP之P

看下面之前一定要理解C、A、P各自代表什么意思,一定要想一想

了解完上面以后,那么就说下CAP定理:在一个分布式系统中,最多只能同时满足一致性、可用性、分区容错性之中的两项

为什么?

分布式分布式,那么首先要保证的就是分区容错性,所以我们在讨论分区容错性的前提下,说CA

假设分布式系统有m、n两个节点,系统正常运行情况下,初始情况下m、n节点都是有x=1,用户一个请求到达A,需要修改x=2,

m节点在把x修改为2的同时会通过网络请求告诉n节点也把x修改为2,等m、n都修改完以后,A节点就会想响应给用户修改完了。

但是,但是,由于m和n是通过网络交流的,那么m、n之前的网络断了呢?或者n服务宕机了呢?

m就没办法告诉n要把x修改为2,这个时候如果还要保证A(可用性),去响应用户请求告诉已经把x修改为2,由于m联系不上n,没办法通知n把x修改为2,就会造成数据不一致的情况,即不能保证C(一致性);相反地,如果m要一直等待和n的网络通了以后告诉n把x修改为2,就没办法响应用户,用户就会一直等下去,直到超时,这是不正常的,即不能保证A(可用性)。

上面已经说明了要么AP不能C,要么CP不能A,至于CA不能P,静下心一想就可以明白了。

因为如果又要保证数据一直性又要保证可用性,只能把数据放到服务器自身的节点上,这样就没了分区容错性。









猜你喜欢

转载自blog.csdn.net/y763900954/article/details/79983773
今日推荐