CAP为什么说只能同时满足两个,自己的简单理解

Consistency(一致性), 数据一致更新,所有数据变动都是同步的

Availability(可用性), 好的响应性能

Partition tolerance(分区容忍性) 可靠性

在网上看了很多资料,这里给出自己的简单理解

C:一致性,就是说所有的服务器上面的数据都是一样的,

A:可用性,用户访问服务器上面的数据,响应时间在可以接受的范围内

P:分区容忍性,其实就是高可用性,一个节点崩了,并不影响我们其它的节点

现在开始分析:

1:满足C,所有的机器上的数据都是一样,这样的情况下会有什么需求呢?每当一个新数据新增到其中一个服务器上,这个数据要同步到其它服务器,这样的情况下才可以保证C

2:满足A,这样的情况下会有什么需求呢?用户随时都在访问,都能在可控的时间内返回正确的数据

3:满足P,非常可靠,怎么能可靠呢?那必须是机器越多越可靠,为啥?我有1亿台服务器,挂了几万台,完全没影响嘛。

现在我们对这几个理论有了一定的了解,现在开始分析为啥只能同时满足两个

1:满足C和A,那么P能不能满足呢?

满足C需要所有的服务器的数据要一样,也就是说要实现数据的同步,那么同步要不要时间?肯定是要的,并且机器越多,同步的时间肯定越慢,这里问题就来了,我们同时也满足了A,也就是说,我要同步时间短才行。这样的话,机器就不能太多了,也就是说P是满足不了的

2:满足C和P,那么A能不能满足呢?

满足P需要很多服务器,假设有1000台服务器,同时满足了C,也就是说要保证每台机器的数据都一样,那么同步的时间可就很大,在这种情况下,我们肯定是不能保证用户随时访问每台服务器获取到的数据都是最新的,想要获取最新的,可以,你就等吧,等全部同步完了,你就可以获取到了,但是我们的A要求短时间就可以拿到想要的数据啊,这不就是矛盾了,所以说这里A是满足不了了

3:满足A和P,那么C能不能满足呢?

我认为不需要我说了,读者可以自己分析下

我这里只是在严格的情况下说一下自己的简单理解,如果有不对的地方,请大家多多指点,只要是有道理的,立马学习。

猜你喜欢

转载自blog.csdn.net/qq_34802511/article/details/81296190