CAP定理

概念

在分布式系统中最多具有 数据一致性(Consistence) 可用性(Availability) 网络分区容错(Partition tolerance)中的两个

网络分区容错

分布式节点之间的网络延迟 或者通信故障不影响分布式系统的服务运行 这一点是必须的

一致性

系统中的各个节点 所存储的信息是完全同步的

举例1:`zookeeper`各个节点的信息是完全同步的
举例2:`mysql`主从复制设置全同步 主库写入需要等待多个从库`全部`写入成功之后才会返回成功 否则写入失败

可用性

客户端每次访问总能返回需要的数据即使数据不是最新的 在springcloud中服务发现尤为重要
在网络分区节点通信有延迟的情况下 在主节点不需要等待从节点完全写入成功 允许短暂的时间内数据是不一致的但是最终的数据是保持一致的

举例1:mysql主从同步 主节点设置不需等待从节点同步成功 只要主节点写入成功立即返回不等待从库 ,读写分离的情况下是无法立即从 从库中查询出来的 ,
如果有重复插入校验就只能从主库查询,减少了sql等待时间,mysql可以设置半同步 等待多个节点中的一个写入成功后即返回成功
举例2;Eureka服务相互注册没有主从 因为网络延迟导致各个节点的数据在写入瞬间不一致,这对客户端访问请求没有影响 因为服务都是可用的

因为P的存在 导致 CA只能二选一 即发生P故障 选择保证数据一致性 写入数据时 要么迅速失败

或者为了保证可用性要允许主从节点短暂时间内数据不一致

原文地址:https://www.cnblogs.com/cu-later/p/13831067.html