揭秘分布式CAP理论——为什么不能同时满足三个?

CAP理论定义

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

解析三原则

1、一致性原则(Consistency)
     “all nodes see the same data at the same time”,即在多节点情况下,各个节点的数据同时更新保持同步,这个就是分布式一致性。

2、可用性原则(Availability)
     “Reads and writes always succeed”,指的是所有的服务都可以在规定的时间内正常访问,而且是一直可用。这里可以参考euraka的失效剔除功能,保证了服务可用性。

3、分区容错性(Partition tolerance)
     分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。

上面可以理解为:

  1. 一致性:数据同步
  2. 可用性:服务保活
  3. 容错性:集群部署
为什么CAP原则?

解析:

  1. 如果CA满足看P是否能满足?
  2. 如果AP满足看C是否能满足?
  3. 如果CP满足看A是否能满足?

1、如果CA满足看P是否能满足?
我们来分析:当C(Consistency)一致性A(Availability)可用性都满足时会发生什么?为了保持数据的一致性,数据在各个节点间同步需要花费时间,同时保证服务可用意味着服务器的数量不能过多,因为过多就会导致数据同步时间过长,而导致超时触发熔断降级机制,这与可用性相悖。但是如果要满足容错的话就必须是多节点,而多节点意味着同步数据同步时间必定过长,这两无法做到同时满足所以就导致了情况1是无法满足。

2、如果AP满足看C能否满足?
我们来分析:当A(Availability)可用性和P(Partition tolerance)分区容错性都满足的情况下会发生什么?服务器多节点部署,导致服务器数量剧增,同时需要保证服务节点可用,这就说明服务节点与节点之间的调用时间无法过长,否则就会导致服务节点不可用。如果在这种情况下,满足C(Consistency)一致性,就会出现服务器因同步数据而导致浪费大量的时间,导致服务器不可用(超过了规定时间范围),所以当AP满足时是无法同时满足C的。

3、如果CP满足看A是否能满足?
我们来分析:当C(Consistency)一致性和P(Partition tolerance)分区容错性都满足时,这个时候的服务器情况是怎么样的?必定是数量多并且为了保证数据同步大量的服务器节点会进入“超长待机”状态,此时如果再让服务满足A(可用性)的话,就会出现大部分的服务节点不可用,线程池被挤爆,然后整个项目宕机。所以情况3是无法满足的。

如何抉择/取舍?

一般来讲P(容错性)是一定要满足的,其他可以根据项目需求选择A或者C。
就目前市场来说,CP更加符合金融类项目,AP更加适合商城类项目。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值