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能不能满足呢?

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

posted @ 2018-04-17 14:46  小虾米的java梦  阅读(2715)  评论(0编辑  收藏  举报