什么是CAP定理?

CAP是什么?,分为以下三部分

1.一致性(Consistency)数据一致性

2. 可用性(Availability)系统能提供服务就好,数据不一定一致

3.分区容错性(Partition tolerance)网络节点之间无法通信的情况下, 节点被隔离,产生了网络分区, 整个系统仍然是可以工作的,这就是分区容错性

简单的解释一下:

首先画个简单的分布式图

 简单来说,以上的分布式系统,将数据做冗余,中间有数据的备份,复制,保证了数据的同步,这个就是数据的一致性。但是这个有那么一个问题,如果有一天,机器A的网络突然断开了,导致以下两个问题

1.负载均衡找不到A机器,把用户的访问转向了B机器。

2.数据复制也找不到A机器,用户刚写的的数据没办法复制到B机器上,B机器还是老的数据。

但是这个不影响功能的提供,就是少看了几条数据,无伤大雅,网络通了数据复制就会开始工作,一切就会恢复,这个就是系统的可用性。

所以问题就很明显了, 在网络节点之间无法通信的情况下, 和数据复制相关的功能, 要么选择可用性(A) , 要么选择一致性(C), 不能同时选择两者。

这里就衍生了另外一个概念

那就是网络节点之间无法通信的情况下, 节点被隔离,产生了网络分区, 整个系统仍然是可以工作的,这个就是分区容错性(Partition tolerance, 简称P)。

如果选择了可用性(A) + 分区容错性(P) , 就要放弃一致性(C)。

如果选在一致性(C) + 分区容错性(P) , 就得放弃可用性(A) , 对了, 这种情况下,虽然系统的有些功能是不能使用的, 因为需要等待数据的同步, 但是那些和数据同步无关的功能还是可以访问的 , 相当于系统做了功能的降级。

既然有AP和CP, 会不会出现仅仅是CA(一致性+可用性)这种组合呢? 就是没有分区容错性, 只保留可用性和一致性? 仔细想想, 这种情况其实就退化成了单机应用, 没有意义了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值