目录
CAP
玩过分布式的小伙伴应该经常听到这个理论
含义
一致性(Consistency) :不同节点访问的数据是一致的(且最新)。
可用性(Availability):请求节点返回合理的响应。
分区容错性(Partition tolerance):分布式出现网络分区时,仍能对外提供服务。
什么是网络分区
网络分区就是在服务远程调用时出现故障,节点连接不通,就形成了网络分区
注意
我们经常说的满足两个条件是在出现网络分区的情况下,即满足CP、AP。
为什么不能同时满足CAP?如果出现网络分区,一个节点在进行读写操作。那么为了保障一致性,得禁用掉其他节点的相同操作的写入,就不能保障可用性。
如果不出现网络分区情况,我们就要同时保障CA
了解
常用的注册中心Eureka是属于AP、ZooKeeper 是CP、Nacos属于可选择AP或者CP
BASE
Basically Available:基本可用,允许损失部分可用性。
Soft-state:软状态,允许数据副本之间同步过程有延时。
Eventually Consistent:最终一致,最终数据达到一致性。
BASE是对CAP中AP的一个延申。就算无法做到强一致性,也要做到最终一致性。
最终一致性实现方案
读时修复:读时检测到节点间副本数据不一致,则修复
写时修复:写入失败时,将写入的数据放入缓存。设置定时上传
异步修复:定时检测数据是否一致