CAP 含义应用
三个指标
- Consistency
- Availability
- Partition tolerance
Partition tolerance(分区容错性)
大多数分布式系统分布在多个子网络,每个子网络叫做一个区。分区容错性代表区间通信可能失败。
分区容错性无法避免,需要在C和A之间进行选择
Consistency
不能分区需要保持数据一致性
Availability
用户发起请求需要得到回应
Consistency 和Availability矛盾
- 不可能同时成立,因为可能存在通信失败
- 如果要保证分区一致性,必须在某个分区修改是,锁定其他分区,导致某分区不可读,即不可用,若要保证可用性,势必不能锁定G2
可用性高于一致性
- 需要高可用,比如服务器等。
案例
zookeeper 保证AP
- 不能保证每次请求服务的可用性
1.1 任何时刻对ZooKeeper的访问请求都能得到一致性的结果,同时对网络分割具备容错性;
但是它不能保证每次服务对可用性,Zookeeper会在极端的网络环境下丢弃某些包。
1.2 进行leader选举对时候集群是不可用的。在使用Zookeeper获取服务列表时,master节点丢失,
会进行重新选举,时间在30-120s,在此期间服务不可用 - Eureka保证AP
2.1 每个节点都是平等,挂掉几个节点其他节点依然可以提供服务
2.2 某个节点挂掉,会导到其他节点
2.3 在15分钟之内,超过85%的节点都没有正常心跳,则出现网络故障,应对措施如下:
不再从注册列表中一处因为长时间没收到心跳而应该过期的服务
仍然接受新的请求,但是不会同步到其他节点
当网络稳定是,当前实例新的注册信息会被同步到其他节点