概述
我这次理解的CAP,都是基于数据的基础上,如有错误,请大家指出。
C:一致性,分布式系统中,对一个节点的数据写入,在其他节点上读取到的必须是最新的。
A:可用性,某些节点出现故障或者性能不佳导致请求失效,其他节点依旧可以提供服务。
P:分区容忍性,简单的说,就是分布式系统中,节点间的通讯必然会出现通讯失败的情况,我们得允许,也不得不允许这个情况的出现,就是说我们得容忍节点间的通讯失败的情况。
如上图,红色竖线,我们表示由于网络分区,把整个DB网络分割成三个子网络,子网络之间无法通信。其中db1,2,3是一个数据库集群,接下来我们再说说基于上图的AP跟CP。
AP:选择可用性跟分区容忍性,弱化一致性,注意这里是弱化,而不是摈弃,因为当分区之间可以通信时,数据可以最终一致。假如,数据操作请求打到server1,此时数据保存到db1,但是由于网络分区,数据无法同步更新到db2,db3,如果有别的数据请求打到db2,就会出现数据不一致,但是整个系统还是可以正常响应,这就保证了可用性,弱化一致性。
常见的是redis的主从模式,当主节点宕机,从节点可以变成主节点,继续提供服务,等到之前的主节点恢复之后,数据进行同步,保证最终一致。
CP:选择一致性跟分区容忍性,同样是弱化可用性,并非一定是整个系统无法提供服务。比如,数据操作请求打到db1,某个时间点由于网络分区,数据无法同步到db2,db3,那么这次请求就会失败,无法正常响应结果,数据不会发生改变,但是下次,或者下下次请求可能网络恢复了,请求成功,正常响应。这就是可用性降低了,但是保证了数据的一致性。
常见的是zookeeper的集群模式,当master节点宕机之后,所有的节点要重新选举一个master出来,期间zookeeper无法提供服务。
最后
以上就是悲凉小蝴蝶为你收集整理的谈谈自己关于CAP理论的理解的全部内容,希望文章能够帮你解决谈谈自己关于CAP理论的理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复