CAP理论——分布式基础理论

要说明CAP理论,首先要了解C/A/P三个到底是什么意思,C代表Consistency,按照wiki的解释是(Every read receives the most recent write or an error),简单的说就是数据一致性。A代表Availability(Every request receives a (non-error) response – without guarantee that it contains the most recent write),用中文描述就是可用性(不报错,不保证数据一致性)。P代表的是Partition tolerance(The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes),是指两个结点间的任意数据包会丢失或者延迟,系统仍继续运行。

CAP理论说明的是C/A/P三者是不可能同时满足的。当需要P的时候,必须要做出选择,是C还是A。没有P的时候,C和A的共存是没有任何问题的。虽然这个理论现在已经大众耳熟能祥了,但是还是有很多人存在误解。这也是我写这个博客想澄清的。

枯燥的文字远没有图表直观,附张图大家看得更清楚:


cap_theory.png

这里有一个简单的视频说明:
https://www.youtube.com/watch?v=Jw1iFr4v58M

最后再补充说明一下,为什么分区了就必须选择是可用还是选择数据一致性。先说明一下不分区的时候,为什么一致性和可用性不冲突。首先不分区就可以把数据放在一个地方,甚至是单个数据库(这里选择数据库是因为数据库比起redis这类nosql来说,更强调一致性)。这样数据一致性天然就得到了保证,剩下的只是保证可用性。

而分区以后,多个结点间需要网络通信,一定有延迟或者是网络错误的情况。对一致性来说,它一定要等待这个延时,还有这个错误恢复(根本上还是延迟)。在等待的这段时间里,数据肯定是不一致的。此时对这些数据的访问就应该不可用,如果是可用的,那就会读到比较老的数据。这就是CAP理论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值