我是靠谱客的博主 悲凉小蝴蝶,最近开发中收集的这篇文章主要介绍谈谈自己关于CAP理论的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我这次理解的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理论的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部