【闲聊杂谈】Redis中的CAP理论

导读:本篇文章讲解 【闲聊杂谈】Redis中的CAP理论,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

我们先来区分一下“主备”和“主从”的分别:

主备:客户端只能访问主机,不会访问备机,备机存在的意义就是等主机挂掉以后接替主机;

主从:客户端既可以访问主机,也可以访问从机。

其实在Redis中,既可以使用主备模式,也可以使用主从模式,一般企业中使用主从的比较多。

无论是主备还是主从,一般主机都是包含全量的增删改查, 那么这个主自己又是一个单点,所以一般都会对主做HA,也就是高可用。 

再强调一遍,高可用不是为了让主机不出现问题,而是当主机出现问题的时候,集群中会有另外一个去替换主,对外来就好像主是永远不出问题一样。那么这个过程其实可以让人工手动去切换,将备机切换成主机。但人工是这个世界上最不靠谱的,所以需要使用一些程序来解决这个自动的故障转移。

但是这个程序自己本身也会存在单点故障的问题,所以这个监控的程序也应该是个一变多的集群,假设现在有3个监控去监控一个Redis主机的时候,每个监控给出自己的判断,就会产生一个很经典的网络分区问题,也就是我们经常说的脑裂。A监控说挂了,B监控说没挂,那到底是挂了还是没挂?

所以,必然不能以每一台的结果作为判定标准,但也不能以所有监控的结果作为判定,因为统计所有的那么必然就是强一致性,强一致性会破坏可用性,只要有一个连接有问题,就会导致整个监控的结果不可用。所以需要设定一个数,到底判定几台的结果比较合理?假设一共有n台监控:

n % 2 == 0 ? n /2 +1 : (n + 1) / 2(一般在企业中将n取奇数台)

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。而由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111953.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!